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