写点什么

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

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

关注

评论

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

春晚回应吉祥物“龙辰辰”被质疑 AI 合成;周星驰 Web3 团队下月上线独立 App 丨 RTE 开发者日报 Vol.102

声网

从内容生产到企业经营,大模型将如何改变数字营销?

中关村科金

大数据 大模型 智能营销

国内外免费的SCADA软件工具有哪些?

2D3D前端可视化开发

物联网 组态软件 SCADA软件 组态工具 HMI系统

我还是无法忘记那个午夜,当oncall的告警响起

Java 工程师蔡姬

#on-call 21 天技术人写作行动营 #线上问题 #性能问题

每日一题:LeetCode-151. 反转字符串中的单词

Geek_4z9ami

Go 面试 算法 LeetCode 字符串

从概念到实践,带你掌握层次递归查询

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

新一代私有云部署四大优势和案例解读

青椒云云电脑

云电脑平台

智能双录解决方案助力保险代销机构探索市场新机遇

中关村科金

保险 智能双录

大模型训练中CPU高负载与GPU低使用率的优化策略

百度开发者中心

gpu 大模型

软件测试/人工智能|一文告诉你Python集合相关知识

霍格沃兹测试开发学社

当创建statefulset资源后,k8s组件如何协作

华为云开发者联盟

云原生 k8s 华为云 华为云开发者联盟

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

3DCAT实时渲染

实时云渲染 实时渲染云 汽车虚拟仿真 汽车3D可视化

当前最高4+级!大模型能力获信通院标准符合性验证

中关村科金

大模型 大模型评估

如何给网页和代码做HTML加密?

软件测试/人工智能|使用 Pip 管理 Python 包

霍格沃兹测试开发学社

王炸升级!PartyRock 10分钟构建 AI 应用

伤感汤姆布利柏

人工智能

教育行业为什么管理特权账号?

尚思卓越

运维 网络安全

学校建设云教室方案应该考虑哪些?

青椒云云电脑

云教室 云教室解决方案

大模型训练引领AI新时代

百度开发者中心

人工智能 大模型 LLM

云电脑和一体机有什么区别?

青椒云云电脑

云电脑 桌面云一体机 云桌面一体机

大模型训练中错误数据集的影响及应对策略

百度开发者中心

大模型 人工智能’

23年总结-对于开发者来说AI带来的影响和AI未来的趋势预测

肥晨

AI

如何构建适合工业设计企业的云端图形工作站?

青椒云云电脑

图形工作站

【写作训练营打卡|04】

如何教会小白使用淘宝API接口获取商品数据

Noah

软件测试/人工智能|一文告诉你Python字典知识

霍格沃兹测试开发学社

.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能

不在线第一只蜗牛

.net 分布式 爬虫

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