写点什么

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

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

关注

评论

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

线上机器CPU占用高分析实践

京东科技开发者

DDoS攻击是无解的吗

易成研发中心

DDoS

产品更新 | 数据集成ETLCloud V3.9 社区版发布,新增及优化组件近20项

谷云科技RestCloud

ETL 数据集成平台 集成工具

搜推电商大模型及应用实践-下篇

京东科技开发者

告别服务器繁忙,满血接入 DeepSeek 的代码助手来了!

CodeBuddy

AI DeepSeek

什么是域名泛解析?怎么做域名泛解析?

防火墙后吃泡面

YashanDB应用程序与网络体系

YashanDB

数据库 yashandb

YashanDB模式

YashanDB

数据库 yashandb

DolphinScheduler环境搭建、服务启动等常见问题及解决方案

白鲸开源

开源 大数据任务调度 Apache DolphinScheduler FAQ

2025年,怎么靠技术传播自我“破圈”?

白鲸开源

技术传播

碳实践|探索屋顶太阳能光伏系统减排潜力

AMT企源

碳管理 光伏企业 节能减排

人工智能丨使用实例:DeepSeek 在工作中的惊艳表现

测试人

人工智能

《Operating System Concepts》阅读笔记:p34-p40

codists

操作系统

YashanDB进程线程体系

YashanDB

数据库 yashandb

【黄金圆环】在研发领域的实践分享

京东科技开发者

全网首发 | PAI Model Gallery一键部署阶跃星辰Step-Video-T2V、Step-Audio-Chat模型

阿里云大数据AI技术

人工智能 模型部署 LLM PAI 阶跃星辰

算法工程师的核心竞争力是什么

易成研发中心

从大模型性能优化到DeepSeek部署|得物技术

得物技术

人工智能 前端

【保姆级教程】DeepSeek R1+RAG,基于开源三件套10分钟构建本地AI知识库

不在线第一只蜗牛

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