HN 日本語サマリー

← 一覧へ戻る
プログラミング

Cro – Rakuにおけるエレガントなリアクティブサービス

Cro – elegant reactive services in Raku (cro.raku.org)

17 pointsby giancarlostoro1 コメント

要約

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のほとんどには全体的に満足しており、この点での大幅な変更は予定していません。道のりにはいくつかの困難が予想されます。もしそれらに遭遇した場合は、バグレポートを提出して、より良くできるようにご協力ください。