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.

Приятных танцев!