Introduction
首先,让我们欢迎NANCY!这篇教程会让你对NANCY的特征有一个大概的印象,在这里,我们不会去深究细节。当然来,对于NANCY,绝对会有超乎你眼睛所看到的美丽,所以,我们也请你自己来探索她。
NANCY是一款用于在.net和mono创建HTTP基础服务的轻量级,低内存的框架。这个框架提供了包括super-duper-happy-path在内的尽可能多的交互方式。
这意味着,你通过NANCY建立起来的一切东西都有智能的默认值和协议(笔者:应该是指路径反射等),这样你就可以专心的去做你的网站,让那些恼人的配置统统见鬼去吧。不夸张的说,有了NANCY,在几分钟内,你就可以从无到有建起一个网站
NANCY天生就可以解决”DELETE,GET,HEAD,OPTIONS,POST,PATCH”请求,并且还提供了一个简单而优雅的 Domain SpecificLanguage(DSL领域特定语言)是你仅仅需要敲几下键盘就能返回应答,让你有更多的时间去关注更重要的细节…你的代码和工程。
由某某社区创建的这一切,它是一个开源的框架,这意味着在MIT协议所允许的情况下,你可以得到并使用这些源代码。
你可以从Neget(http://www.nuget.org/),我们的TeamCity server(http://teamcity.codebetter.com/project.html?projectId=Nancy&tab=projectOverview&guest=true)(最后一个工程)或者GitHut(http://nancyfx.org/)下载NANCY。
一次建立,到处运行
NANCY被创建后是可以到处运行的哟,我们是认真的。从NANCY一开始被建立的时候,就不依赖于任何现有的框架。如何和 .NET framework client profile一起创建的话,它可以被更广泛的应用,因为它自身包含有请求和响应对象。
Hosts(主机)是NANCY的核心之一。主机是托管环境和NANCY的适配器,这也使得NANCY能够在诸如ASP.NET,WCF和OWIN等现有技术框架下跑起来,当然也可以被集成在任意给定的程序里。
特性的主机并不是由NANCY的核心框架附带实现的。它们以及其它许多附加功能,比如表单验证,从前页面提取资源等都是被独立实现的。构建一个NANCY应用程序就好比是你从WEB框架自助餐里挑选你最爱的那部分。通常来说,一个NANCY服务程序你至少要包含一个核心框架和一个主机(host)。
Thesuper-duper-happy-path
“super-duper-happy-path”(orSDHP,如果你要把它变成一个小孩子的—_—||) 是我们用来形容NANCY高贵冷艳气质的词语,而我们争取在所有的APIs里都能够传递出这种精神气质。
虽然这种精神气质让我等凡夫俗子难以表达,不过在分解之后,最基本是:
··“It just works”。毫不犹豫的拿起它。增加一个新的module? 你肯定是自己发现的。加入一个新的View Engine?它们早已自觉的联系在一起了,你根本不需要做点其它的啥。即使你为你的module增加了一个依赖,但那又如何,默认情况下我们会为它找到位置并注入——你去泡杯咖啡来喝喝就可以了,无需你配置。
··“Easily customizable(轻松定制)”。既然有了“it just works”,那么你想这么玩就怎么玩,想用什么组件那就去用,想怎么用就怎么用,什么也不能阻止你。想换一个容器?没问题!想要换一种选择路由的方式?尽管去!只要改一下bootstrapper 的路径,那么,这些问题都不是问题。
“Low ceremony(简洁)”,在你项目里,“NANCY CODE”应该是最少的。在NANCY应用程序里,最重要的是你的代码——我们的代码早就该滚出你的视野,让你去专心的创建那些棒极了的程序。作为佐证,它实际上很可能将NANCY程序作为一个适合的功能嵌入到一个单一的文件里。
“Low friction”(低冲突),当你利用NANCY创建一个软件的时候,APIs应该帮助你去你想去的地方,而不是挡着你的路。命名应该是一眼就能看明白是干嘛的,所需要的配置也应该是最小的,但是功能和可扩展性在你需要的时候就应该出现。
无论如何,利用NANCY创建一个程序应该是一个愉快的过程。不过如果你不想牺牲可扩展性,可能需要随着你的程序的扩展才能做到(But without sacrificing the power orextensibility that you may need as your application grows.)。
你的第一个NANCY程序
好了,已经说得够多了,让我们来看些代码吧!在此之前,请确认你已经安装了Nuget,VS2010.不过可以使用Mono(2.10.2或更新的版本)和MonoDevelop。我们将使用NANCY和NANCY’S ASP.NET 创建一个”hello world”!
1. 安装Nancy project templates
(http://visualstudiogallery.msdn.microsoft.com/f1e29f61-4dff-4b1e-a14b-6bd0d307611a)
2. 创建一个Nancy Empty WebApplication with ASP.NET Hosting
3. 增加一个Nancy module
这是一个标准的C#类,并且为WEB程序的根目录的URL定义了路由处理程序,而这仅仅只需要在constructor添加一小点儿代码。
4、编译,运行程序并查看结果。
HelloModule.cs代码
public class HelloModule : NancyModule
{
public HelloModule()
{
Get["/"] = parameters => "Hello World";
}
}