写点什么

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

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

关注

评论

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

DolphinDB与MongoDB在时序数据上的对比测试

DolphinDB

mongodb 分布式系统 时序数据库 DolphinDB 数据库开发

通过Postman和coding.net发布API

太极程序员

Postman API

LeetCode题解:127. 单词接龙,BFS+统计单词变化次数,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

dubbogo 3.0:牵手 gRPC 走向云原生时代

阿里巴巴云原生

gRPC 云原生 中间件 dubbo-go Go 语言

IDEA 文档插件 DocView 版本更新:修改 UI 并支持 IDEA 2020.3 !

程序员小航

idea插件 IntelliJ IDEA 文档生成

答了Mybatis这个问题后,面试官叫我回去等通知……

田维常

mybatis

腾讯高工强烈推荐的“Netty速成手册”原理+应用+调优,带你将知识点一网打尽

比伯

Java 编程 程序员 架构 Netty

DeFi(去)中心化DAPP系统软件开发

系统开发

智慧警务可视化平台开发,重点人员管控系统搭建

t13823115967

智慧公安 智慧警务系统开发

产品策略闭环是个什么环?

万事ONES

项目管理 团队协作 需求管理 需求分析 产品策略

将原则纳入到架构的生命中

soolaugust

架构 思考 设计

盘点2020 | 30岁了,我终于入门编程了

盘点2020

SPI 在 Dubbo中 的应用

vivo互联网技术

Java jdk dubbo spi

硬肝到秃头!Alibaba强推并发编程笔记我跪了,真的学到好多东西!

Java架构追梦

Java 学习 架构 面试 并发编程

码了2000多行代码就是为了讲清楚TLS握手流程(续)

Gopher指北

https Go 语言

一文带你彻底了解大数据处理引擎Flink内存管理

华为云开发者联盟

大数据 数据 处理

从 JMM 透析 volatile 与 synchronized 原理

码哥字节

volatile JVM JMM Java 25 周年 synchronized

解析字节算法面试真题,深入探究ArrayList应用原理

小Q

Java 学习 编程 架构 面试

为了SpringBoot提交Tomcat执行,我总结了这么多

小Q

tomcat 学习 面试 微服务 springboot

从源码的角度搞懂 Java 动态代理!

Java架构师迁哥

面试被问高并发一脸懵?那是你没看过我整理得高并发回答模板

小Q

Java 学习 面试 高并发 性能调优

Canvas入门实战之用javascript面向对象实现一个图形验证码

徐小夕

Java 大前端 canvas

盘点2020 | 疫情下的思考和学习

soolaugust

盘点2020

智慧城市建设,社区智能化系统搭建解决方案

t13823115967

智慧城市 平安小区

什么是全场景AI计算框架MindSpore?

华为云开发者联盟

人工智能 AI mindspore

如何快速打造一款钉钉 Go sdk

Ceelog

钉钉 企业微信 Go 语言

硬核编程:30天=一个网站+一份周刊

老魚

程序员 建站 web全栈

Prometheus TSDB(Part 2):预写日志(WAL)和检查点

Grafana 爱好者

云原生 Prometheus tsdb 可观察性

《大数据算法》.pdf

田维常

算法

EZYTRX波场智能合约APP系统软件开发

系统开发

【经验分享】RTC技术系列之音频编解码

Hanson

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