写点什么

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:411929
用户头像

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

关注

评论

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

柔性LED屏:沉浸式品牌体验的8个好处

Dylan

数字化 品牌 LED display LED显示屏 沉浸式

梯度下降,原来如此?

蛋先生DX

神经网络 机器学习 深度学习 梯度下降

2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,要对每个 wordsQuery[i] 找到一个与其有最长公共后缀的字符串

福大大架构师每日一题

福大大架构师每日一题

最佳实践:通义灵码生成单元测试,让单测更简单

阿里云云效

阿里云 云原生 通义灵码

通义灵码上线一周年:超 600 万下载量,国内用户规模第一,新功能有奖测评

阿里云云效

阿里云 云原生 通义灵码

合合信息智能文档处理百宝箱:强力驱动,加速文档类应用研发进程

追风少年

深度学习 文档图像智能处理 文档解析

如何将公众号文章导出 Word

Ceelog

微信公众号

华为视频鸿蒙原生版三大体验全面升级,重新定义影院级体验

最新动态

最佳实践:通义灵码生成单元测试,让单测更简单

阿里巴巴云原生

阿里云 云原生 通义灵码

通义灵码上线一周年:超 600 万下载量,国内用户规模第一,新功能有奖测评

阿里巴巴云原生

阿里云 云原生 通义灵码

阿里云开源 AI 应用开发框架:Spring AI Alibaba

阿里巴巴云原生

阿里云 云原生

项目管理系统(源码+文档+部署+讲解)

深圳亥时科技

DApp开发中的NFT质押模式:创新与应用

区块链软件开发推广运营

dapp开发 链游开发 NFT开发 公链开发 钱包开发

宁德时代发布骁遥超级增混电池,“假增混”淘汰倒计时

科技大数据

精准卡位增混市场大电量需求 宁德时代以骁遥电池破解行业发展痛点

科技大数据

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

codists

Go golang gin 编程人 codists

i9K进化U9K,285k(ing) 新君下洞庭

E科讯

2025北京软件产品博览会·世亚软博会

AIOTE智博会

软件展会 软件展 软博会 世亚软博会 北京软博会

1.8K Star,简洁易用 Web 端创意画板

GitHub指北

仓储管理系统(源码+文档+部署+讲解)

深圳亥时科技

TON链代币发行游戏开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 公链开发 钱包开发

走出软件作坊,数睿数据打造智能软件工厂,提高软件生产力

财见

IBM最新调研:主机如何成为企业级AI的"最佳搭档"?

财见

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