Welcome Nancy
这些指南将带你快速浏览Nancy的一些功能,而不会存在太多细节。会有更多没有遇见的事情.所以我们也邀请你去探索Nancy。
Nancy是一个轻量级的低成本框架,在.NET 和MONO上 用于构建基于HTTP的服务。框架的目标是尽可能的避开HTTP细节,为所有的交互提供一个 super-duper-happy-path。
这意味着Nancy的一切都设置成切合实际的默认值和约定,而不是让你费劲力气的去通过配置只为了启动和运行。用Nancy 你确实可以用几分钟的时间从零来构建网站。
Nancy被设计用来处理 DELETE,GET.HEAD.OPTIONS,POST,PUT和PATCH请求,并提供一个简单,优雅,领域特定语言(DSL)的返回,只需要几个按键响应,让你有更多的时间去关注代码和应用程序重要的部分。
这一切都是由社区构建的,作为一个开源框架,意味着您可完全访问源代码,并根据MIT许可证获得许可。
您可以通过Nuget,TeamCity服务(最新版本)获取Nancy或者从GitHub下载源代码。
构建在任何地方
Nancy的核心概念之一是主机。主机充当主机环境和Nancy的适配器,从而使Nancy能够运行在现有的技术(如ASP.NET ,WCF和OWIN)上 ,或被集成到任何给定的应用程序中。
核心的Nancy框架并不提供特定的主机实现。他们被前面提到的来源提供单独的实现,以及许多附加的功能如表单验证,构建Nancy应用程序就像是在Web框架中挑选你最喜欢的部分!通常,在您构建一个Nancy服务时,核心框架和一个主机是必要的。
Super-Duper-Happy-Path
虽然很难准确的确定它是什么,但毕竟是一个非常感性的术语,但它背后的基本想法是:
它只是工作
新增一个新的模块?
这是自动被发现的。
引进一个新的视图引擎?所有的关联都可以随时准备,而无需执行任何其他的操作。
使您向模块添加了新的依赖项,默认情况下,我们将找到并为其注入-无需配置
低仪式
在您的应用中所需要的"Nancy 代码" 数量应该很少,在任何Nancy应用程序中最重要的部分是您的代码-我们的代码应该让您的代码构建出令人惊叹的应用程序。
作为证明,实际上可以将功能性的Nancy应用程序安装到单独的Tweet中。
低干扰
当通过Nancy Api构建软件时,可以帮助你获得您想去的地方,而不是用你自己的方式。
命名应该是易于理解的,所有的配置都应该是最小化的,但当你需要时,功能和可扩展性依然存在。
轻松可定制
即使 "它只是工作" ,如果您想要使用其他组件的工作方式,则不应该存在阻碍自定义工作的障碍。
想要使用另一个容器?没问题!
想要调整路由的选择方式 ? 去吧!
通过我们的bootstrapper 方法,所有这些都变得小菜一碟。
最重要的是通过Nancy创建应用程序是快乐的,并有期望的乐趣!而不会牺牲您应用程序提高所需的功能和扩展性。
创建您的第一个 Nancy应用程序
足够的谈话,让我们看看一些代码!
们假定您已经安装并使用 NuGet和Visual Studio 2010 ,然而对于Mono (使用 2.10.2或更高版本)和MonoDevelop也同样适用。我们将使用Nancy和Nancy的 Asp.net主机构建无处不在的"Hello world"应用程序。
1. 如果使用visual studio 2012 或更高版本,请安装 visual studio 的 SideWaffle模板包。visual studio 用户可以安装 Nancy 项目模板。
2. 如果使用sideWaffle 通过ASP.NET 主机创建一个新的Nancy 空项目,或者使用Nancy 项目模板创建一个空的Web 应用程序
3. 添加一个Nancy 模块,它是一个标准的C#类,通过构造函数添加少量代码为Web应用程序的跟路径定义一个 路由处理程序
4. 编译运行并查看结果!
5. 虽然建议但是并不必要,使用NuGet包管理器可以检查任何更新。
Practice&Hello Nancy
先安装上边提到的方法,下载模板创建Nancy 项目 这里
之后创建 Nancy empty project with Asp.net host 项目
新建Module ,如上所述 这是一个 标准的C#类,让我们新建的 C#类 继承NancyModule,这样一个Nancy模块就产生了。
然后在Module的构造方法中,添加一个 对根路径的处理程序,代码很简单,仅仅返回 'Hello Nancy'。
F5 运行
总结
事实上,当我第一次看到Nancy 主页上 的这行几行代码,便对她产生了兴趣。
Install
PM> Install-Package Nancy
Write
public class SampleModule : Nancy.NancyModule
{
public SampleModule()
{
Get["/"] = _ => "Hello World!";
}
}
Go!
转载请标明出自:本文地址