天天看點

Nancy之基于Nancy.Owin的小Demo

Nancy之基于Nancy.Owin的小Demo

基于Nancy.Owin的Nancy小Demo,包含從頭到尾的開發步驟、多種運作調試方法、以及結合TinyFox在linux下運作。已添加結合Jexus在Linux下部署!!

前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo

今天我們來做個基于Nancy.Owin的小Demo

開始之前我們來說說什麼是Owin和Katana

什麼是Owin呢?

官網位址:http://owin.org

OWIN在.NET Web Servers與Web Application之間定義了一套标準接口,OWIN的目标是用于解耦Web Server和Web Application。

什麼是Katana呢?

官網位址:http://katanaproject.codeplex.com/

一把銳利的武士刀。

比較詳細的介紹大家可以看看JustRun的文章:

下一代Asp.net開發規範OWIN(1)—— OWIN産生的背景以及簡單介紹

下一代Asp.net開發規範OWIN(2)—— Katana介紹以及使用

介紹這兩個不是今天的主題,是以下面就進入我們的正題了

Nancy之基于Nancy.Owin的小Demo

Nancy.Owin,今天的主角。添加完這個後會自動添加Nancy

Nancy之基于Nancy.Owin的小Demo

還有一個重要的角色是Microsoft.Owin.Host.SystemWeb,同時會自動添加依賴項:Owin和Microsoft.Owin

這個是通過Visual Studio 的Manage NuGet Packages來添加的,也可以在Package Manager Console輸入

  Install-Package Nancy.Owin

  Install-Package Microsoft.Owin.Host.SystemWeb

來完成添加。

我們在添加的Startup.cs中的Configuration中添加一下代碼,将Nancy交給Owin處理

在Modules檔案夾建立HomeModule.cs

這裡我們就顯示一下文字,後面部署會用之前的MovieDemo來完成。

ok,看看效果!

Nancy之基于Nancy.Owin的小Demo

這個是符合我們預期結果的。

注:1)、由于示範這裡用的 Microsoft.Owin.Host.SystemWeb是3.0.1版本的是以不需要做額外的處理,

    如果您的版本是1.x的話,請在web.config中添加如下配置

    在新版本中簡化了我們的操作,可見還是很貼心的 O(∩_∩)O

   2)、如果您需要用到除了Get、Post之外的方法(Put、Head、Delete)還需要在system.webServer節點做相應的修改

到這裡,我們可以發現,我們運作和調試還是借助的IIS Express。

我們有沒有辦法不用IIS Express來運作和調試呢?

當然是有的!!!而且不止一種!!下面我們就分别來介紹一下!!

方式一:借助OwinHost.exe

可以參考 Glavs的這篇部落格: Owin, Katana and getting started

通過啟動外部程式來實作!

在我們項目的屬性中的web頁籤中做如下的修改

Nancy之基于Nancy.Owin的小Demo

就修改一下屬性即可。

再次運作,會發現啟動了一個OwinHost.exe的程式,然後我們打開浏覽器去看看

Nancy之基于Nancy.Owin的小Demo

效果是不是一樣啊,這就是第一種方式!

方式二:借助TinyFox(Jexus的姐妹)

這裡我用的是TinyFox V2.3.2 跨平台通用版

下載下傳位址: TinyFox V2.3.2 跨平台通用版 

具體要怎麼做呢?讀讀解壓後的ReadMe.txt和看看裡面附帶的demo也就大概知道個是以然了。

做法跟katana的方式類似,都是通過啟動外部程式來實作的。

但是差別還是有的。

我們需要添加一個Adapter.cs(這個我們可以在解壓後的TinyFox中的Demo裡找到,修改一下namespace即可!)

做完這步,我們也是需要修改項目屬性的web頁籤内容

Nancy之基于Nancy.Owin的小Demo

做完上述工作,看看效果

Nancy之基于Nancy.Owin的小Demo

一樣的結果!!

前面也提到了,這裡我們部署的是用之前的MovieDemo,這裡是對其進行了修改,使其滿足我們今天的主題。

這次的部署是結合TinyFox這隻小狐狸來完成的。由于篇幅有點長,是以修改的代碼不在這裡展示,稍後會上傳到GitHub

這裡列出項目結構和進行一些說明:

