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

前言

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

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

简介

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中使用ui

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

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.UseOwin(x => x.UseNancy());
    }

接下来咱们添加一个新类HelloModule, HelloModule继承自NancyModuleblog

public class HelloModule : NancyModule
    {
        public HelloModule()
        {
            Get("/", p => "Hello World");
        }
    }

这里Get方法中有2个参数,第一个参数是相似于NET Core MVC Route的路由模板,第二个参数是当用户请求的Url符合该路由模板的时候,作出的响应, 至关于NET Core MVC中的action。继承

至此一个最简单的Nancy应用就完成了,下面咱们启动项目, 网站中正确显示了"Hello World"

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

附源代码

相关文章
相关标签/搜索