HTTP的各种服务.NET Nancy 详解(一) 初识.NET的微型Web框架 Nancy

大部分微软平台的开发人员如果选择开发框架只能是在ASP.NET WEBFORM和ASP.NET MVC两个之间选择。 而Nancy是不依赖于这两个框架的独立的一个框架。它更多的是借鉴了Ruby的一些特性。

Nancy 是一个基于 .NET 和 Mono 平台用于构建轻量级基于 HTTP 的 Web 服务。Nancy 设计用于处理 DELETEGETHEADOPTIONSPOSTPUT 和 PATCH 等请求方法,并提供简单优雅的 DSL 以返回响应。 官方网站 http://nancyfx.org/

更详细的介绍参见 http://blog.spinthemoose.com/2011/07/18/nancy-a-micro-web-framework-for-net/

顺便介绍个使用Nancy 做的Quartz.net的web控制台 https://quartznetwebconsole.codeplex.com/

参考文章:

使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)

Frictionless .NET Web App Development with Nancy

Frictionless .NET Web App Development with Nancy Part II - Introducing a View Engine

Frictionless .NET Web App Development with Nancy Part III - Introducing MongoDB

Frictionless .NET Web App Development with Nancy Part IV – Hosting

Slides from ANUG talk on Nancy

扩展NoteService,支持NancyFx

用Nancy和Simple.Data创建一个图片博客 第一部分:开始一个工程

用Nancy和Simple.Data创建一个图片博客 第二部分:定义routes

用Nancy和Simple.Data创建一个图片博客 第三部分:渲染一些Views

Integrating Nancy with protobuf-net

Build Simple Web UIs with the Nancy Framework

轻量级MVC框架:Nancy学习

Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono。Nancy的整套设计理念是基于"super-duper-happy-path",这是一个作者杜撰的单词,个人觉得翻译过来基本就是简单粗暴,行之有效的意思。

简单的例子:

 

github上的例子后面跟着的是Compile, run and enjoy the simple, elegant design!,这句话让我深深的感受到这群程序员的可爱。

Features

  1. 自底向上全套都是新构建的,移除了对其他框架的引用和限制。
  2. Run anywhere. Nancy 能够在ASP.NET/IIS,OWIN,Self-hosting中运行。
  3. 集成支持各种View engine(Razor, Spark, dotLiquid, SuperSimpleViewEngine...)
  4. 一个强力而且轻量级的测试框架。
  5. 内容协商。
  6. And much, much more

如果本文就这样结束了,那和其他介绍的文字就没有多大的区别了。让我们坐上github的时光机,开始我们的扒皮之旅。

第一站:version-20101128

这个时候的Nancy 就如同一个刚出生的婴儿,也正因为如此,才便于我们入手。入口点当然是大家耳熟能详的IHttpHandler。这里的IsReusable可是false的,有一定的性能损失,这里的知识点大家可以参见另外的博文。

 

既然刚出生,自然问题很多,就如同下面的代码,这里本着不吐槽的原则,只是笑而不语,恩恩。

 

值得赞赏的是单元测试一开始就跟上了项目进度,这样方便我们去研究其代码的意图。其中比较有意思的是Response类的实现,里面使用了隐式的类型转换,用来实现无论是HttpStatusCode还是Content都直接用=赋值即可,当然这么做会带来一定的副作用。

 

具体的隐式转换倒是没啥内容。

 

Request

对于Request 的包装暂时只是占了个坑,后续版本有补充cookie的一些操作在这里。

 

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!