Nancy 宿主于asp.net(一)
Nancy是.net下微型mvc框架,是一个轻量级的,用于构建基于http的web服务。
Nancy 设计用于处理 DELETE
, GET
, HEAD
, OPTIONS
, POST
, PUT
和 PATCH
等请求方法,并提供简单优雅的 DSL 以返回响应。
官方地址:http://nancyfx.org/
Github : https://github.com/NancyFx/Nancy
quick start
0、特点
1、跨平台运行,Nancy支持运行在ASP.NET/IIS,WCF,自宿主和任何OWIN;
2、小型项目,不想使用iis这样繁重的服务器,避免繁重的身份验证等;
3、定义了非常轻量的 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATCH 等请求;
4、集成了各种模板引擎(Razor, Spark, dotLiquid 和自带的SuperSimpleViewEngine);
5、强大的请求路径匹配,包括先进的参数功能。路径匹配策略可以使用自定义实现您的各种具体需求;
1、创建空白mvc4项目
2、nuget引入相应的包
Nancy--Nancy主要框架
Nancy.Hosting.Aspnet--用于将Nancy宿主于asp.net
Nancy.Viewengines.Razor--结合Razor引擎进行视图渲染
引入完成之后,自动在配置文件中做如下修改:
<!--system.web节点下添加--> <httpHandlers> <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" /> </httpHandlers> <!--handlers节点下添加--> <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*" />
注意点:此处将url处理转交给Nancy进行处理,但是我在mvc框架的基础上进行的Nancy的引入,所以需要将原有的mvc框架的路由注释掉,即global.asax中的路由注册;
3、项目结构
就像普通的mvc项目结构一样,该如何创建就如何创建,不用在项目结构上有思维上的跳跃性,当然Nancy并未严格要求文件结构的命名规则,使用人可以自定义其他名称的结构也是可以正常运行的,当然了,既然有了前期mvc的思想,我们就没必要自己再定义一套。
4、demo初探
using Nancy; namespace NancyDemo.Controllers { /// <summary> /// NancyModule:承担了mvc中路由和action的工作 /// 传统mvc中的controller在此赋予了额外的路由工作 /// </summary> public class HomeController : NancyModule { public HomeController() { //localhost:port/ Get["/"] = p => { return "hello Nancy!"; }; Get["/Home"] = p => { return View["Home"]; }; Get["/Home/{userName}"] = p => { return p.userName; }; } } }
5、运行效果
浏览器输入相应地址:
http://localhost:17983/Home/Welcome To Nancy
6、Nancy预览
1、通过反编译工具我们可以看到,Nancy为我们封装了基本的http请求和响应。
2、同时对DELETE
, GET
, HEAD
, OPTIONS
, POST
, PUT
和 PATCH
方法进行了进一步的封装。
3、对原有的mvc的东西进行保留,二次封装。
4、将iis中的管道的概念同样进行了封装,对应的AfterPipeLine 和BeforePipeline类。
结束语:
以上是个人对Nancy的初探,结合博客中博主的观点和自己的实践,之后会对Nancy有跟进的叙述。