Nancy之基于Nancy.Owin的小Demo

會發現比上面示範的案例多了幾個類:RazorConfig.cs和SiteRootPath.cs

其中

RazorConfig.cs是Razor的配置,因為我們這個Demo用到了Razor這個視圖引擎,如果沒用到可以不用這個。

SiteRootPath.cs是提供網站實體路徑的類

這兩個類我們都是能在TinyFox的Demo裡面找到的!

現在我們将釋出後的内容上傳到 /var/www/owinnancy

在 /var/www/ 下建立一個檔案夾owinnancy : mkdir owinnancy

然後進入 tinyfox的目錄 cd /usr/tinyfox-2.3

執行./fox.sh -root 

ar/www/owinnancy -p 8181 

Nancy之基于Nancy.Owin的小Demo

已經啟動成功了,下面就是通路看看OK否。打開浏覽器通路這個demo試試。順便放上幾張圖看看效果。 

Nancy之基于Nancy.Owin的小Demo
Nancy之基于Nancy.Owin的小Demo
Nancy之基于Nancy.Owin的小Demo

 幾點必要的說明

1、宇内大大在ReadMe.txt中是這樣描述的(我隻截取了部分内容)

  問:網站檔案放哪兒?

      答:在TinyFox所在檔案夾下的有一個名叫“site”的檔案夾,這個檔案夾中包括兩個子目錄,一個是wwwroot,

      使用者存放傳統的網站檔案或靜态檔案,另一個是approot,用于存放使用者的程式集及其相關依賴的dll,當然,

     dll檔案也可以存放在wwwroot下的bin檔案夾中;

  問:如果我的網站檔案夾不在tinyfox預設的位置,怎麼設定?

    答:在TinyFox.exe 後邊加上一個形如“-root 路徑”這樣的參數,如:“tinyfox -root d:\mysite\wwwroot”

   由于習慣問題,我是将網站放在 /v

ar/www/下的某個檔案夾,是以是采用了自定義路徑的形式。

2、次要說明,本來這篇是要在昨天發的,但因有事沒能及時釋出!再說昨天是科比81分之夜的十周年,是以取8181端口紀念一下。O(∩_∩)O

2016.01.25重要補充:Linux部署結合Jexus

前面的部署是結合TinyFox來完成的,現在補充結合Jexus的方式部署的注意事項。

由于昨天嘗試在jexus部署時沒有成功,是以就沒往這個方面寫。剛才得到宇内大大的指點,已經把這個Demo(符合Owin标準)結合Jexus部署成功!

下面是他的原話

"不需要修改源碼,隻需要在網站配置檔案中,在OwinMain=xxx.dll 這一行,指定含有“擴充卡”的那個dll就行了。"

這個擴充卡指的是我們源碼中Adapter.cs,含有的那個dll自然就是MovieDemoWithOwin.dll

二話不說,我們試試

修改我們這個的網站的配置檔案: vim /usr/jexus/siteconf/owinnancy

基本是保持預設的配置。具體的配置如下:

Nancy之基于Nancy.Owin的小Demo

然後重新開機我們的網站 /usr/jexus/./jws restart owinnancy

Nancy之基于Nancy.Owin的小Demo

重新開機OK!通路試試

Nancy之基于Nancy.Owin的小Demo

成功了!!

另外還要說一句,如果沒有加至關重要的那一句,通路就是一片空白!

Nancy之基于Nancy.Owin的小Demo

最後是部署所用的MovieDemo,其實跟之前的沒多少差别。

下載下傳位址:

 https://github.com/hwqdt/Demos/tree/master/NancyDemoWithOwin/MovieDemoWithOwin

下一篇将會是對 Self Hosing 的一點點補充,敬請期待。

Nancy之基于Nancy.Owin的小Demo

如果您認為這篇文章還不錯或者有所收獲,可以點選右下角的【推薦】按鈕,因為你的支援是我繼續寫作,分享的最大動力!

作者:Catcher Wong ( 黃文清 )

來源:http://catcher1994.cnblogs.com/

聲明:

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果您發現部落格中出現了錯誤,或者有更好的建議、想法,請及時與我聯系!!如果想找我私下交流,可以私信或者加我微信。

繼續閱讀