Linux.NET學習手記(7)


前一篇中,我們簡單的講述了下如何在Linux.NET中部署第一個ASP.NET MVC 5.0的程序。而目前微軟已經提出OWIN並致力於發展VNext,接下來系列中,我們將會向OWIN方向轉戰。

早在三周之前,我偶然的得到了一本《SignalR Programming in Microsoft ASP.NET》,在晚上不工作的時候對這本書進行細細研讀(到目前為止大概只研讀了一半)。雖然目前只有英文原版,但是這本書講得很不錯,即使需要抱着一本詞典來輔助閱讀,那也是值得的。

OWIN的發展,不僅對於傳統的MS.NET(常規運行於Windows中的.NET)方向的開發是一個新的征程,對於我們Linux.NET方向的開發也同樣是一個新的紀元。至於關於OWIN發展所給我們帶來的好處,我這里給各位讀者隨意的列出這么幾條:

  (1)、我們寫的代碼兼容性更高,項目的遷移更可靠(當然前提是你使用的框架是支持OWIN的框架)

  (2)、社區將會更加活躍(由於OWIN具有更開放性,它鼓勵了一批人把自己的創意變成現實)

  (3)、Web Server我們有更多的選擇,可以使用非IIS掛載自己的站點(當然在Windows下,IIS仍然為一個最佳的選擇,不過目前IIS暫時沒有支持OWIN,想嘗試OWIN的暫時讀者只能用Katana,而Linux下的Jexus則已經支持)。

  (4)、更多……

不過,凡事總有兩面性,OWIN所帶來的除了巨大的好處之外,還帶來了一些短期內不好的附加屬性,最直接的就是增加了我們的學習成本,我們需要同時學習VNext之前的.NET知識,以及伴隨VNext新產生的知識(三五年內這個是必須的)。不過我們目前還有Visual Studio 2014還沒有正式的發布,我們還有少許的時間供我們賽跑。等萬事已成定局的時候再來努力,那就只能看着其他人的背影了,畢竟“先來的喝湯,遲來的喝水,不來的啥都沒得喝”我說得對吧?

咳咳,言歸正傳,回到本節的主題,本節中我們將討論學習:

  (1)、在Linux.NET中跑OWIN程序,怎么准備

  (2)、把兩個有趣的SignalR Demo部署向Linux.NET中

  (3)、搭個順風車,NancyFx部署向Linux.NET

本文中的相關代碼已經托管GitHub,大家可以點擊這里進行下載。


 1、我們需要准備些什么

由於OWIN協議提出的時間並沒有太久,並且是許多支持OWIN的框架均是基於FrameWork 4.5的,因此為了您的程序成功部署,請使用最新版的Mono(Mono 3.4)作為Linux.NET的運行環境。這里要特別指出注意的一點,關於“Mono 3.4.tar.gz”這個包,官方所提供的安裝包其實是缺少組件的,因此如果各位讀者采用的是官方包編譯那么一般是報Error的,這里我們提供正確的安裝包,需要的讀者可以點擊這里進行下載。

至於Linux中的OwinHost,Jexus已經率先的給予支持,各位讀者只需移步到官網中下載版本為5.6以上的Jexus即可,也可以點擊這里直接進行下載。

安裝方法與之前的一樣,需要的讀者可以移步到《Linux.NET 學習手記 (1)》查閱。

還有一點需要補充的,本系列的文章中Mono的安裝路徑均為“/usr/local/mono/” 與很多教程中采用的“/usr/”有所不同,因此如果選擇按照本系列教程的讀者,請務必確保安裝步驟每一步都執行完成且正確。近期中收到了不少的朋友Jexus無法運行,找不到Mono。這些基本是沒有設置好環境變量,造成系統掃描目錄的時候不掃描Mono的安裝目錄,繼而找不到bin/Mono。宇內流雲也給我建議能否將安裝目錄由“/usr/local/mono”改為“/usr/”,不過我看了下已有文章,發生改動的話影響就很大了(衷心感覺到寫文章就像寫項目一樣,文章多了項目也變大,改一個基類所有派生的子類都遭殃了),所以就壓着沒有改,各位讀者要千萬的留意(當然,我目錄的選擇也是有故事的,有興趣的讀者可以留言,我可以分享出來)。

