精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Giraffe:在Web開發中使用F#和ASP.NET Core

責任編輯:editor005

作者:Pierre-Luc Maheu

2017-10-31 11:28:55

摘自:INFOQ

Giraffe是一種用于構建Web應用的微型F Web框架。Giraffe支持開發人員在使用F 構建Web應用的同時,還可以訪問ASP NET Core及其生態系統所提供的特性。

Giraffe是一種用于構建Web應用的微型F# Web框架。它基于ASP.NET Core,為Web框架提供了F# API。Giraffe支持開發人員在使用F#構建Web應用的同時,還可以訪問ASP.NET Core及其生態系統所提供的特性。

Giraffe的語法類似于另一種廣為使用的Web框架Suave。兩者間相似性為我們提出了一個問題:兩種框架是否應該合二為一,或是應該遵循同一套API。Giraffe的創立者闡述了他認為合并不能產生增值的理由:

正如人們經常提及的,Giraffe的根本出發點在于提供與ASP.NET Core的緊密集成,這是Giraffw和Suave間的一個主要差異所在。我們注意到,在使用功能性.NET開發構建功能性ASP.NET Core Web應用上存在著利基空間。Giraffe的推出正是力圖填補這一空缺。它在ASP.NET Core之上構建了一個輕量級功能層,同時依然保持DI、HttpRequest、HttpResponse、Config等ASP.NET Core構建塊可用。這使得F#開發人員可以使用已有的(或是即將推出的)許多ASP.NET Core生態系統。

Giraffe的主要構件是HttpHandler。HttpHandler提供了一種函數流水線,它類似于通過IApplicationBuilder組合使用ASP.NET Core。一個Handler可以通過調用隨后的Handler,繼續流水線的處理。例如:

type HttpHandler = HttpFunc -> HttpContext -> HttpFuncResult

Giraffe使用了組合(Combinator)方法。開發人員可以通過將HttpHandlers組合在一起創建更高層級的抽象,最終創建一個應用。例如:

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中使用的是.NET的Task對象,而非異步(async)工作流。這兩種實現是不同的,需要做相互轉化。Giraffe通過最小化這種轉化,降低了開銷。

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

例子應用提供在GitHub上。

查看英文原文: ASP.NET Core and F# with Giraffe

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 永修县| 元氏县| 凤台县| 梁河县| 湘阴县| 呈贡县| 喀喇| 印江| 沾益县| 依兰县| 古蔺县| 滦南县| 临清市| 上饶县| 宣恩县| 洪雅县| 长顺县| 柳江县| 石城县| 浦东新区| 上虞市| 马公市| 遵义市| 垫江县| 博爱县| 微博| 平原县| 闵行区| 金沙县| 汉中市| 开原市| 南昌市| 天柱县| 湖南省| 永兴县| 龙海市| 香港 | 准格尔旗| 互助| 开江县| 奉贤区|