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

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>
      主站蜘蛛池模板: 平山县| 赤壁市| 汉中市| 施秉县| 河津市| 清丰县| 连江县| 邵武市| 浏阳市| 海伦市| 文化| 天峨县| 江西省| 抚顺市| 东兰县| 大田县| 台湾省| 吉安县| 百色市| 同心县| 辛集市| 诸暨市| 莒南县| 天门市| 铜梁县| 新宁县| 余庆县| 奉节县| 湖口县| 周宁县| 通州区| 元阳县| 淮阳县| 鸡泽县| 宁乡县| 灵武市| 泸水县| 曲周县| 承德县| 柏乡县| 宽甸|