写点什么

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

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

关注

评论

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

一文详解常见医学自然语言理解任务和算法

阿里云天池

阿里云

AI时代来临我们要如何面对?

小齐写代码

鸿蒙实训营火爆北京,政企民生、金融、出行等领域的百余家企业积极参与!

最新动态

如何用Flask中的Blueprints构建大型Web应用

华为云开发者联盟

Python 开发 华为云 Web应用 华为云开发者联盟

案例研究:如何通过淘宝天猫商品销量数据分析竞争对手

tbapi

淘宝API接口 淘宝商品销量数据接口

ARM版Win10系统下载-Windows系统下载

Rose

win10 Windows系统 win 10镜像

Macs Fan Control Pro 如何控制风扇速度?Macs Fan Control Pro使用教程及安装包分享

Rose

Macs Fan Control Pro下载 Macs Fan Control Pro破解 Mac 电脑风扇速度 Macs Fan Control 教程

2022全球AI生物智药大赛赛道二参赛攻略@paipai

阿里云天池

阿里云

EndNote 21(文献管理软件)适合那些行业使用 有什么功能

Rose

文献管理 EndNote 21下载 EndNote 21破解版

淘宝商品评论API:连接消费者与商家的桥梁

tbapi

淘宝API接口 淘宝商品评论API接口 淘宝商品评价接口

实战篇-Docker 安装ELK(单节点)

派大星

运维监控 ELK Stack

网络延迟对事务的影响

GreatSQL

延迟 网络 事务 greatsql

哪里有Mac SVN管理工具 cornerstone 4破解版?

Rose

SVN管理工具 cornerstone 4 破解版 cornerstone 4许可

Acrobat Pro DC 2023中文直装版 PDF编辑软件

Rose

Acrobat Pro DC 2023下载 PDF编辑和管理

Autodesk AutoCAD 2022中文版安装破解教程 含cad2022序列号密钥

Rose

CAD绘图 AutoCAD2022序列号 autocad2022秘钥 autocad2022破解版 AutoCAD安装教程

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

阿里云天池

阿里云

【直播】开发者手机切换4.1总结

Laval小助手

VMware Fusion Pro 13许可证密钥 VM虚拟机如何使用?

Rose

VM虚拟机密钥 VMware Fusion Pro 13密钥 mac虚拟机软件

jprofiler安装使用教程 附jprofiler永久激活码 Mac/win

Rose

Java性能 JProfiler激活码 JProfiler 14下载

零基础入门数据挖掘系列之「特征工程」

阿里云天池

阿里云

国内如何用gpt4?如何升级chatgpt4.0保姆级教程

蓉蓉

openai ChatGPT GPT-4

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