在.NET Core 1.0.0 RC2即將正式發(fā)布之際,我也應(yīng)應(yīng)景,針對(duì)RC2 Preview版本編寫(xiě)一個(gè)史上最簡(jiǎn)單的MVC應(yīng)用。由于VS 2015目前尚不支持,VS Code的智能感知尚欠火候,所以我們直接采用最原始的記事本來(lái)編寫(xiě)這個(gè)MVC應(yīng)用。 步驟一、安裝最新的.NET Core SDK我們可以根據(jù)自身的操作系統(tǒng)環(huán)境從https://github.com/dotnet/cli上下載.NET Core最新的SDK,這個(gè)SDK包含.NET Core Runtime和一些有用工具(比如命令行)。如果你已經(jīng)安裝了老舊的版本,我個(gè)人建議你先將其卸載。 目前的版本為1.0.0-preview1-002702,我們可以執(zhí)行dotnet –version命令確認(rèn)是否是這個(gè)版本。 步驟二、定義源代碼和配置我們創(chuàng)建一個(gè)目錄(假設(shè)為C:HelloWorld)來(lái)存放MVC應(yīng)用所有的源文件。下圖展現(xiàn)了定義在這個(gè)目錄下的所有文件。 定義NuGet.config我們?cè)贜uGet.config文件中定義應(yīng)用程序使用的NuGet包所在的站點(diǎn)地址(https://www./F/aspnetrc2/api/v3/index.json
定義Project.json定義在Project.json文件中的所有配置如下所示,我們會(huì)發(fā)現(xiàn)它與RC1中的Project.json不太一樣。RC2中,我們可以向定義普通依賴(lài)一樣來(lái)選擇運(yùn)行時(shí)(Microsoft.NETCore.App),或者說(shuō)運(yùn)行時(shí)本質(zhì)已經(jīng)成為了一個(gè)一般意義上的以來(lái)。除了這個(gè)針對(duì)運(yùn)行時(shí)的依賴(lài),我們還添加了兩個(gè)依賴(lài),它們分別是“Microsoft.AspNetCore.Mvc”和“Microsoft.AspNetCore.Server.Kestrel”,前者定義了ASP.NET Core MVC的核心框架,后者則提供了一個(gè)針對(duì)Kestrel的Server (ASP.NET Core管道中的Server專(zhuān)門(mén)負(fù)責(zé)請(qǐng)求的監(jiān)聽(tīng)、接收和回復(fù))。我們?cè)凇癴ramework”節(jié)點(diǎn)添加了一個(gè)名為“netcoreapp1.0”的框架,之前的名稱(chēng)叫做“dnxcore50”。
定義入口程序啟動(dòng)應(yīng)用的入口程序定義在Program.cs。如下面的代碼片段所示,我們?cè)谶@個(gè)文件中定義了一個(gè)Program類(lèi)型,并在Main方法中編寫(xiě)了啟動(dòng)MVC應(yīng)用的代碼。具體來(lái)說(shuō),我們創(chuàng)建了一個(gè)WebHostBuilder對(duì)象通過(guò)調(diào)用擴(kuò)展方法UseKestrel為構(gòu)建的HTTP消息處理管道注冊(cè)了一個(gè)Kestrel服務(wù)器。在調(diào)用UseStartup方法將Startup設(shè)置為啟動(dòng)類(lèi)型之后,我們調(diào)用Build方法創(chuàng)建了一個(gè)WebHost對(duì)象。我們最終調(diào)用Run方法啟動(dòng)WebHost,進(jìn)而啟動(dòng)了我們的MVC應(yīng)用。
定義初始化類(lèi)型ASP.NET Core應(yīng)用啟動(dòng)的時(shí)候會(huì)先執(zhí)行一段初始化操作來(lái)構(gòu)建一個(gè)完整的HTTP消息處理管道,這些初始化操作定義在Startup.cs。上面調(diào)用WebHostBuilder的UseStartup方法指定的類(lèi)型Startup就定義在這個(gè)文件中。如下面的代碼片段所示,我們?cè)贑onfigureServices方法中注冊(cè)了與MVC相關(guān)的服務(wù),并利用Configure方法將實(shí)現(xiàn)MVC框架的中間件注冊(cè)到消息處理管道中。
定義Controller我們?cè)贖omeController中定義了MVC應(yīng)用中唯一的一個(gè)Controller,并按照如下的形式定義了一個(gè)唯一的Action方法。這個(gè)Action方法返回一個(gè)簡(jiǎn)單的字符串“Hello World”,并映射為應(yīng)用的根地址(“/”)
步驟三、運(yùn)行程序RC2提供了一個(gè)非常強(qiáng)大的命令行(dotnet),包括恢復(fù)NuGet包以及編譯執(zhí)行.NET應(yīng)用的相關(guān)操作都可以通過(guò)它來(lái)完成 恢復(fù)NuGet包我們打開(kāi)命令行工具并切換到應(yīng)用所在的目錄,執(zhí)行dotnet restore命令恢復(fù)在project.json中使用的NuGet包。 編譯執(zhí)行程序我們直接執(zhí)行dotnet build命令對(duì)整個(gè)應(yīng)用實(shí)施編譯,然后執(zhí)行dotnet run命令啟動(dòng)我們的MVC應(yīng)用。 向HomeController發(fā)起請(qǐng)求當(dāng)程序啟動(dòng)后,Kestrel服務(wù)器會(huì)利用5000端口對(duì)HTTP請(qǐng)求實(shí)施監(jiān)聽(tīng)。由于定義在HomeController的Action方法Index被映射為應(yīng)用根地址,所以我們利用瀏覽器向該地址發(fā)送請(qǐng)求會(huì)得到這個(gè)Action方法的響應(yīng)結(jié)果。 |
|
|
來(lái)自: weijianian > 《asp.net》