当前位置:新闻中心行业动态 → 正文

Giraffe:在Web开发中使用F#和ASP.NET Core

责任编辑:editor005 作者:Pierre-Luc Maheu |来源:企业网D1Net  2017-10-31 11:28:55 本文摘自:INFOQ

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

关键字:ASPCore开发人员

本文摘自:INFOQ

x Giraffe:在Web开发中使用F#和ASP.NET Core 扫一扫
分享本文到朋友圈
当前位置:新闻中心行业动态 → 正文

Giraffe:在Web开发中使用F#和ASP.NET Core

责任编辑:editor005 作者:Pierre-Luc Maheu |来源:企业网D1Net  2017-10-31 11:28:55 本文摘自:INFOQ

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

关键字:ASPCore开发人员

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^