Nancy 学习-自宿主 继续跨平台
Nancy简介
Nancy是一个轻量级的独立的框架,下面是官网的一些介绍:
- Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互。
- Nancy 设计用于处理
DELETE
,GET
,HEAD
,OPTIONS
,POST
,PUT
和 PATCH
等请求方法,并提供简单优雅的 DSL 以返回响应。让你有更多时间专注于你的代码和程序。
官方地址:http://nancyfx.org GitHub:https://github.com/NancyFx/Nancy
创建Nancy项目(自宿主)
Nancy supports running on ASP.NET/IIS, WCF, Self-hosting and any OWIN
Nancy是支持多种宿主,今天我是采用 Self-hosting 也就是自宿主方式。
首先创建一个控制台程序:
然后添加Nuget 引用,我们在搜索框输入Nancy Self,然后搜索,如图:
直接添加第一个即可。
也可以用Nuget命令行添加:Install-Package Nancy.Hosting.Self
添加好以后,在Program.cs 添加如下代码:
using Nancy.Hosting.Self; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NancyDemo { class Program { static void Main(string[] args) { using (var host = new NancyHost(new Uri("http://localhost:9000"))) { host.Start(); Console.ReadLine(); } } } }
然后启动程序,访问 http://localhost:9000 发现404 错误,那是因为我们还没添加任何Module。
下面我们添加一个HomeModule
如图:
public class HomeModule:NancyModule { public HomeModule() { Get["/"] = r => { var os = System.Environment.OSVersion; return "Hello Nancy<br/> System:"+os.VersionString; }; } }
再次启动访问 http://localhost:9000
下面我们再来添加一些强大的路由规则:
Get["/blog/{name}"] = r => { return "blog name " + r.name; };
然后我们访问 http://localhost:9000/blog/linezero ,name就可以获取到linezero
我们再来模仿mvc 的路由规则:
Get["/mvc/{controller}/{action}/{id}"] = r => { StringBuilder mvc = new StringBuilder(); mvc.AppendLine("controller :" + r.controller+"<br/>"); mvc.AppendLine("action :" + r.action + "<br/>"); mvc.AppendLine("id :" + r.id + "<br/>"); return mvc.ToString(); };
我们访问:http://localhost:9000/mvc/blog/linezero/1
分别对应如下:
controller :blog
action :linezero
id :1
更多功能可以参看官方wiki。
完整Module代码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Nancy; namespace NancyDemo { public class HomeModule:NancyModule { public HomeModule() { Get["/"] = r => { var os = System.Environment.OSVersion; return "Hello Nancy<br/> System:"+os.VersionString; }; Get["/blog/{name}"] = r => { return "blog name " + r.name; }; Get["/mvc/{controller}/{action}/{id}"] = r => { StringBuilder mvc = new StringBuilder(); mvc.AppendLine("controller :" + r.controller+"<br/>"); mvc.AppendLine("action :" + r.action + "<br/>"); mvc.AppendLine("id :" + r.id + "<br/>"); return mvc.ToString(); }; } } }
跨平台
前面一篇 http://www.cnblogs.com/linezero/p/5087997.html OWIN 跨平台。
Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .NET and Mono.
官方介绍是可以直接运行在mono上。所以下面我们就来看看一下运行在linux下。首先大家要安装好 mono。
测试系统版本:centos 6.4 mono 3.10.0
将程序上传到linux 下,然后定位到程序目录,通过命令启动程序:mono NancyDemo.exe
程序已成功启动,下面我来访问看看:
可以看到系统标示已经是Linux。
参考链接:
http://www.cnblogs.com/shanyou/archive/2013/04/11/3015654.html
https://github.com/NancyFx/Nancy/wiki
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?