如何在 Asp.Net Core 中使用 Nancy

译文链接:https://www.infoworld.com/article/3393455/how-to-use-nancy-in-aspnet-core.html

Nancy 是一个基于 http 服务的轻量级框架,它提供了对 GET,HEAD,POST,PUT,DELETE 和 PATCH 的Http头支持,并且采用了 约定大于配置 的思路,Nancy 是一个开源的基于 MIT license 一款开源项目,这篇文章准备讨论下如何在 ASP.Net Core 中使用 Nancy。

Nancy 🐂👃的地方在于不依赖于 System.Web 和其他 .NET 类库,有一点非常重要,在用 Nancy 时你不需要考虑当前你要套用什么模式,比如 MVC 或者 WebForm,因为它仅仅是一个响应 http动词 的服务端点,这就很容易让我想起它的使用场景,比如:web api 和 web service。

Nancy 支持多种托管方式,你可以将它运行在 IIS,WCF 或者 Windows Service 中,也可以嵌入到 exe 或者 自托管程序中,在配置和自定义方面也是非常简单的,其他方面的优点包括:内置对依赖注入的支持,也提供了一个dll方便你对 request <-> response 整个流程的测试,接下来我们一起讨论如何使用它吧。

Nancy 下载和配置

在 解决方案管理器 下的 Project 上右击选择 Manage NuGet packages…,在 NuGet Package Manager window 界面搜索 Nancy,然后安装就可以了,如下图所示:

如何在 Asp.Net Core 中使用 Nancy

也可以通过 NuGet Package Manager console 执行命令进行安装。

Install-Package Nancy

一旦 Nancy 安装完毕,接下来就可以把它集成到 ASP.Net Core 中,在 Startup.Configure 方法下新增如下代码:

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

创建自定义的 Nancy module

接下来从 Nancy 框架的基类 NancyModule 上生成一个子类 HomeModule, 代码如下:

public class HomeModule : NancyModule
{
}

这里要注意的是,HomeModule 一定要声明为 public,因为 Nancy 框架的服务发现机制不会检测非 public 的 module。

在 module 中 定义路由机制

可以在 HomeModule 的构造函数中定义 路由机制,那如何定义呢?通常一个 Route 的组成模式为:http verb + pattern + action,也就是 http 动词 + url格式 + 需要执行的方法,当然框架还可以支持一些可选参数,下面是 Route 三元素的样例代码:

public class HomeModule : NancyModule
{
    public HomeModule()
    {
       Get("/", args => GetAllAuthors());
       Get("/{id:int}", args => GetAuthorById(args.id));
    }
}

本质上来说,HomeModule 就是一个定义 http 端点的地方,为了更好的佐证,接下来的代码展示了如何在 HomeModule 中处理三种不同格式的 Get 请求。

 public class HomeModule : NancyModule
    {
        public HomeModule()
        {
            Get("/", args => "Welcome to Nancy.");
            Get("/Test", args => "Test Message.");
            Get("/Hello", args => $"Hello {this.Request.Query["name"]}");
        }
    }

Nancy 不仅仅是一个 轻量级,模块化,高性能 的web框架,安装和配置也是非常容易的,可以用最少的代码实现基本的 http 服务,学习 Nancy 框架更多的知识,可以参考 github:https://github.com/NancyFx/Nancy/wiki/Introduction

原文出处:微信公众号【码农读书 码农读书】

原文链接:https://mp.weixin.qq.com/s/gfRT-wtOoQ5JfIpJ7I8ZOw

本文观点不代表Dotnet9立场,转载请联系原作者。

发表评论

登录后才能评论