ASP.NET MVC - ASP.NET MVC vNext ( MVC 6) 發佈與self host

20 June 2014 — Written by Sky Chang
#ASP.NET MVC#NuGet#Visual Studio

此回介紹ASP.NET MVC的一個重大功能,self host與publish。

從MVC 5開始,ASP.NET MVC就開始計畫與實作傳說中的OWIN,OWIN的全名就是Open Web Interface for .Net;我們思索一下,從以前開始,ASP.NET都必須要掛載在IIS之上,而ASP.NET也從以前至今,都必須相依於system.web等等的Lib;換言之,沒有IIS,ASP.NET也就等於死翹翹…

而這個混亂的時代下,就出現了OWIN這種東西,將原本的相依性,透過定義好一個一個的介面,來達到未來抽換的一個目的。

好啦,講白一點,就是可以不用IIS就可以讓ASP.NET運作啦!!而所謂的self host,就是用命令模式的方式,讓程式在那邊監聽瀏覽器等的請求,而不用IIS啦!!

而到了新版的ASP.NET MVC這功能就更加強大了,所以第四回合,就來體驗一下吧!!

首先,我們要先透過NuGet載入一個監聽器,也就是底下的Microsoft.AspNet.Server.WebListener這個字串,當然我們要在project.json底下去新增… ( UI介面的趕快出來吧… );完成之後,我們再加上下面這段Commands,這個Commands可以定義要用哪個port監聽等等之類的命令列參數。

image

全部的json config如下,有需要的人就直接copy吧~

{
    "dependencies": {
        "Helios": "0.1-alpha-*",
        "Microsoft.AspNet.Mvc": "0.1-alpha-*",
        "Microsoft.AspNet.Server.WebListener": "0.1-alpha-*"
    },
    "commands": { /* Change the port number when you are self hosting this application */ 
        "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
    },
    "configurations": {
        "net45": {},
        "k10": { }
    }
}

完成後,我們就可以在命令列下使用k web這個指令來將常駐run起來 ( 可以參考KVM那篇 )。

( PS 因為我們Commands底下是"web" : xxxxx,所以用k web,如果是其他的字,例如"web8080" : xxx 那就要輸入k web8080,換言之,我們可以定義多個,來達到不同的目的。 )

好self host KVM那篇已經試驗過了,接下來我們看一下佈署。

基本上佈署的設定和之前沒啥兩樣。

image

但我們這邊準備要把WEB丟到USB ( 假設要丟到USB…實際上我是把他傳到另外一台電腦上面去RUN ),所以這邊選擇要佈署到File System。

image

就…打一下Customer Profile名稱…

image

然後選擇目錄。

image

完成後,其實可以發現,現在多了一個web.cmd這個檔案了;另外,大家可能會覺得…為啥有一堆MVC的Code…那是因為我們上一篇有把MVC的Source Code加入進來。

當然,這個這樣是不安全的,但大家也不用擔心啦,離整個發表,還有一年的時間(2015年),我們先體驗過程就好了~~

image

這時候,我們執行web.cmd,就可以得到如下圖的結果。

image

另外,如果copy到另外一台電腦,也不用做甚麼事情,就可以順利run了 ( 我的筆電上是沒有裝KVM的,但也是一樣可以跑得很開心~~ )

image

當然,能RUN起來的秘密,其實就是他把所有需要的東西,全部都放到Package裡面去了。( 當然,要run的電腦上還是要裝.Net Framework啦…不然空有dll,沒有環境可以Run,當然還是不行;而這次透過這方式,可以讓Server端不用安裝一堆Package,而變成動態下載,也因此,我們不用再去找相對應的版本對應包,更加的方便了!!

image

大致上就這樣!!以後網頁也可以帶著走了喔!!

Sky & Study4.TW