• Nancy in .Net Core学习笔记


    前言

    去年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"

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

    附源代码

  • 相关阅读:
    产品逻辑中的—B端技术常识:同步异步接口模式
    高德地图0907
    高德地图出异常
    svn提交报错
    高德地图demo
    JS中一些特殊的方法
    video标签的学习
    document.getElementById('file').files[0]的jquery写法
    layer请求设置遮罩
    easypoi入门<1
  • 原文地址:https://www.cnblogs.com/lwqlun/p/9593600.html
Copyright © 2020-2023  润新知