Asp.net Core 入門實戰 2.請求流程


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接口支持.

迷你的代碼示例

middleware/Demo

以上內容有任何錯誤或不准確的地方請大家指正,不喜勿噴! 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】,希望能夠持續的為大家帶來好的技術文章!想跟我一起進步么?那就【關注】我吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM