BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ウェブサーバ、ウェブ開発ライブラリのSuaveがリリース

ウェブサーバ、ウェブ開発ライブラリのSuaveがリリース

原文(投稿日:2016/01/27)へのリンク

.NET向けの新しいウェブ開発ライブラリであるSuave 1.0がリリースされた。Suaveは軽量で非同期のウェブサーバとHTTPを処理するパイプラインを記述するセマンティックなモデルを提供する。SuaveはWindows、OSX、Linux、.NET、Monoなど複数のOS、プラットフォームで動作する。どのような.NET言語からも使えるが、Suaveのコンビネータと型はF#から使われるように設計されている。

Suaveのプログラミングモデルではコンビネータを使い、大きめのファンクションを作成する。SuaveのメンテであるHenrik Feldt氏は、次のように説明する。

コンビネータは高階関数であり、異なる方法で構成され、異なる効果を産み、HTTPレスポンスを生成します。

SuaveはOK "Hello"のようなコンビネータやnotFoundのようなコンビネータを持ち、また、低いレベルのHTTPの構成物も提供し、どんな種類のウェブサービスでもプログラミングできます。Suaveでは、関数をWebPart型を経由して操作します。type WebPart = HttpContext -async<HttpContext option>で取得できます。

option型を使うことで、success/failセマンティクスを使えます。また、異なるルートをエンコードすることもできます。

We use a function called chooseという関数は、WebPartsのリストを受け取り、いずれかのWebPartsがSome httpContextを返すまで、それぞれにHttpContextを与えます。httpContextの内部はサーバがクライアントに返す、エンコードされたレスポンスです。

>=>演算子を使ってWebPartsを構成し、ルーティングをエンコードできます。

下のコードはSuaveを使った"Hello World!"だ。このウェブアプリケーションではすべてのリクエストに対して"Hello World!"を返す。

open Suave
startWebServer defaultConfig (Successful.OK "Hello World!")

次の例では、ルートにマッチしなかった場合、404を返している。

let app : WebApp =
   choose[
     path "/foo" >=> OK "foo"
     path "/bar" >=> OK "bar"
     notFound "no handlers found."
   ]
startWebServer defaultConfig app

Suaveはオープンソース。GitHubにホストされている。ドキュメントやサンプルは公式サイトで確認できる。InfoQではHenrik Feldt氏にインタビューし、Suaveの詳細と使い方について話を聞いた。

この記事に星をつける

おすすめ度
スタイル

BT