Nancy in .Net Core学习笔记 - 初识Nancy
前言
去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下。
注: 本文中大部分内容都是对官网文档的翻译和总结。
简介
Nancy是一个的轻量级Http的服务框架, 全名NancyFx, Nancy框架的灵感来自于Ruby
的Sinatra框架,其作者名字叫Frank Sinatra, NancyFx这个名字中的Nancy是Frank Sinatra女儿的名字, Fx的意思是Framework, 即框架。
Nancy的优点
- 易于测试(Easier Testing), Nancy提供了相应的测试库,可以很方便实现请求响应的测试
- 自动依赖注入(Automatic Dependency Resolution), Nancy使用了TinyIOC作为依赖注入框架
- 内容协商机制(Content Negotiation), Nancy既可以用来创建Api应用,可以来创建网站应用,甚至可以混合使用。
- 语法简洁(Terse Syntax & Less Ceremony),语法上比MVC简单的多
- 无配置化(No Config),Nancy的启动和运行不需要任何配置
- 可以在任何地方运行(Runs Anywhere),Nancy可以寄宿在IIS, WCF, 可执行EXE文件, Windows Service中或自寄宿应用中(Self Hosted Application)
- 管道钩子(Pipeline Hooks), Nancy允许用户修改管道,可以在请求处理之前和发送响应之后自定义一些逻辑
编写第一个Nancy应用程序
首先我们创建一个空的.Net Core App, 命名为HelloNancy
项目创建成功之后,使用Nuget引入Nancy库, 选择(2.0.0-barneyrubble)版本
Nancy 2.0.0-barneyrubble是基于.NET Stardard的项目,所以可以在.NET Core中使用
注意:写这个实例代码的时候,我使用的是.Net Core 2.1.4, Microsoft.AspNetCore.All中默认已经包含了Microsoft.AspNetCore.Owin, 如果你的.Net Core版本较低,用Nuget手动添加Microsoft.AspNetCore.Owin库
引用添加完成之后,下一步我们来修改Startup.cs, 这里我们可以使用app.UseOwin
方法将Nancy注册到NET Core MVC的管线中
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseOwin(x => x.UseNancy());
}
接下来我们添加一个新类HelloModule, HelloModule
继承自NancyModule
public class HelloModule : NancyModule
{
public HelloModule()
{
Get("/", p => "Hello World");
}
}
这里Get方法中有2个参数,第一个参数是类似于NET Core MVC Route的路由模板,第二个参数是当用户请求的Url符合该路由模板的时候,做出的响应, 相当于NET Core MVC中的action。
至此一个最简单的Nancy应用就完成了,下面我们启动项目, 网站中正确显示了"Hello World"
怎么样,看起来是不是很简洁。
Nancy in .Net Core学习笔记 - 初识Nancy的更多相关文章
- Nancy in .Net Core学习笔记 - 视图引擎
前文中我们介绍了Nancy中的路由,这一篇我们来介绍一下Nancy中的视图引擎. Nancy中如何返回一个视图(View) 在ASP.NET Mvc中,我们使用ViewResult类来返回一个视图.N ...
- Nancy in .NET Core学习笔记 - 路由
前文中,我介绍了Nancy的来源和优点,并创建了一个简单的Nancy应用,在网页中输出了一个"Hello World",本篇我来总结一下Nancy中的路由 Nancy中的路由的定义 ...
- .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...
- .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]
原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...
- .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...
- .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]
原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...
- .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式
原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...
- .NET CORE学习笔记系列(2)——依赖注入【2】基于IoC的设计模式
原文:https://www.cnblogs.com/artech/p/net-core-di-02.html 正如我们在<控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式 ...
- .NET CORE学习笔记系列(2)——依赖注入【1】控制反转IOC
原文:https://www.cnblogs.com/artech/p/net-core-di-01.html 一.流程控制的反转 IoC的全名Inverse of Control,翻译成中文就是“控 ...
随机推荐
- python3_list
name = ['like','new','book',['fa','fdsa'],'new','book','why']#这是个列表 print(name)#把列表打印出来 查 print(name ...
- c++/qt的数据序列化和反序列化
序列化以及反序列化的实现 struct Body { double weight; double height; }; //结构体 struct People { int age; Body dBod ...
- scrapy初始和简单应用
什么是Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有 ...
- Mysql表的约束设计和关联关系设计
https://blog.csdn.net/u012750578/article/details/15026677 Mysql表的约束设计和关联关系设计 ======================表 ...
- Pytorch多GPU训练
Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batc ...
- 引用Excel控件时,无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”请改用适用的接口
类型Microsoft.Office.Interop.Excel.ApplicationClass未定义构造函数 无法嵌入互操作类型“Microsoft.Office.Interop.Excel.Ap ...
- 查找更改的PeopleCode
当我们做工程包迁移时,经过会遗漏部分更改过的定义.我们可以用下面的SQL来查找变更项 变量 &OPRID =代码变更者 变量 &PROJECT 项目工程名 SELECT * FROM ...
- 检查对象是否为NULL或者为Empty
不管是在Winform开发,还是在asp.net 开发中当从一个数据源中获取数据时你总是不知道这个数据的状态,这个时候总要对她进行一次判断,不过每次进行一次判断总是要写怎么一堆代码,时间长了,总感觉不 ...
- mysql import error
mysql导入文件一直出错,显示ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option s ...
- 元组Tuple的使用
在方法中有多个值返回,返回值封装成对象又不方便,可以用 out 返回或ref返回, 这里介绍元组,也可以作为多个返回值的使用,最多携带8个返回值 Task.Factory.StartNew<Tu ...