ASP.NET Core原理概述

來源:互聯網
上載者:User

標籤:type   web app   .net core   environ   file   不同   集合   ted   war   

 ASP.NET Core 是一個控制台應用程式,在其 main 方法中建立一個Web伺服器,以下是program.cs中的代碼:

using Microsoft.AspNetCore;using Microsoft.AspNetCore.Hosting;namespace WebApplication5{    public class Program    {        public static void Main(string[] args)        {            BuildWebHost(args).Run();        }        public static IWebHost BuildWebHost(string[] args) =>            WebHost.CreateDefaultBuilder(args)                .UseStartup<Startup>()                .Build();    }}

 Main 方法調用 WebHost.CreateDefaultBuilder ,它遵循建造者模式來建立  web application host 。 builder   定義了Web伺服器(例如UseKestrel)和啟動類(UseStartup)方法。 在上述樣本中,Kestrel Web伺服器將自動分配。 ASP.NET Core‘s web host 將嘗試在IIS上運行(如果可用)。 其他Web伺服器(如HttpSys)可以通過調用合適的擴充方法來使用。  UseStartup 將在下一節進一步介紹。

 IWebHostBuilder 是 WebHost.CreateDefaultBuilder 方法的傳回值類型,提供了許多可選方法。 其中一些方法包括 UseHttpSys  ,用於在HttpSys中託管應用程式,以及 UseContentRoot ,用於指定根內容目錄。 Build 和 Run 方法用於構建 IWebHost 對象,該對象將承載應用程式並開始監聽HTTP請求。

Startup

The Startup class is where you define the request handling pipeline and where any services needed by the application are configured. The Startup class must be public and contain the following methods:

 WebHostBuilder 上的 UseStartup 方法指定了您的應用程式的啟動類:

 啟動類是您定義請求處理管道和配置應用程式所需的任何服務的地方。 啟動類必須是公有的,並包含以下方法:

public class Startup{    // This method gets called by the runtime. Use this method to add services to the container.
//添加服務的地方
public void ConfigureServices(IServiceCollection services) { } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
//配置請求管道的地方
public void Configure(IApplicationBuilder app) { }}

ConfigureServices 定義應用程式使用的服務(如ASP.NET Core MVC,Entity Framework Core,Identity等)。Configure  定義請求管道中的中介軟體。

服務是用於應用程式中常見消費的組件。 服務通過依賴注入(DI)提供。 ASP.NET Core包括一個本地控制反轉(IoC)容器(預設情況下支援建構函式注入)。 本地容器可以替換為您選擇的容器。 除了松耦合外,DI還可在整個應用中提供服務。 例如,您的應用程式中可以使用日誌記錄。有關更多資訊,請參閱依賴注入。

中介軟體

在ASP.NET Core中,您使用中介軟體編寫請求管道。 ASP.NET Core中介軟體在HttpContext上執行非同步邏輯,然後在依次調用下一個中介軟體或直接終止請求。 通過在Configure方法中調用UseXYZ擴充方法來添加一個名為“XYZ”的中介軟體組件。
ASP.NET Core配備了豐富的內建中介軟體:

  • 靜態檔案
  • 路由
  • 認證

您可以使用任何基於OWIN的中介軟體與ASP.NET Core,也可以自訂中介軟體。有關更多資訊,請參閱Middleware and Open Web Interface for .NET (OWIN).

伺服器

 ASP.NET Core 託管模型不直接監聽請求; 相反,它依賴於HTTP伺服器實現將請求轉寄到應用程式。 轉寄的請求被封裝為一組您可以通過介面訪問的功能對象。該應用程式將此集合組成一個HttpContext。 ASP.NET Core包括一個受管理的,跨平台Web伺服器,稱為Kestrel。就像iis 或 nginx 一樣。有關詳細資料,請參閱 Servers and Hosting。

Content root

 content root 是應用程式使用的任何內容的基路徑,例如視圖,Razor Pages,和靜態資源。預設情況下, content root 與託管應用程式的可執行檔的應用程式基底路徑相同。可以使用 WebHostBuilder 指定 content root 的位置。

Web root

應用程式的Web根目錄是項目中包含公用靜態資源(如CSS,JavaScript和影像檔)的目錄。預設情況下,靜態檔案中介軟體只會從Web根目錄及其子目錄提供檔案。請參閱working with static files擷取更多資訊。 Web根路徑預設為 /wwwroot ,但您可以使用 WebHostBuilder 指定不同的位置。

Configuration

ASP.NET Core使用新的配置模型來處理簡單的名值(name-value)對。新的配置模型不基於 System.Configuration 或 web.config ;相反,它從一組有序的配置提供者中抽取出來。內建配置提供者支援各種檔案格式(XML,JSON,INI)和環境變數,以實現基於環境的配置。您也可以編寫自訂配置提供者。有關詳細資料,請參閱 Configuration。

Environments

環境,如“開發”和“生產”,是ASP.NET Core中的最好的理念,可以使用環境變數進行設定。有關詳細資料,請參閱Working with Multiple Environments。

.NET Core vs. .NET Framework runtime

ASP.NET Core應用程式可以選擇.NET Core或.NET Framework運行時。有關更多資訊,請參閱.NET Core和.NET Framework之間的選擇。

 

ASP.NET Core原理概述

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.