文章出處

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

目錄
步驟一、安裝最新的.NET Core SDK
步驟二、定義源代碼和配置
        定義NuGet.xml
        定義Project.json
        定義入口程序
        定義初始化類型
        定義Controller
步驟三、運行程序
        恢復NuGet包
        編譯執行程序
        向HomeController發起請求

 

步驟一、安裝最新的.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

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <configuration>
   3:  <packageSources>
   4:     <add key="RC2" value="https://www.myget.org/F/aspnetrc2/api/v3/index.json" />
   5:   </packageSources>
   6: /configuration>

定義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”。

   1: {
   2:   "version": "1.0.0-*",
   3:   "buildOptions": {
   4:     "emitEntryPoint": true
   5:   },
   6:   "dependencies": {
   7:     "Microsoft.NETCore.App": {
   8:       "type": "platform",
   9:       "version": "1.0.0-rc2-3002702"
  10:     },
  11:     "Microsoft.AspNetCore.Mvc":"1.0.0-rc2-final",
  12:     "Microsoft.AspNetCore.Server.Kestrel":"1.0.0-rc2-final"
  13:   },
  14:   "frameworks": {
  15:     "netcoreapp1.0": {
  16:       "imports": "dnxcore50"
  17:     }
  18:   }
  19: }

定義入口程序

啟動應用的入口程序定義在Program.cs。如下面的代碼片段所示,我們在這個文件中定義了一個Program類型,并在Main方法中編寫了啟動MVC應用的代碼。具體來說,我們創建了一個WebHostBuilder對象通過調用擴展方法UseKestrel為構建的HTTP消息處理管道注冊了一個Kestrel服務器。在調用UseStartup方法將Startup設置為啟動類型之后,我們調用Build方法創建了一個WebHost對象。我們最終調用Run方法啟動WebHost,進而啟動了我們的MVC應用。

   1: using Microsoft.AspNetCore.Hosting;
   2: using Microsoft.AspNetCore.Builder;
   3:  
   4: public class Program
   5: {
   6:     public static void Main(string[] args)
   7:     {
   8:         new WebHostBuilder()
   9:         .UseKestrel()
  10:         .UseStartup<Startup>()
  11:         .Build()
  12:         .Run();
  13:     }
  14: }  

定義初始化類型

ASP.NET Core應用啟動的時候會先執行一段初始化操作來構建一個完整的HTTP消息處理管道,這些初始化操作定義在Startup.cs。上面調用WebHostBuilder的UseStartup方法指定的類型Startup就定義在這個文件中。如下面的代碼片段所示,我們在ConfigureServices方法中注冊了與MVC相關的服務,并利用Configure方法將實現MVC框架的中間件注冊到消息處理管道中。

   1: using Microsoft.AspNetCore.Builder;
   2: using Microsoft.Extensions.DependencyInjection;
   3:  
   4: public class Startup
   5: {
   6:     public void ConfigureServices(IServiceCollection services)
   7:     {
   8:         services.AddMvc();
   9:     }
  10:  
  11:     public void Configure(IApplicationBuilder app)
  12:     {
  13:         app.UseMvc();
  14:     }
  15: } 

定義Controller

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

   1: using Microsoft.AspNetCore.Mvc;
   2: public class HomeController : Controller
   3: {
   4:     [HttpGet("/")]
   5:     public string Index() 
   6:     {
   7:         return "Hello World";          
   8:     }
   9: }


步驟三、運行程序

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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()