Suave 1.0發布,一個面向F#的Web服務器和開發庫

jopen 8年前發布 | 7K 次閱讀 Web服務器 F#

近日,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#

來自: http://www.infoq.com/cn/news/2016/01/suave-web-server

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!