QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2017-10-30
  • 本文字数:931 字

    阅读完需:约 3 分钟

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 -> HttpFuncResultGiraffe 使用了组合(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<Person>()
return! json person next ctx
}

例子应用提供在GitHub 上。

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

2017-10-30 18:411684
用户头像

发布了 391 篇内容, 共 142.1 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

im即时通讯-WorkPlus私有化部署的局域网即时通讯工具

BeeWorks

鸿蒙开发案例:通过三杯猜球学习显示动画

zhongcx

设计解析Excel文件

麦兜

鸿蒙开发案例:记忆翻牌

zhongcx

im即时通讯系统,WorkPlus为企业智能化管理而生

BeeWorks

构建一体化解决方案:天谋科技与美林数据完成兼容性互认证

Apache IoTDB

《使用Gin框架构建分布式应用》阅读笔记:p1-p19

codists

gin

Java实现加入购物车怎么做数据定位?

威哥爱编程

Java JavaEE 购物车项目

1688电商新纪元:商品详情API引领行业发展新动力

代码忍者

天翼云完成首个国产化万卡训练,MFU达到国内领先水平!

天翼云开发者社区

云计算 云服务 云平台 天翼云

JavaScript 异步编程入门

FunTester

OKR实践之——重要紧急矩阵

Bruce Talk

OKR 敏捷开发

大数据之数据治理体系全面指南

五分钟学大数据

大数据 数据治理

企业级即时通讯平台推荐:为何选择WorkPlus保障您的沟通安全

BeeWorks

生化危机8:村庄 RESIDENT EVIL VILLAGE (Win&Mac)下载

你的猪会飞吗

生化危机 生化危机破解版 单机游戏下载

安全、专属且高效:WorkPlus即时通讯平台引领高效协作新纪元

BeeWorks

低代码开发平台开启智能制造新工具时代

不在线第一只蜗牛

低代码 制造业

公司党委书记、董事长、总经理胡志强出席“国企改革大家谈”分享天翼云改革经验

天翼云开发者社区

云计算 天翼云

引领科技未来,助力产业发展——成都远川科技有限公司

极客天地

天猫商品描述API:商品参数对比与竞品分析实战

代码忍者

Giraffe:在Web开发中使用F#和ASP.NET Core_.NET_Pierre-Luc Maheu_InfoQ精选文章