BT

ASP.NET Core と F#で動作するGiraffe

| 作者: Pierre-Luc Maheu フォローする 4 人のフォロワー , 翻訳者 青木 淳夫 フォローする 0 人のフォロワー 投稿日 2017年11月17日. 推定読書時間: 3 分 |

原文(投稿日:2017/10/23)へのリンク

Giraffeは、F#でWebアプリケーションを構築できるマイクロフレームワークである。Webフレームワーク向けのF# APIを提供し、ASP.NET Core上で動作する。Giraffeは、F#でWebアプリケーションを構築したい開発者に対して、ASP.NET Coreとそのエコシステムを活かすことができる。

Giraffeの構文は、人気のあるF#WebフレームワークのSuaveと似ている。これらが似ていることにより、2つのフレームワークを統合するか、APIセットを共有してはどうかという提案も出された。Giraffeの開発者は、この統合があまり価値がないと思う理由を以下のように説明している。:

GiraffeとSuaveの主な違いのひとつは、Giraffeの基本的な方針がASP.NET Coreと密接に統合していることです。関数型言語を好む.NET開発者が、ASP.NET CoreのWebアプリケーションを関数型言語で構築したいというニッチを埋めるためにGiraffeは生まれました。Giraffeは、ASP.NET Core上に薄いレイヤーを提供し、ASP.NET Coreの主要なビルディングブロック(DI、HttpRequest、HttpResponse、Configなど)を保持することで、このニッチを埋めています。これにより、F#開発者は既に存在する(今後登場する)ASP.NET Coreエコシステムを多数使用することができます。

Giraffeの主要なビルディングブロックはHttpHandlerだ。HttpHandlerは、IApplicationBuilderを使用したASP.NET Coreと同様のパイプラインだ。ハンドラは、次のハンドラを呼び出してパイプライン処理を継続できる。

type HttpHandler = HttpFunc -> HttpContext -> HttpFuncResult

Giraffeは、HttpHandlerを統合して高いレベルで抽象化を行い、最終的にアプリケーションを作成するコンビネータ的なアプローチを行う。

let webApp =
choose [
route “/foo” >=> text “Foo”
route “/bar” >=> text “Bar”
]

type Startup() =
member __.Configure (app : IApplicationBuilder)
                    (env : IHostingEnvironment)
                    (loggerFactory : ILoggerFactory) =
    app.UseGiraffe webApp

GiraffeはF#の非同期ワークフローの代わりに.NET Task を使用する(この2つの実装が異なり相互変換する必要があるため)。 Giraffeは、オーバーヘッドを減らすよう変換を最小限に抑える。

let personHandler =
    fun (next : HttpFunc) (ctx : HttpContext) ->
        task {
            let! person = ctx.BindModel<Person>()
            return! json person next ctx
        }

サンプルアプリケーションがGitHubで利用できる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT