.NET Core釋出在即,我們試著用記事本編寫一個ASP.NET Core RC2 MVC程式

發表於2016-05-16

在.NET Core 1.0.0 RC2即將正式釋出之際,我也應應景,針對RC2 Preview版本編寫一個史上最簡單的MVC應用。由於VS 2015目前尚不支援,VS Code的智慧感知尚欠火候,所以我們直接採用最原始的記事本來編寫這個MVC應用。[原始碼從這裡下載]

步驟一、安裝最新的.NET Core SDK

我們可以根據自身的作業系統環境從https://github.com/dotnet/cli上下載.NET Core最新的SDK,這個SDK包含.NET Core Runtime和一些有用工具(比如命令列)。如果你已經安裝了老舊的版本,我個人建議你先將其解除安裝。

rc2

目前的版本為1.0.0-preview1-002702,我們可以執行dotnet –version命令確認是否是這個版本。

image

步驟二、定義原始碼和配置

我們建立一個目錄(假設為C:HelloWorld)來存放MVC應用所有的原始檔。下圖展現了定義在這個目錄下的所有檔案。

image

定義NuGet.config

我們在NuGet.config檔案中定義應用程式使用的NuGet包所在的站點地址(https://www.myget.org/F/aspnetrc2/api/v3/index.json

定義Project.json

定義在Project.json檔案中的所有配置如下所示,我們會發現它與RC1中的Project.json不太一樣。RC2中,我們可以向定義普通依賴一樣來選擇執行時(Microsoft.NETCore.App),或者說執行時本質已經成為了一個一般意義上的以來。除了這個針對執行時的依賴,我們還新增了兩個依賴,它們分別是“Microsoft.AspNetCore.Mvc”和“Microsoft.AspNetCore.Server.Kestrel”,前者定義了ASP.NET Core MVC的核心框架,後者則提供了一個針對Kestrel的Server (ASP.NET Core管道中的Server專門負責請求的監聽、接收和回覆)。我們在“framework”節點新增了一個名為“netcoreapp1.0”的框架,之前的名稱叫做“dnxcore50”。

定義入口程式

啟動應用的入口程式定義在Program.cs。如下面的程式碼片段所示,我們在這個檔案中定義了一個Program型別,並在Main方法中編寫了啟動MVC應用的程式碼。具體來說,我們建立了一個WebHostBuilder物件通過呼叫擴充套件方法UseKestrel為構建的HTTP訊息處理管道註冊了一個Kestrel伺服器。在呼叫UseStartup方法將Startup設定為啟動型別之後,我們呼叫Build方法建立了一個WebHost物件。我們最終呼叫Run方法啟動WebHost,進而啟動了我們的MVC應用。

定義初始化型別

ASP.NET Core應用啟動的時候會先執行一段初始化操作來構建一個完整的HTTP訊息處理管道,這些初始化操作定義在Startup.cs。上面呼叫WebHostBuilder的UseStartup方法指定的型別Startup就定義在這個檔案中。如下面的程式碼片段所示,我們在ConfigureServices方法中註冊了與MVC相關的服務,並利用Configure方法將實現MVC框架的中介軟體註冊到訊息處理管道中。

定義Controller

我們在HomeController中定義了MVC應用中唯一的一個Controller,並按照如下的形式定義了一個唯一的Action方法。這個Action方法返回一個簡單的字串“Hello World”,並對映為應用的根地址(“/”)

步驟三、執行程式

RC2提供了一個非常強大的命令列(dotnet),包括恢復NuGet包以及編譯執行.NET應用的相關操作都可以通過它來完成

恢復NuGet包

我們開啟命令列工具並切換到應用所在的目錄,執行dotnet restore命令恢復在project.json中使用的NuGet包。

image

編譯執行程式

我們直接執行dotnet build命令對整個應用實施編譯,然後執行dotnet run命令啟動我們的MVC應用。

image

向HomeController發起請求

當程式啟動後,Kestrel伺服器會利用5000埠對HTTP請求實施監聽。由於定義在HomeController的Action方法Index被對映為應用根地址,所以我們利用瀏覽器向該地址傳送請求會得到這個Action方法的響應結果。

image

相關文章