Nancy入門
當我們要接到一個新的項目的時候,我們第一時間想到的是用微軟的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/