Suave 1.0發布,一個面向F#的Web服務器和開發庫
近日,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 HttpContext
; HttpContext
中包含已經編碼好的響應,服務器將發送給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#
來自: http://www.infoq.com/cn/news/2016/01/suave-web-server