プログラミング
Cro – Rakuにおけるエレガントなリアクティブサービス
Cro – elegant reactive services in Raku (cro.raku.org)
要約
Croは、Raku言語の機能を最大限に活用して構築された、リアクティブ分散システム開発のためのライブラリセットです。高レベルAPIにより簡単なタスクは容易になり、中心的な非同期パイプラインコンセプトにより複雑なタスクも可能になります。HTTPサーバー、Webソケット、ツールキットなどが含まれており、開発を迅速に進めるためのコマンドラインツールも提供されています。
全文翻訳
Croへようこそ
Croは、Rakuが提供するすべての機能を活用するために愛情を込めて作られた、リアクティブ分散システムを構築するためのライブラリセットです。高レベルAPIにより簡単なタスクは容易になり、Croの中心にある非同期パイプラインコンセプトにより複雑なタスクも可能になります。
始める準備はできましたか?
zef install --/test cro を実行して、ドキュメントを確認してください。
HTTP
Web Sockets
Tooling
ルートを設定し、それらをサーブします
use Cro::HTTP::Router;
use Cro::HTTP::Server;
my $application = route {
get -> 'greet', $name {
content 'text/plain', "Hello, $name!";
}
}
my Cro::Service $hello = Cro::HTTP::Server.new:
:host<localhost>,
:port<10000>,
:$application;
$hello.start;
react whenever signal(SIGINT) {
$hello.stop;
exit;
}
組み込みHTTPサーバー
HTTP/1.1永続接続
HTTP/2.0(ALPNでネゴシエート済み)
HTTPSサポート
サーバーレベルでのミドルウェアの追加
ボディパーサーとシリアライザーの設定
マルチコアCPUを活用するための、スレッドプールへのリクエストディスパッチ
柔軟なリクエストルーター
# シグネチャでルートセグメントをキャプチャ/制約する。
get -> 'product', UUIDv4 $id {
content 'application/json', get-product($id);
}
# ルートセグメントをスラップし、静的コンテンツをサーブする
get -> 'css', *@path {
static 'assets/css', @path;
}
# クエリ文字列から値を取得する
get -> 'search', :$term! {
content 'application/json', do-search($term);
}
プラグ可能なボディ解析とシリアライゼーション
www-form-urlencoded、multi-part、JSONボディの組み込みサポートをお楽しみください。または、独自のボディパーサーとシリアライザーをプラグインしてください。
put -> 'order', UUIDv4 $id {
request-body -> %json-object {
# 保存してから...
content 'application/json', %json-object;
}
}
HTTPクライアントが含まれています
レスポンスとボディを取得するための非同期API(ボディは一度に配信されるか、ストリーミング配信)
HTTP/1.1永続接続のサポート
HTTPS、オプションのカスタム証明書局(CA)付き
HTTP/2.0サポート、リクエスト多重化付き
プラグ可能なボディパーサー/シリアライザー(サーバーで使用されているものと同じ)とミドルウェアサポート
前へ 次へ
HTTPルーターとネストされています
my $chat = Supplier.new;
get -> 'chat' {
web-socket -> $incoming {
supply {
whenever $incoming -> $message {
$chat.emit(await $message.body-text);
}
whenever $chat -> $text {
emit $text;
}
}
}
}
Webソケットクライアント
Croには、SupplyベースのWebサービスクライアントが含まれています。これは、サービス間のWebソケットの使用、Webソケットクライアントの作成、またはWebソケットによって公開されるサービスの統合テストの作成に最適です。
前へ 次へ
良いデフォルト値で始めましょう
cro stub ... コマンドは、新しいHTTPおよびZeroMQサービスをスタブ化します。これにより、より早く開始できるだけでなく、良い方向に向かうことができます。例えば、環境変数からホストとポートを受け入れ(コンテナデプロイメントに最適)、サービスの依存関係を宣言するためのMETA6.jsonを生成します。
cro run
軽量な開発サービスランナー。
サービスを開始し、空きポートを自動的に割り当てます。
コードが変更されるとサービスを自動的に再起動します。
サービス出力を収集して表示します。どの出力がどのサービスから来たかを示します。
cro trace
トレーシングを有効にして、1つ以上のサービスを実行します。トレーシングにより、リクエストが非同期パイプラインをどのように進むかを確認でき、問題が発生した場所をより迅速に理解するのに役立ちます。
前へ 次へ
ご承知おきください:Croは現在ベータ版です。APIのほとんどには全体的に満足しており、この点での大幅な変更は予定していません。道のりにはいくつかの困難が予想されます。もしそれらに遭遇した場合は、バグレポートを提出して、より良くできるようにご協力ください。