前言

去年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的更多相关文章

  1. Nancy in .Net Core学习笔记 - 视图引擎

    前文中我们介绍了Nancy中的路由,这一篇我们来介绍一下Nancy中的视图引擎. Nancy中如何返回一个视图(View) 在ASP.NET Mvc中,我们使用ViewResult类来返回一个视图.N ...

  2. Nancy in .NET Core学习笔记 - 路由

    前文中,我介绍了Nancy的来源和优点,并创建了一个简单的Nancy应用,在网页中输出了一个"Hello World",本篇我来总结一下Nancy中的路由 Nancy中的路由的定义 ...

  3. .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]

    原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...

  4. .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]

    原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...

  5. .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...

  6. .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]

    原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...

  7. .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式

    原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...

  8. .NET CORE学习笔记系列(2)——依赖注入【2】基于IoC的设计模式

    原文:https://www.cnblogs.com/artech/p/net-core-di-02.html 正如我们在<控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式 ...

  9. .NET CORE学习笔记系列(2)——依赖注入【1】控制反转IOC

    原文:https://www.cnblogs.com/artech/p/net-core-di-01.html 一.流程控制的反转 IoC的全名Inverse of Control,翻译成中文就是“控 ...

随机推荐

  1. 2018-2019网络对抗技术 20165220 Exp4 恶意代码分析

    实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systracer套件. ...

  2. 基于TensorFlow的手写中文识别(版本一)

    具体效果实现: 第一次由于设备问题所以只训练了是一些个简单的字: 第二选了23个字训练了3000在字迹清晰下能够识别: 类似于默,鼠,鼓,这类文字也能识别,由于训练数据的问题,在测试的时候应尽量写在正 ...

  3. python文件的路径问题补充上一篇内容

    上次的路径问题还没解决就被勒索病毒的木马器给搞了两周多, 拖拖拖到现在又开始纠结路径问题...还是学习能力不足啊... 补充一下路径问题的知识, 毕竟jupyter notebook跟IDE测试的时候 ...

  4. GitHub的简单使用记录

    记录于:2013/4/24 GitHub(网址 https://github.com/)是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub.   G ...

  5. python+matplotlib+绘制不同图标类型

    #==================================================================#首先需要导入两个文件import matplotlib.pypl ...

  6. Win10 安装Oracle11g2、配置PL/SQL Developer11环境

    Oracle11g2的下载地址(下载以下两个压缩包,解压后得到两个oracle目录,放到一起就得到完整的安装文件了): 1.Oracle11g2: oracle-part-1 oracle-part- ...

  7. 传入两坐标点,利用div+css画线

    上样式生成函数代码 lineStyle (x1, y1, x2, y2, lineWidth = 4, color = 'black') { let rectX = x1 < x2 ? x1 : ...

  8. LOJ 6092

    这个题也很没意思 发现q那么大没有用, 不重复的询问有26*n种 所以记录一下就好了 #include<bits/stdc++.h> using namespace std; #defin ...

  9. [JZOJ3588]【中山市选2014】J语言(表达式解析+栈)

    Description J语言作为一门编程语言,诞生于20世纪90年代.............. 好学的小H今天又学到了一种新东西——J语言.显然,J语言的背景已经被小H忘得一干二净了,但是小H仍然 ...

  10. docker之使用System.Drawing生成图片缺少Gdiplus.dll错误

    1.在docker 上找到并运行需要System.Drawing的镜像 然后退出执行另一语句 docker run -it container01 进入镜像以方便安装gdiplus docker ex ...