写点什么

Suave 1.0 发布,一个面向 F#的 Web 服务器和开发库

  • 2016-01-29
  • 本文字数:818 字

    阅读完需:约 3 分钟

近日,Suave 1.0 发布,为.NET 开发带来了一个新的 Web 开发库。Suave 包含一个轻量级的、完全异步的 Web 服务器以及一个描述 HTTP 处理管道的语义模型。Suave 可以运行在多种平台和操作系统上,包括 Windows、OSX、Linux、.NET 和 Mono。虽然可以在任何.NET 语言中使用,但 Suave“连结符(combinators)”和类型是设计用于 F#的。

Suave 的编程模型是借助连结符使用较小的函数创建较大的函数。Suave 维护者 Henrik Feldt 是这样解释的:

连结符是高阶函数,可以用不同的方式组合,达到不同的效果,生成 HTTP 响应。

Suave 有像OK "Hello"notFound这样的连结符及其他许多底层 HTTP 结构,使开发人员可以编写任何种类的 Web 服务。在 Suave 中,我们使用类型WebPart操作函数域,其中type WebPart = HttpContext -async<HttpContext option>

类型option为我们使用 success/fail 语义及解析成不同的路由提供了可能。

我们使用一个名为choose的函数,它接受一个WebPart列表,并按顺序为每个WebPart提供一个HttpContext,直到其中一个WebPart返回Some HttpContextHttpContext中包含已经编码好的响应,服务器将发送给 HTTP 客户端。

我们还使用一个>=>操作符组合WebPart及解析路由。

下面是使用 Suave 实现经典的“Hello World!”示例。该应用程序会使用“Hello World!”响应它收到的所有请求。

复制代码
open Suave
startWebServer defaultConfig (Successful.OK "Hello World!")

下面的例子展示了如何匹配路由以及没有匹配的路由时返回 404 页面:

复制代码
let app : WebApp =
choose[
path "/foo" >=> OK "foo"
path "/bar" >=> OK "bar"
notFound "no handlers found."
]
startWebServer defaultConfig app

Suave 是一个开源项目,托管在 GitHub 上。 Suave 官方网站提供了文档和示例。此外, InfoQ 还对 Henrik Feldt 进行了更广泛的采访,他就 Suave 是什么以及如何使用讲述了更多的细节。

查看英文原文: Release 1.0 of Suave, a Web Server and Development Library for F#

2016-01-29 18:002013
用户头像

发布了 1008 篇内容, 共 443.9 次阅读, 收获喜欢 346 次。

关注

评论

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

具身智能助力医疗普惠,智源清华联合研发全自主颈动脉超声机器人登刊 Nature Communications

智源研究院

转型技术Leader不能错过的几点建议

丛风

Leader

Go语言是不是当今最好的语言

丛风

Go

你到底是不是个高级程序员

丛风

从一个例子引发的模型设计的思考

丛风

模型设计

矩阵起源助力金盘科技开启智能新征程,CEO王龙出席武汉AI Factory大会

MatrixOrigin

智能制造 AI智能应用 转型升级

白血病细胞检测系统(YOLOv8+PyQt5)源码分享

申公豹

人工智能

【开发者体验活动】OpenTiny NEXT 前端智能化解决方案应用实践,快来体验吧~

OpenTiny社区

开源 AI 前端 OpenTiny

MCP vs. Agent:定义 | 区别 | 主流Agent智能体工具盘点

职场工具箱

人工智能 AI 在线白板 agent MCP

编程神作《人月神话》

丛风

工业数字化 信息化经验总结(8)

万里无云万里天

数字化转型 信息化 工业 工厂运维

倒计时3天| 9月12日矩阵起源产品发布会重磅演讲嘉宾抢先看!

MatrixOrigin

数据库 AI 发布会 GenAI

用 PJMan 模板导入,3 分钟搞定专业甘特图,项目规划效率翻倍

Tecjt_锦图科技

AI 到底能不能替代人类编程

丛风

编程

关于敏捷开发的干货

丛风

敏捷开发

您的数据,正在“喂饱”还是“饿死”你的大模型?

MatrixOrigin

AI 数据 大模型

政府与军事网络安全的Bash内核级脚本编程实战

qife122

Bash脚本 蓝队防御

BOE(京东方)“照亮成长路”公益项目走进富平县 科技赋能教育树立可持续发展新标杆

爱极客侠

基于YOLOv8的打架斗殴暴力行为智能识别项目源码(目标检测)

申公豹

人工智能

YashanDB与主流开发框架的集成方法介绍

数据库砖家

深度解析京东图片搜索API:从图像识别到商品匹配的算法实践

tbapi

京东图片搜索接口 京东拍立淘API 京东图片搜索API 京东图片API

怎么选适合企业的RPA财务机器人?

Techinsight

YashanDB在公共部门的潜力与应用

数据库砖家

四方合力推进菁彩Vivid技术应用,引领电影产业视听体验革新

极客天地

HarmonyOS实现快递APP自动识别地址

程序员潘Sir

鸿蒙 HarmonyOS HarmonyOS NEXT

保护身份安全:FIDO2认证在钓鱼攻击中的应用

运维有小邓

“你还活着吗?” “我没死,只是网卡了!”——来自分布式世界的“生死契约”

poemyang

分布式 分布式协议

flywa报错Migration checksum mismatch for migration version 1.1 -> Applied to database : 1332862643 ->

刘大猫

人工智能 算法 智慧城市 智慧交通 大模型

YashanDB云原生部署策略及效果分析

数据库砖家

6 个最佳无代码 IT 资产管理工具推荐

NocoBase

开源 低代码 无代码 IT资产管理 itam

毕业设计、课题要用微信小程序,HTTPS域名、服务器如何一步到位?

贝锐

微信小程序 https 域名

Suave 1.0发布,一个面向F#的Web服务器和开发库_.NET_Pierre-Luc Maheu_InfoQ精选文章