Nancy 學習-繼續跨平臺

jopen 8年前發布 | 23K 次閱讀 MVC模式 Mono .NET開發

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();
        };
    }
}

}

View Code</pre>

跨平臺

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

如果你覺得本文對你有幫助,請點擊“ 推薦 ”,謝謝。

來自: http://www.cnblogs.com/linezero/p/5121887.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!