我們一直采用的開發模式是Windows中開發,Linux中運行,OWIN中也不例外。Windows中使用Katana作為Host,發布之后采用Jexus作為Host運行。需要了解Katana安裝使用的讀者,也可移步到《如何安裝並簡單的使用OwinHost——Katana》

 

2、部署兩個有趣的SignalR程序到Linux.NET中

SignalR框架作為支持OWIN協議的框架,自然是可以通過掛載到OwinHost的方式部署到Linux.NET中了。在本示例代碼中,里面有兩個基於SignalR的Demo,具體這個Demo是怎么做出來的我在這里就不作講解了,希望以后有機會單獨出一個SignalR的學習系列(待我覺得對SignalR無惑之時),到時再針對SignalR作出詳細的講解,現在就不誤導各位讀者了。

我們拿到代碼之后,用Visual Studio打開它,先講解如何部署Demo1,Demo1是一個簡易的在線聊天室。

首先,我們先在Jexus中新建一個網站配置文件:

然后在里面寫上配置(當然,推薦直接拷貝出新的一份default,然后直接改里面的參數),在最后的一行中加上以下的這條語句:

OwinMain=Jws.OwinAdapter.MsOwin.dll,Jws.OwinAdapter.MsOwin.Adapter

這句話的作用是通知並讓Jexus支持OWIN(我稱它為OWIN模式)。

然后把我們的Demo向Linux中發布:

打開bin目錄,在bin中添加上Jexus針對OWIN的通用適配器(相關組件可以點擊這里進行下載,源碼則可以點擊這里下載)

找到“Microsoft.AspNet.SignalR.Owin.dll”,把后綴改了或者直接刪除(如圖所示)

最后再重啟下Jexus,然后我們就可以用瀏覽器訪問了(網址如圖,高清大圖來的)。

挺有趣的哈~!

至於Demo2,部署方式跟Demo1一致,部署成功之后的效果如下(網址也在圖中):

圖中的那個Guid框會跟着鼠標走,並且鼠標經過任意的瀏覽器,其余瀏覽器均會同步這個Guid的位置,挺有趣好玩的。

這里提示一下:

  (1)、重新部署之后記得重啟Jexus

  (2)、這個Demo可能會令CPU飆升,特別是虛擬機中。

 

3、給NancyFX搭個順風車

可能有個別的讀者懂得怎么使用NancyFX,並且也可能手上有一些基於NancyFX框架的站點。NancyFX跟SignalR一樣,同樣支持OWIN協議,因此也是可以隨時從Windos中向Linux中部署的。事實上,部署NancyFX可說是只是動動手指頭的事情(沒有用到些“特別”的組件、代碼也按照標准的情況下),相比於SignalR簡單多了(前面兩個Demo中SignalR當時是部署不成功的,后來和宇內流雲一同在調呀調呀才調試完畢,這里感謝他的技術支持)。

雖然我本人並沒有使用NancyFX的習慣,不過也順帶讓NancyFX搭個順風車,講講它怎么部署。

示例代碼中,ExtraDemo是基於NancyFX做出來的Demo,我們可以把它部署到項目文件之后,直接向Linux中發布

然后添加上Jexus的適配器:

重啟Jexus,即可完成NancyFX的部署。訪問頁面:


目前,支持OWIN協議的框架除了文中提及的兩個以外,還有其他存在,由於能力有限,那些框架我暫時也沒有嘗試使用過,有興趣的讀者可以自行嘗試,當然也歡迎您將您的心得體會與我們一同分享。

下一篇中,我們將分析OwinHost與OWIN的框架到底是怎么“溝通”的,它又是怎么“驅動”OWIN框架的。下回見。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM