Nancy是.NET 平台的微框架。在受到Ruby社區的Sinatra框架啟發下,NancyFx框架提供一個.NET平台下的低門檻、易上手的可用於Web開發工具包。
請注意我說的是可用於Web開發,這是有原因的。NancyFx不只是一個用於構建Web站點或API節點的Web框架。它是一個完整的框架,可提供基於Http的服務功能,可以構建簡單控制台程序,也可以搭建大型的企業網站。
Nancy可以以傳統的形式來托管,比如 IIS7下,它也可以自托管。自托管是特別有趣,因為它意味着通常的后台應用程序 (如 Windows 服務) 現在可以有
web 接口來進行管理。
Nancy還能通過Mono框架在 Linux 和 Unix 系統上構建、運行。這意味着你可以 (或至少應該能夠) 在 Android 和 Mac OS 上運行您啟用Nancy的代碼。
你可能已經想問否應使用Nancy取代另一個框架,例如 MVC、 ASP、 Ember或 ServiceStack。你怎么知道哪一個是最好?事實是在你的職業生涯中沒有"最好的框架"可用於所有的開發任務。你只是為手頭的任務選擇的最好的框架。
我只知道的是,Nancy提供了大量的功能 ,並且是非常容易上手使用的。
做個比較,當我第一次發現關於Nancy (早在 2011 年,關於 0.8 或 0.9 版本),在半天之內,我就學會了一切我需要知道的,開始編寫代碼運行程序。而當我使用了ASP.NET MVC多年以后,卻仍然是一個持續的學習過程。
Nancy能做什么?這里是基本框架內置功能的簡短列表︰
- 基於 rest 路由
- 內置的簡單視圖引擎,可置換
- 提供靜態文件服務
- 多租戶服務托管
- Rest API 認證 (基本認證,表單認證和基於令牌的認證)
- 靈活模型綁定
- 多格式內容協商
- 密碼密鑰和短語生成
- SSL 證書處理
- 異步任務處理
- 依賴注入
此列表是只是冰山一角;這里提到的功能,出於工具包的模塊化設計,所有的代碼都可以被客戶端代碼重載。你可以輕松地插入您自己的依賴注入容器,或擴展你自己的身份驗證方案。
配合第三方程序集,可用來添加一些功能到到Nancy中︰
- 基於 OAuth 的身份驗證
- 連接第三方診斷和日志記錄組件
- 跨平台集成到諸如 NGINX,Apache 和其他非 Windows 應用程序堆棧
- 編寫適配器,也能接入其他的什么
最后一點還是要強調的,你可以輕松地覆蓋任何你想要的(或需要)。Nancy中的每個接口都是公開的,最棒的是自動串聯起來的,這意味着你通常需要做的是編寫一個類,實現一個給定的接口,Nancy就能找到它,剩下的就交給它了。
還有一個大招是Nancy的托管方案,NancyWiki 上的基本列表如下:
- ASP.NET
- WCF(Windows communication foundation)
- Microsoft Azure
- OWIN
- Self-hosting (standalone apps)
- Umbraco
- NGINX
- 支持FastCGI的所有服務器
當然你可以實現接口,自己開發一個托管容器。
總結
在本章中,您學習了 NancyFX 框架是什么和它的功能是什么。在下一章中,你會了解多一點關於Nancy的創作背后的背故事以及一點點更多關於精神、理念和"super-duper-happy-path"(有人解釋為簡單粗暴行之有效)。