當我們要接到一個新的專案的時候,我們第一時間想到的是用微軟的MVC框架,但是你是否想過微軟的MVC是不是有點笨重?我們這個專案用MVC是不是有點大材小用?有沒有可以替代MVC的東西呢?看到這裡也許你會反問我,微軟的MVC到底什麼地方不好了?這個暫且不說,我們先認識一下Nancy,來了解一下他和MVC的不同。
什麼是Nancy呢?如果你學習過Ruby的話,就會知道Ruby中有個框架叫做Sinatra,Nancy就是Sinatra的.Net版本。如果你感覺微軟的MVC過於笨重、過於繁瑣,那麼Nancy可能就是你苦苦尋找的東西。
- Nancy是一個輕量級的獨立的框架,下面是官網的一些介紹:
- Nancy 是一個輕量級用於構建基於 HTTP 的 Web 服務,基於 .NET 和 Mono 平臺,框架的目標是保持儘可能多的方式,並提供一個super-duper-happy-path所有互動。
- Nancy 設計用於處理
DELETE
,GET
,HEAD
,OPTIONS
,POST
,PUT
和 PATCH
等請求方法,並提供簡單優雅的 DSL 以返回響應。 - Nancy和Asp.net MVC原理相似,但有自己的一套路由機制,在使用上更加易用,可以用Nancy快速開發一些網站。
- Nancy並不依賴任何現有的框架,所以他可以執行在任何平臺上面。
下面是官方文件的一些說明:(個人表示E文不好,自己可以看懂點,翻譯出來就感覺不是那麼回事了,這裡就不獻醜了,大家簡單看看吧)
關於super-duper-happy-path,官網也給出瞭解釋,下面是部分內容:
哪位英語好的,給大家翻譯下,分享一下哈~~我這裡就不廢話了!下面給出Nancy的官網地址,大家可以看下:
Nancy官網地址:http://nancyfx.org/
GitHub文件地址:https://github.com/NancyFx/Nancy/wiki/Documentation
下面我們來寫一個Nancy的Hello,world專案,來學習一下Nancy的簡單使用,開啟Visual Studio,新建空Web專案:
選擇空模板,點選確定,建好專案以後,接下來我們開始通過Nuget安裝Nancy,一共需要安裝下面三個包,程式碼如下:
Install-Package Nancy //Nancy
Install-Package Nancy.Hosting.Aspnet //Nancy For Asp.net
Install-Package Nancy.Viewengines.Razor //提供Razor檢視支援,感覺很意外吧,我們還可以繼續使用Razor
安裝完成後,我們開始搭建專案的基本結構,首先Nancy也是有自己的規則的,Nancy工程中控制器的部分必須放在Modules資料夾中,檢視部分必須放在Views資料夾中,所以在專案中新增兩個資料夾Modules和Views,再分別新增HomeModule類和Razor頁面Home,新增完成後專案結構如圖:
View這裡先不用,先建好準備著,下面我們來顯示Hello,world,開啟HomeModule.cs,修改其程式碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Nancy; namespace NancyStudy.Modules { public class HomeModule : NancyModule { //注意:這裡是建構函式 public HomeModule() { Get["/"] = parameters => "Hello World"; } } }
首先我們引入Nancy的名稱空間,然後我們的類要繼承自NancyModule,在ASP.NET MVC中所有控制器都繼承Controller,在Nancy中,同樣所有的‘控制器’都必須繼承NancyModule類。
注意:在Nancy中,所有的的路由資訊都是在構造方法中的,當程式執行時,會遍歷所有所有的構造方法,如果出現路由資訊相同時,預設選擇最後遍歷的那一個。
好了,就這麼多程式碼,Views裡面的東西先不去管它,我們按F5,執行專案,編譯通過,然後再瀏覽器中輸入如下資訊:
到這裡,我們就成功的寫完了Nancy的Hello,world,是不是很簡單啊~~
下面,我們來顯示剛剛新建的View,我們修改Home.cshtml的內容,如下:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Nancy</title> </head> <body> <div> <h1>Hello,Nancy!</h1> </div> </body> </html>
在修改我們的構造方法,如下:
public class HomeModule : NancyModule { //注意:這裡是建構函式 public HomeModule() { Get["/"] = p => { return View["/Home"]; }; } }
好了,按F5執行,瀏覽器顯示結果如圖:
這裡要注意的是瀏覽器位址列,一定是網站根目錄,不是指向我們的Home.cshtml檔案,否則會提示找不到頁面,如圖:
這是因為你在開啟Home.cshtml的頁面按下了F5,Visual Studio將頁面指向了當前編輯頁面,這個大家應該都知道的,在這裡說明一下,否則在這裡搞半天不知道錯在哪,是件很鬱悶的事。
好了,今天就先說到這裡,下一篇繼續我們的Nancy學習~~
作者:雲霏霏
部落格地址:http://www.cnblogs.com/yunfeifei/
宣告:本部落格原創文字只代表本人工作中在某一時間內總結的觀點或結論,與本人所在單位沒有直接利益關係。非商業,未授權,貼子請以現狀保留,轉載時必須保留此段宣告,且在文章頁面明顯位置給出原文連線。