Linux.NET學習手記(7)

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

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

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

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

  (2)、社區將會更加活躍(因爲OWIN具備更開放性,它鼓勵了一批人把本身的創意變成現實)瀏覽器

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

  (4)、更多……學習

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

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

  (1)、在Linux.NET中跑OWIN程序,怎麼準備spa

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

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

本文中的相關代碼已經託管GitHub,你們能夠點擊這裏進行下載。


 一、咱們須要準備些什麼

因爲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》

 

二、部署兩個有趣的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飆升,特別是虛擬機中。

 

三、給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框架的。下回見。

相關文章
相關標籤/搜索