码迷,mamicode.com
首页 > 其他好文 > 详细

Nancy简介

时间:2016-05-18 21:15:16      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

Nancy简介

Nancy是一个轻量级的独立的框架,下面是官网的一些介绍:

  • Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互。
  • Nancy 设计用于处理 DELETEGETHEADOPTIONSPOSTPUT和 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();
            };
        }
    }
}
View Code

 

跨平台

 前面一篇 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

Nancy简介

标签:

原文地址:http://www.cnblogs.com/zhyp/p/5506218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!