ASP.NET Core 運行原理剖析1:初始化WebApp模版並運行

來源:互聯網
上載者:User

標籤:輸入   context   config   檔案中   package   core   get   rsh   block   

  • ASP.NET Core 運行原理剖析1:初始化WebApp模版並運行
    • 核心架構
    • ASP.NET Core APP 建立與運行
    • 總結

之前兩篇文章簡析.NET Core 以及與 .NET Framework的關係和.NET Core的構成體系從總體上介紹.NET Core,接下來計劃用一個系列對ASP.NET Core的運行原理進行剖析。

ASP.NET Core 是新一代的 ASP.NET,早期稱為 ASP.NET vNext,並且在推出初期命名為ASP.NET 5,但隨著 .NET Core 的成熟,以及 ASP.NET 5的命名會使得外界將它視為 ASP.NET 的升級版,但它其實是新一代從頭開始打造的 ASP.NET 核心功能,因此微軟宣布將它改為與 .NET Core 同步的名稱,即 ASP.NET Core。

ASP.NET Core 可運行於 Windows 平台以及非 Windows 平台,如 Mac OSX 以及 Ubuntu Linux 作業系統,是 Microsoft 第一個具有跨平台能力的 Web 開發架構。

微軟在一開始開發時就將 ASP.NET Core 開源,因此它也是開源項目的一員,由 .NET 基金會 (.NET Foundation) 所管理。

正式版的.NET Core已於今天發布(2016年6月27日),具體可看微軟 .NET Core 1.0 正式發布下載

核心架構

ASP.NET Core 在 .NET Core 的基礎上發展,目前規劃的功能有:

  • ASP.NET Core MVC: ASP.NET Core MVC 提供了開發動態web網站的API,包括了WebPages 和 WebAPI ,最終可運行在IIS 或 自託管(self-hosted)的伺服器中。

  • DependencyInjection: 包含了通用的依賴注入介面,用於在ASP.NET Core MVC中使用。

  • Entity Framework Core: 與之前版本的EntityFramework版本類似是一個輕量級的ORM架構,包括了Linq,POCO和Codefirst的支援。

  • ASP.NET Core Identity: 用於在ASP.NET Core web applications構建使用者權限系統的架構,包括了membership、login等功能,同時也可以方便的擴充和自訂。

ASP.NET Core APP 建立與運行

一、安裝the .NET Core SDK for Windows(Linux、MAC)

以Windows為例,(),
安裝完成後可以用命令dotnet -v查看版本號碼。

C:\Users\stephen>dotnet -vTelemetry is: Enabled.NET Command Line Tools (1.0.0-preview1-002702)Usage: dotnet [common-options] [command] [arguments]

二、命令列產生模版項目

開發一個webapp可以從零開始建立檔案,也可以通過命令列產生一個空的項目模版,下面的代碼用於從零開始建立模版。

mkdir aspnetcoreappcd aspnetcoreappdotnet new

依次執行命令後,便可在當前路徑下,產生模版。

 

模版包括以下三個檔案:

  • project.json:

主掌項目的運行期的配置設定,包含項目的包參考 (Package References)、項目的基本設定、引導指令、包含或排除指定目錄、以及建造時的相關事件指令等。

  • Program.cs:

程式入口檔案

  • project.lock.json:

與project.json相比,是project.json檔案中引用包的完整引用列表。

三、修改project.json

project.json是用於定義項目需要依賴的資源,每個WebApp 需要一個hosting 程式(IIS、IISExpress等),而此次使用Kestrel (什麼是kestrel?),在project.json中加入對Kestrel的依賴代碼清單如下。

"dependencies": {  "Microsoft.NETCore.App": {    "type": "platform",    "version": "1.0.0-rc2-3002702"  },  "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final"},

四、下載依賴包部署網站

在WebApp部署時(dotnet restore)根據project.json的依賴檔案,依靠nuget下載依賴包,完成對整個程式的restore。(類似於Nodejs的 npm restore)

C:\Users\stephen\.nuget\packages可以看到nuget已經下載到本地的包,在開始部署前nuget是不會載入依賴包,可看到目前nuget並沒有下載任何包。

 

然後執行命令

dotnet restore

可以看到,nuget已經自動將需要依賴包下載到本地

 

五、添加Startup.cs檔案

對於一個ASP.NET Core 程式而言,Startup Class 是必須的。ASP.NET Core在程式啟動時會從assemblies中找到名字叫Startup的類,如果存在多個名為Startup的類,則會先找到項目根名稱空間下的Startup類。

在Startup必須定義Configure方法,而configureServices方法則是可選的,方法會在程式第一次啟動時被調用,類似傳統的ASP.NET MVC的路由和應用程式狀態均可在Startup中配置,也可以在此安裝所需中介軟體等等。Startup的詳細功能的對於startup.cs中的configure和configureServices方法會在後續文章中詳解

在剛才檔案路徑下添加Startup.cs檔案,並複製如下代碼:

using System;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http;namespace aspnetcoreapp{    public class Startup    {        public void Configure(IApplicationBuilder app)        {            app.Run(context =>            {                return context.Response.WriteAsync("Hello from ASP.NET Core!");            });        }    }}

六、Web Hosting 配置

在Program.cs檔案中複製如下代碼,指定WebApp宿主程式為Kestrel:

using System;using Microsoft.AspNetCore.Hosting;namespace aspnetcoreapp{    public class Program    {        public static void Main(string[] args)        {            var host = new WebHostBuilder()                .UseKestrel()                .UseStartup<Startup>()                .Build();            host.Run();        }    }}

七、編譯

dotnet build

程式碼完成後,需要調用Roslyn編譯器將代碼編譯為assemblies,儲存至bin檔案夾中。按照上一節所述(簡析 .NET Core 構成體系),
ASP.NET Core App 可以編譯為IL的assemblies外,還可以通過native直接編譯為機器碼。

 

八、啟動

輸入啟動命令,Kestrel託管WEB程式,並在5000連接埠監聽,至此整個程式啟動起來。

dotnet run

 

 

總結

本節介紹了ASP.NET Core 項目從建立、配置、編譯、發布、啟動並執行過程,ASP.NET Core與之前的ASP.NET相比具有更高的透明度和靈活性,可以快速的在各個作業系統中開發與運行。

本節使用Windows作業系統,但目前微軟也在 linux 和 mac 下提供了類似的命令列工具(連結地址),方便在 linux 和 mac 下開發與部署,在後面文章中會詳細講解,本節不再累述。

帥蟲哥 出處: http://www.cnblogs.com/vipyoumay/p/5620373.html

參考連結

【1】 https://docs.asp.net/en/1.0.0-rc2/getting-started.html

ASP.NET Core 運行原理剖析1:初始化WebApp模版並運行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.