Welcome Nancy

 
首先,欢迎来到Nancy!我们的主要灵感是Ruby的Sinatra框架,因此Nancy以Frank Sinatra的女儿名字命名。许多人想知道NancyFx中的Fx是什么意思,就是这样,它仅仅意味着框架!NancyFx是包含所有组件的整体项目的总称。

这些指南将带你快速浏览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被设计为不依赖现有框架。通过.NET框架客户端配置文件构建,Nancy可以提供几乎任何你想要的,因为它完全包含自己的请求和响应对象。

Nancy的核心概念之一是主机。主机充当主机环境和Nancy的适配器,从而使Nancy能够运行在现有的技术(如ASP.NET ,WCF和OWIN)上 ,或被集成到任何给定的应用程序中。

核心的Nancy框架并不提供特定的主机实现。他们被前面提到的来源提供单独的实现,以及许多附加的功能如表单验证,构建Nancy应用程序就像是在Web框架中挑选你最喜欢的部分!通常,在您构建一个Nancy服务时,核心框架和一个主机是必要的。

Super-Duper-Happy-Path

 
"super-duper-happy-path"(或SDHP,如果你会哄小孩子) 是我们用来描述Nancy特性的短语;这个经验是我们所有API中所追求的。

虽然很难准确的确定它是什么,但毕竟是一个非常感性的术语,但它背后的基本想法是:

它只是工作

你应该可以拿起并没有任何问题的使用它们。

新增一个新的模块?

这是自动被发现的。

引进一个新的视图引擎?所有的关联都可以随时准备,而无需执行任何其他的操作。

使您向模块添加了新的依赖项,默认情况下,我们将找到并为其注入-无需配置

低仪式

在您的应用中所需要的"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!

转载请标明出自:本文地址

Nancy.Net之旅-初次见面的更多相关文章

  1. Nancy.Net之旅-探索模块

    探索Nancy模块 模块是任何Nancy应用程序中的主角,因为它是您定义应用程序行为的地方,所以无法避免使用它. 事实上,在任何的Nancy应用程序中,声明模块是最基本的要求. 通过继承NancyMo ...

  2. 轻量级MVC框架:Nancy学习

    一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Nancy 是一个轻 ...

  3. .NET Nancy 详解(一) 初识

    Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono.Nancy的整套设计理念是基于"super-duper-happy-path& ...

  4. Nancy

    Nancy Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono.Nancy的整套设计理念是基于"super-duper-happy ...

  5. Nancy学习

    Nancy学习 一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Na ...

  6. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  7. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  8. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  9. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

随机推荐

  1. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装

    1.配置yum源: 在MariaDB官网提供了yum源在线生成器,选择合适的系统和版本后,会生成所需的repo文件内容: 在/etc/yum.repos.d/目录下新建一个MariaDB.repo文件 ...

  2. MSDE2008安装备忘

    MSDE2008安装备忘(适用于WIN7 8 10) 1.系统中必须要VC8.0,即VC2005运行库.2.系统中必须要有.net framework2.0.3.5.4.6运行库.3.windows防 ...

  3. 20164310Exp6 信息搜索和漏洞扫描

    实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(以自己主机为目标) (4)漏洞扫描:会扫,会看报告, ...

  4. 关于Unity单个对象多个脚本的Update调用的时序问题

    先说几句废话, 最近在研究Unity, 这玩意用起来比较简单, 而且商店里还有各种插件, 初学者也能轻松拼凑出一个像模像样的游戏(顺便说一句,自己做着玩就无所谓了,但随便拼凑个辣鸡丢出来骗钱就不好了) ...

  5. DOM事件类

    1.DOM中的事件级别 DOM0: element.onclick = function(){} DOM1: 没有与事件相关的设计 DOM2: element.addEventListener('cl ...

  6. 1. 通过DHCP服务器动态获取IP地址之后无法上网的解决方法

    故障:内网正常,在同一个局域网内的其它PC端通过DHCP获取IP地址并且可以正常上网. 1.通过wireshark抓包,使用ipconfig /renew时,wireshark内出现DHCP请求服务, ...

  7. Linq to SQL -- 入门篇

    一.什么是Linq Linq是语言集成查询(Language Integrated Query)的简称,是visual Studio 2008和.NET Framework 3.5版本中一项突破性的创 ...

  8. 字符串排序--string类的使用

    最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下. 题目要求如下: 先输入你要输入的字符串的个数.然后换行输入该组字符串 ...

  9. Extjs中grid 的ColumnModel 属性配置

    一, 用数组的方式配置ColumnModel var colModel = new Ext.grid.ColumnModel([ { header:'编号', dataIndex:'id',width ...

  10. web socket server code, 调用 shell exec child_process

    var child_process = require('child_process'); var ws = require("nodejs-websocket"); consol ...