Asp.Net Core 是開源,跨平台,模塊化,快速而簡單的Web框架.
Asp.net Core官網的一個源碼合集,方便一次性Clone,喜歡的(Star),本系列持續更新,也可以通過我的網站訪問,歡迎探討交流
目錄
asp.net core實現了一個跨平台的宿主和web服務器. 一旦你調用了WebHost對象的Start方法,你就運行了一個監聽Http請求的Web服務器,它可以運行在32位的linux系統甚至是樹莓派上.然而在生產環境還是建議你使用一些反向代理工具,如Nginx,IIs,Apache等.為什么需要反向代理,因為Kestrel只是一個簡單的Web服務器,其他語言像java,python,nodejs,ruby,你會看到一些Web服務器PM2或者Passenger結合反向代理工具使用.這些Web服務器提供了監控,日志,負載均衡和流程管理功能,對於一個成熟的Web服務器而言.在Windows平台,你可以使用IIS反向代理,在linux服務器使用nginx/apache來實現反向代理.
宿主
宿主WebHost用來配置服務器和處理請求管道.
public interface IWebHost:IDisposable
{
//從Server加載Http功能接口列表
IFeatureCollection ServerFeatures { get; }
//服務容器
IServiceProvider Services { get; }
// 開始監聽端口
void Start();
//啟動主機
Task StartAsync(CancellationToken cancellationToken = default(CancellationToken));
//嘗試停止主機
Task StopAsync(CancellationToken cancellationToken = default(CancellationToken));
}
Web服務器
Kestrel 是跨平台 HTTP 服務器,它基於 libuv(一個跨平台異步 I/O 庫). Web Server實現了IServer接口,實現了Http服務器.
public interface IServer
{
//Http功能接口列表
IFeatureCollection Features { get; }
//開始處理請求
Task StartAsync<TContext>(IHttpApplication<TContext> application, CancellationToken cancellationToken);
// 停止請求處理,關閉服務器,盡可能的不是強制結束,而是等待請求處理結束后再停止
Task StopAsync(CancellationToken cancellationToken);
}
請求委托
Asp.net Core包含了一組請求委托(RequestDelegate),請求委托處理Http請求, 這一組請求委托組成了請求管道.(Pipeline)
中間件(Middleware)
- 為請求委托指定匿名方法,通過 Run、Map 和 Use 擴展方法來配置.
- 為請求委托指定命名方法,通過UseMiddleware<類名稱>來配置,通過反射生成類的實例,再調用實例的Invoke方法或者InvokeAsync方法來實例化委托.
HTTP功能接口
-
Web Server的功能接口集合, 服務器定義的Http 功能接口和相應的中間件.
-
請求上下文(Context)的功能接口集合,中間件可以更改該功能集合並添加新的HttpFeature接口支持.
迷你的代碼示例
以上內容有任何錯誤或不准確的地方請大家指正,不喜勿噴! 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】,希望能夠持續的為大家帶來好的技術文章!想跟我一起進步么?那就【關注】我吧。