標籤:web Proxy 伺服器 http 應用 share process asp 啟動 lov
一、搭建開發環境
在Windows平台下,開發.NET Core 程式需要安裝如下內容:
1. .NET Core runtime
2. Visual Studio 2015 with Update 3
可參考微軟的官方指南:https://www.microsoft.com/net/core#windowsvs2015
二、建立樣本
1.選擇.NET Core Web Application模版
2.選擇Web Application
3.等待VS還原packages
4.按F5啟動瀏覽器能看到下面的頁面證明一個Demo已經建立成功了。
三、程式進入點
3.1 Main函數
ASP.NET Core程式如.NET Framework裡面的Console Application類似,有一個Main函數的進入點。在預設情況下,ASP.NET Core程式的Main函數是放在Program.cs類裡面,如下:
在這個Main函數中,使用WebHostBuilder的執行個體建立一個Web application Host。執行個體的UseKestrel方法定義了web伺服器和Startup類。在WebHostBuilder中提供了很多可選的方法,包括:UseIISIntegration(在IIS和IIS Express中寄宿ASP.NET Core程式)、UseContentRoot (指定根內容的目錄)。Build和Run方法構建用於寄宿程式的IWebHost對象,並啟動對進入的HTTP請求的監聽。
3.2 宿主(Host)和伺服器(Server)
ASP.NET Core 程式要求在Host才能執行。
Host:負責程式的啟動和生命週期管理。包括:確保應用程式的服務可用並正確配置。
Server:負責接收HTTP請求。你可以把Host作為是對Server的封裝器。
Host被配置用來使用Server;Server對Host一無所知。
3.3 WebHostBuilder
WebHostBuilder是用於配置和啟動host的。Host一般都使用WebHostBuilder的執行個體來建立。WebHostBuilder的執行個體構建和返回一個WebHost的執行個體。Host必須實現IWebHost介面。IWebHost介面介面暴露了features和services集合,以及一個Start方法。
3.4 Kestrel
在之前版本的ASP.NET程式中必須依賴IIS來啟動,而IIS會為掛載在其中的ASP.NET註冊一個ISAPI filter。每當請求過來時,IIS則會啟動w3wp的worker process來開始整個ASP.NET runtime程式。
在.NET Core誕生之後,為了適應跨平台的需要,ASP.NET Core的啟動方式被重新設計以適應新的需求,所以它和IIS之間的關係也有所改變。為了跨平台,ASP.NET現在的執行方式就如一般的Console Application一樣。
在ASP.NET Core中內建一個基於libuv的高效能I/O非同步裝置——Kestrel,使得ASP.NET Core程式可以不依賴與IIS的存在便能啟動runtime。也可以使用其他的Web伺服器。
3.5 UseIISIntegration
如果ASP.NET Core程式和IIS一起使用的話,UseIISIntegration方法應該作為構建Host的一部分被調用。為了在ASP.NET Core中使用IIS,你必須同時指定UseKestrel和UseIISIntegration。Kestrel是被設計為在代理的背後運行,你不能面向互連網直接部署。UseIISIntegration指定IIS作為反向 Proxy伺服器。如果是Linux,你應該使用Nginx或類似的反向 Proxy伺服器。
3.6 Startup類
負責配置請求管道,處理所有程式中的請求。
四、參考
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/hosting
http://codelover.link/2016/07/28/asp.net-core-startup/
https://dotblogs.com.tw/aspnetshare/2016/03/28/20160327
原文串連:http://www.cnblogs.com/liszt/p/6402320.html
ASP.NET Core入門