写点什么

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

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

关注

评论

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

多场景下 3-11 倍性能提升,Apache Doris 1.2 新版本性能揭秘!

SelectDB

数据库 数据分析 Clickhouse Doris 数仓

技术实战:初创项目前端框架选型

FinFish

前端开发 前端框架 技术选型 移动开发

Java最常见的230道面试题,临阵磨枪,不快也光!涨薪指日可待

钟奕礼

Java 程序员 java面试 java编程

瓴羊Quick BI企业数据分析工具,公司运营实时掌控

巷子

从多个角度分析顺序表和链表区别和特点

C++后台开发

数据结构 算法 链表 linux开发 C++开发

教育机构客户管理系统功能方案详解!

优秀

CRM系统 客户关系管理系统

C语言学生管理系统

我是一个茶壶

C语言 学生成绩管理系统 11月月更

W3C发布小程序技术标准白皮书

Onegun

小程序 微信小程序

租便宜的云服务器能干啥?有什么好处?怎么选择?

行云管家

云计算 服务器 云服务器

面霸是怎样练成的?“2023”带你过关斩将,手撕面试官

钟奕礼

Java 程序员 java面试 java编程

偶数层PCB板为何在PCB多层板中“独领风骚”?

华秋PCB

工艺 PCB PCB设计

多云时代,如何构建配置管理数据库?

BoCloud博云

SQL面试 100 问

FunTester

火山引擎VeDI推出这款产品 助力企业实现以“人”为中心的数据洞察

字节跳动数据平台

大数据 数据分析 火山引擎

工信部领导莅临2022南京软博会诚迈科技展区参观指导

科技热闻

2023跳槽一定不能错过的java面试集——前百度资深架构师整理

钟奕礼

Java 程序员 java面试 java编程

openGauss 3.1.0的新型选择率模型大解密

openGauss的SQL引擎在3.1.0版本中做了哪些优化?

MobPush for HarmonyOS

MobTech袤博科技

Go1.20 新版覆盖率方案解读

大卡尔

Go 测试覆盖率 11月月更

应用 Serverless 化,让业务开发心无旁骛

Serverless Devs

国密浏览器是什么?有哪些?有什么特点?

行云管家

国密 国密浏览器

大咖说·图书分享|深入浅出Node.js

大咖说

node.js

前端哪个培训学习比较好?

小谷哥

行业分析| 实时音视频的多种用法

anyRTC开发者

音视频 实时音视频 实时通信 语音通话 视频通话

精彩回顾 | 苏州农商银行新一代云原生信息科技架构体系实践

BoCloud博云

云原生

极客时间架构训练营模块八作业

李晨

架构

2022年中国新能源汽车出海市场发展洞察

易观分析

新能源汽车 出海

《Python编程:从入门到实践》有奖书评活动来啦!

图灵社区

小程序插件和小程序组件,有区别?

FinFish

小程序 移动开发 跨端开发 小程序插件 小程序组件

java程序员京东T3岗面试回顾:多线程+数据库+中间件+JVM+spring

钟奕礼

Java 程序员 java面试 java编程

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