写点什么

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

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

关注

评论

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

数字货币合约交易平台开发,合约社区智能跟单平台

V\TG【ch3nguang】

现货合约量化交易机器人模式开发搭建

V\TG【ch3nguang】

数字货币交易所开发定制搭建功能列表

V\TG【ch3nguang】

在信创化的浪潮下,银行应该如何选择

Onegun

信创 信创生态

集成开发环境软件Eclipse与MyEclipse区别

小齐写代码

华为云CodeArts Check代码检查服务用户声音反馈集锦(6)

华为云PaaS服务小智

软件开发 华为云 代码检查

Mobpush上线跨时区推送功能,助力中国开发者应用出海

MobTech袤博科技

智能推送 跨时区 app运营 应用出海

强大硬件+优化软件,英特尔锐炫助力玩家沉浸畅享《猛兽派对》

E科讯

灞桥论“健” 共话康养 灞桥康养论坛取得圆满成功

联营汇聚

供应链和物流的跨链代币开发 数字货币开发

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

ARB链合约项目DAPP系统逻辑开发技术

V\TG【ch3nguang】

软件需求文档、设计文档、开发文档、运维文档大全

金陵老街

项目管理 #运维

您距离一个成熟安全的 DevOps 平台,只差一个迁移

极狐GitLab

DevOps gitlab 安全 迁移 Github'

活动报名 | Modern Data Stack Meetup 北京首站启动!与三大开源社区共同探索现代数据栈的最佳实践

tapdata

数据采集 数据集成 Tapdata 现代数据栈 云数仓

DAPP区块链公链代币智能合约质押挖矿系统开发

l8l259l3365

openEuler与Linaro携手参加OSSUMMIT 2023

openEuler

Linux 开源 openEuler 资讯

文心一言 VS 讯飞星火 VS chatgpt (97)-- 算法导论9.3 3题

福大大架构师每日一题

福大大架构师每日一题

好物周刊#2:AI 写作助手

村雨遥

软件 网站 项目 插件 资料

亮相华为全联接大会,用友荣获“华为云技术领航最佳实践伙伴”奖项

用友BIP

华为云

openEuler 亮相全球顶级开源盛会 OSSUMMIT 2023,持续推动智能化未来的实现

openEuler

Linux 开源 openEuler 资讯

Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能

凌览

node.js puppeteer 截图

科兴未来 | 中国·仙居第六届全球医疗器械创业创新大赛

科兴未来News

Different SoC models -IPQ9574, IPQ9554, IPQ8074 and IPQ8072- different WiFi technologies

wifi6-yiyi

wifi 802.11AX 802.11be

数智赋能,提质增效 | 用友流程制造行业解决方案全新发布!

用友BIP

流程制造

搜索技术领域的“奥林匹克”,飞桨支持“第二届百度搜索创新大赛”正式启动!

飞桨PaddlePaddle

百度 飞桨 AI Studio

静态分析在DevSecOps中的应用

Tom(⊙o⊙)

项目流程管理处理推荐 OmniPlan Pro 4 最新激活中文

胖墩儿不胖y

Mac软件 项目流程管理

简单的多协议数据库管理 Navicat Premium 最新激活中文版

mac大玩家j

数据库管理工具 Mac软件 多连数据库

企业诊断屋:二手车交易平台APP如何用AB测试赋能业务

字节跳动数据平台

大数据 ab测试 对比实验 数字化增长 企业号9月PK榜

喜讯!云起无垠获评软件供应链安全技能竞赛“团队优秀奖”

云起无垠

乙烯裂解工艺可视化2D组态系统

2D3D前端可视化开发

物联网 组态软件 工业组态 乙烯裂解工艺 乙烯裂解组态图

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