Ballerina, как мы уже говорили в предыдущих статьях, была разработана специально для определенных вещей, например для написания сетевых сервисов и функций. в течение 10 минут обучения.
Перво-наперво, зайдите на сайт B Allerinalang и загрузите последнюю версию Ballerina T ools. Здесь есть среда выполнения и все инструменты, необходимые для написания программ Ballerina.
После загрузки вы можете распаковать архив в каталог (скажем, BALLERINA_HOME) и установить переменную среды PATH
в каталог bin для BALLERINA_HOME
, в который вы распаковали загруженный дистрибутив инструментов. В Linux этого можно добиться, как указано ниже.
export PATH = $PATH:/BALLAERINA_HOME/bin
например экспорт PATH = $ PATH: /Users/chanaka-mac/ballerinalang/Testing/ballerina-tools-0.8.3/bin
Теперь вы настроили Ballerina в своей системе. Теперь пора запустить первый из всех примеров, пример Hello World
. Балерина может быть использована для написания двух типов программ:
- Сетевые услуги
- Основные функции
Здесь сетевые службы - это длительные службы, которые продолжают работать после запуска - до тех пор, пока процесс не будет убит или остановлен внешней стороной. Основные функции - это программы, которые выполняют заданную задачу и выходят сами по себе.
Давайте запустим более знакомый пример основного стиля программы Hello World
. Запустите команду ballerina, указав на образец Hello World. Сначала вы меняете свой каталог на каталог образцов в дистрибутиве Ballerina Tools ($ BALLERINA_HOME / samples). Теперь запустите следующую команду со своего терминала.
$ ballerina run main helloWorld/helloWorld.bal Hello, World!
После того, как вы запустите указанную выше команду, вы увидите вывод «Hello, World!» и все готово (вуаля!).
Зайдем в файл и посмотрим, как выглядит программа Ballerina hello world.
import ballerina.lang.system; function main(string[] args) { system:println("Hello, World!"); }
Эта небольшая программа охватывает несколько ключевых концепций.
- Подпись основной функции аналогична другим языкам программирования, таким как C, Java.
- Вам необходимо импортировать собственные утилиты перед их использованием (без автоматического импорта)
- Как запустить программу с помощью команды Ballerina run
Теперь основы раскрыты. Переходим к следующему шагу. На котором запущена служба с надписью "Hello, World!" и продолжает бежать.
Все, что вам нужно сделать, это выполнить приведенную ниже команду в своем терминале.
$ ballerina run service helloWorldService/helloWorldService.bal ballerina: deploying service(s) in 'helloWorldService/helloWorldService.bal' ballerina: started server connector http-9090
Теперь все становится немного интереснее. Вы можете увидеть две строки, которые описывают, что произошло с указанной выше командой. Он развернул службу, которая была описана в упомянутом файле, и есть порт (9090), открытый для связи по протоколу http. Теперь эта служба запущена и прослушивает порт 9090. Нам нужно отправить запрос, чтобы получить ответ от этой службы. Если вы перейдете к README.txt в каталоге примеров HelloWorldService, вы можете найти команду curl ниже, которую можно использовать для вызова этой службы. Давайте запустим эту команду из другого командного окна.
$ curl -v http://localhost:9090/hello > GET /hello HTTP/1.1 > Host: localhost:9090 > User-Agent: curl/7.51.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: text/plain < Content-Length: 13 < * Curl_http_done: called premature == 0 * Connection #0 to host localhost left intact Hello, World!
Как видите, мы получили ответное сообщение от сервиса «Hello, World!». Давайте разберемся с программой, которая это делает. Перейдите к файлу Ballerina в helloWorldService / helloWorldService.bal.
import ballerina.lang.messages; @http:BasePath ("/hello") service helloWorld { @http:GET resource sayHello (message m) { message response = {}; messages:setStringPayload(response, "Hello, World!"); reply response; } }
Эта программа охватывает несколько важных аспектов программы балерины.
- аннотации используются для определения объектов, связанных с сервисом. В этом примере «/ hello» - это контекст службы, а «GET» - это HTTP-метод, принимаемый этой службой.
- message - это носитель данных, исходящий от клиента. Пользователи могут делать с сообщениями все, что захотят, могут создавать новые сообщения и многое другое.
- Оператор «ответ» используется для отправки ответа клиенту службы.
В приведенном выше примере мы создали новое сообщение под названием «response» и установили полезную нагрузку как «Hello, World!» а затем ответил клиенту. То, как вы выполнили эту услугу, было
curl -v http: // localhost: 9090 / привет
В приведенной выше команде мы указали порт (9090), на котором была запущена служба, и контекст (/ hello), который мы определили в коде.
У нас осталось несколько минут: давайте возьмем еще один образец, более сложный.
Выполните следующую команду в своем терминале.
ballerina run service passthroughService/passthroughService.bsz ballerina: deploying service(s) in 'passthroughService/passthroughService.bsz' ballerina: started server connector http-9090
Здесь мы запустили файл с другим расширением (bsz), но результат был аналогичен предыдущему разделу. Файл развернут, и порт открыт. Давайте быстро вызовем эту службу с помощью следующей команды, как указано в файле README.txt.
curl -v http://localhost:9090/passthrough > GET /passthrough HTTP/1.1 > Host: localhost:9090 > User-Agent: curl/7.51.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/json < Content-Length: 49 < * Curl_http_done: called premature == 0 * Connection #0 to host localhost left intact {"exchange":"nyse","name":"IBM","value":"127.50"}
Теперь у нас есть интересный ответ. Давайте войдем в исходный код и посмотрим, что мы только что выполнили.
Этот пример немного более сложен и охватывает несколько других важных функций, которые мы не упоминали в предыдущих разделах.
- Программы Ballerina можно запускать как самостоятельный архив. В этом примере мы запустили файл архива службы (.bsz), который содержит все артефакты, необходимые для запуска этой службы.
- Программы Ballerina могут иметь пакеты, и структура пакетов соответствует структуре каталогов. В этом примере у нас есть пакет под названием «passthroughservice.samples», а структура каталогов аналогична passthroughservice / samples.
Вот содержание этого образца.
passthroughService.bal
package passthroughservice.samples; import ballerina.net.http; @http:BasePath ("/passthrough") service passthrough { @http:GET resource passthrough (message m) { http:ClientConnector nyseEP = create http:ClientConnector("http://localhost:9090"); message response = http:ClientConnector.get(nyseEP, "/nyseStock", m); reply response; } }
nyseStockService.bal
package passthroughservice.samples; import ballerina.lang.messages; @http:BasePath ("/nyseStock") service nyseStockQuote { @http:GET resource stocks (message m) { json payload = `{"exchange":"nyse", "name":"IBM", "value":"127.50"}`; message response = {}; messages:setJsonPayload(response, payload); reply response; } }
В этом примере мы написали простую интеграцию путем подключения к другому сервису, который также написан на Ballerina и работает в той же среде выполнения. «PassthroughService.bal» содержит основную логику службы Ballerina, в которой,
- Создайте клиентский соединитель для серверной службы
- Отправить запрос GET по заданному пути с входящим сообщением
- Ответить на ответ серверной службы
В этом примере мы написали серверную службу также от Ballerina. В этом сервисе «nyseStockService.bal»,
- Создайте сообщение json с содержимым
- Установите это сообщение как полезную нагрузку нового сообщения
- Ответить клиенту (это passthroughService)
Это сделано! Теперь вы можете запустить оставшуюся часть примера или написать свои собственные программы с помощью Ballerina.
Приятных танцев!