Nancy簡介
Nancy是一個輕量級的獨立的框架,下面是官網的一些介紹:
- Nancy 是一個輕量級用於構建基於 HTTP 的 Web 服務,基於 .NET 和 Mono 平台,框架的目標是保持盡可能多的方式,並提供一個super-duper-happy-path所有交互。
- Nancy 設計用於處理
DELETE
,GET
,HEAD
,OPTIONS
,POST
,PUT
和 PATCH
等請求方法,並提供簡單優雅的 DSL 以返回響應。讓你有更多時間專注於你的代碼和程序。
官方地址:http://nancyfx.org GitHub:https://github.com/NancyFx/Nancy
創建Nancy項目(自宿主)
Nancy supports running on ASP.NET/IIS, WCF, Self-hosting and any OWIN
Nancy是支持多種宿主,今天我是采用 Self-hosting 也就是自宿主方式。
首先創建一個控制台程序:
然后添加Nuget 引用,我們在搜索框輸入Nancy Self,然后搜索,如圖:
直接添加第一個即可。
也可以用Nuget命令行添加:Install-Package Nancy.Hosting.Self
添加好以后,在Program.cs 添加如下代碼:
using Nancy.Hosting.Self; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NancyDemo { class Program { static void Main(string[] args) { using (var host = new NancyHost(new Uri("http://localhost:9000"))) { host.Start(); Console.ReadLine(); } } } }
然后啟動程序,訪問 http://localhost:9000 發現404 錯誤,那是因為我們還沒添加任何Module。
下面我們添加一個HomeModule
如圖:
public class HomeModule:NancyModule { public HomeModule() { Get["/"] = r => { var os = System.Environment.OSVersion; return "Hello Nancy<br/> System:"+os.VersionString; }; } }
再次啟動訪問 http://localhost:9000
下面我們再來添加一些強大的路由規則:
Get["/blog/{name}"] = r => { return "blog name " + r.name; };
然后我們訪問 http://localhost:9000/blog/linezero ,name就可以獲取到linezero
我們再來模仿mvc 的路由規則:
Get["/mvc/{controller}/{action}/{id}"] = r => { StringBuilder mvc = new StringBuilder(); mvc.AppendLine("controller :" + r.controller+"<br/>"); mvc.AppendLine("action :" + r.action + "<br/>"); mvc.AppendLine("id :" + r.id + "<br/>"); return mvc.ToString(); };
我們訪問:http://localhost:9000/mvc/blog/linezero/1
分別對應如下:
controller :blog
action :linezero
id :1
更多功能可以參看官方wiki。
完整Module代碼:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Nancy; namespace NancyDemo { public class HomeModule:NancyModule { public HomeModule() { Get["/"] = r => { var os = System.Environment.OSVersion; return "Hello Nancy<br/> System:"+os.VersionString; }; Get["/blog/{name}"] = r => { return "blog name " + r.name; }; Get["/mvc/{controller}/{action}/{id}"] = r => { StringBuilder mvc = new StringBuilder(); mvc.AppendLine("controller :" + r.controller+"<br/>"); mvc.AppendLine("action :" + r.action + "<br/>"); mvc.AppendLine("id :" + r.id + "<br/>"); return mvc.ToString(); }; } } }
跨平台
前面一篇 http://www.cnblogs.com/linezero/p/5087997.html OWIN 跨平台。
Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono.
官方介紹是可以直接運行在mono上。所以下面我們就來看看一下運行在linux下。首先大家要安裝好 mono。
測試系統版本:centos 6.4 mono 3.10.0
將程序上傳到linux 下,然后定位到程序目錄,通過命令啟動程序:mono NancyDemo.exe
程序已成功啟動,下面我來訪問看看:
可以看到系統標示已經是Linux。
參考鏈接:
http://www.cnblogs.com/shanyou/archive/2013/04/11/3015654.html
https://github.com/NancyFx/Nancy/wiki
如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。