Nancy in .Net Core学习笔记 - 初识Nancy

时间:2021-07-03 04:01:37

前言

去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下。

注: 本文中大部分内容都是对官网文档的翻译和总结。

简介

Nancy in .Net Core学习笔记 - 初识Nancy

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

Nancy in .Net Core学习笔记 - 初识Nancy

Nancy in .Net Core学习笔记 - 初识Nancy

项目创建成功之后,使用Nuget引入Nancy库, 选择(2.0.0-barneyrubble)版本

Nancy 2.0.0-barneyrubble是基于.NET Stardard的项目,所以可以在.NET Core中使用

Nancy in .Net Core学习笔记 - 初识Nancy

注意:写这个实例代码的时候,我使用的是.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

怎么样,看起来是不是很简洁。

附源代码