精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當(dāng)前位置:云計算企業(yè)動態(tài) → 正文

ASP.NET Core提供模塊化Middleware組件

責(zé)任編輯:editor006 作者:Pierre-Luc Maheu |來源:企業(yè)網(wǎng)D1Net  2016-03-12 21:58:54 本文摘自:INFOQ

ASP.NET Core引入了中間件(middleware)的概念來定義HTTP 管道(pipeline)。中間件是一系列組合在一起形成web應(yīng)用程序的組件。這個概念的靈感來源于OWIN和Katana,在ASP.NET早期版本中也提供了類似的功能。

一個中間件是HTTP 管道中的一個組件。中間件逐個執(zhí)行,并在管道中鏈?zhǔn)降卣{(diào)用下一個中間件。每個中間件都可以終止調(diào)用鏈。例如,如果認(rèn)證過程失敗,則認(rèn)證中間件不會再執(zhí)行下一個中間件。下圖說明了執(zhí)行流程。

除了ASP.NET Core中內(nèi)置的中間件,我們也可以創(chuàng)建新的中間件。如果需要自定義中間件,可以編寫一個類,該類中必須包含以HttpContext作為第一個參數(shù)的方法。這個方法允許增加其他參數(shù),可以通過依賴注入進(jìn)行解析。下面的類定義了一個日志中間件:

public class RequestLoggerMiddleware{ private readonly RequestDelegate _next; private readonly ILogger _logger; public RequestLoggerMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) { _next = next; _logger = loggerFactory.CreateLogger(); } public async Task Invoke(HttpContext context) { _logger.LogInformation("Handling request: " + context.Request.Path); await _next.Invoke(context); _logger.LogInformation("Finished handling request."); }}

中間件必須在Startup類的Configure方法中進(jìn)行注冊才可以執(zhí)行。

public void Configure(IApplicationBuilder app) { app.UseMiddleware(); }

一點需要注意的是,中間件的執(zhí)行順序依賴于它們添加到管道中的順序。這就意味著必須花費一些精力確定中間件之間隱含的依賴關(guān)系。例如,一個組件要使用會話狀態(tài),但是如果它在會話中間件之前執(zhí)行,則會導(dǎo)致崩潰。

伴隨著ASP.NET Core“為你所用的資源付費”的理念,一些應(yīng)用程序的性能可能會有所改善,因為只有明確配置的中間件才會執(zhí)行。該框架不再依賴于System.Web.dll;組件將以NuGet包的形式提供。這也意味著組件的更新將由NuGet負(fù)責(zé)處理,并且每個中間件均可獨立更新。

關(guān)鍵字:中間件NETASP組件

本文摘自:INFOQ

x ASP.NET Core提供模塊化Middleware組件 掃一掃
分享本文到朋友圈
當(dāng)前位置:云計算企業(yè)動態(tài) → 正文

ASP.NET Core提供模塊化Middleware組件

責(zé)任編輯:editor006 作者:Pierre-Luc Maheu |來源:企業(yè)網(wǎng)D1Net  2016-03-12 21:58:54 本文摘自:INFOQ

ASP.NET Core引入了中間件(middleware)的概念來定義HTTP 管道(pipeline)。中間件是一系列組合在一起形成web應(yīng)用程序的組件。這個概念的靈感來源于OWIN和Katana,在ASP.NET早期版本中也提供了類似的功能。

一個中間件是HTTP 管道中的一個組件。中間件逐個執(zhí)行,并在管道中鏈?zhǔn)降卣{(diào)用下一個中間件。每個中間件都可以終止調(diào)用鏈。例如,如果認(rèn)證過程失敗,則認(rèn)證中間件不會再執(zhí)行下一個中間件。下圖說明了執(zhí)行流程。

除了ASP.NET Core中內(nèi)置的中間件,我們也可以創(chuàng)建新的中間件。如果需要自定義中間件,可以編寫一個類,該類中必須包含以HttpContext作為第一個參數(shù)的方法。這個方法允許增加其他參數(shù),可以通過依賴注入進(jìn)行解析。下面的類定義了一個日志中間件:

public class RequestLoggerMiddleware{ private readonly RequestDelegate _next; private readonly ILogger _logger; public RequestLoggerMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) { _next = next; _logger = loggerFactory.CreateLogger(); } public async Task Invoke(HttpContext context) { _logger.LogInformation("Handling request: " + context.Request.Path); await _next.Invoke(context); _logger.LogInformation("Finished handling request."); }}

中間件必須在Startup類的Configure方法中進(jìn)行注冊才可以執(zhí)行。

public void Configure(IApplicationBuilder app) { app.UseMiddleware(); }

一點需要注意的是,中間件的執(zhí)行順序依賴于它們添加到管道中的順序。這就意味著必須花費一些精力確定中間件之間隱含的依賴關(guān)系。例如,一個組件要使用會話狀態(tài),但是如果它在會話中間件之前執(zhí)行,則會導(dǎo)致崩潰。

伴隨著ASP.NET Core“為你所用的資源付費”的理念,一些應(yīng)用程序的性能可能會有所改善,因為只有明確配置的中間件才會執(zhí)行。該框架不再依賴于System.Web.dll;組件將以NuGet包的形式提供。這也意味著組件的更新將由NuGet負(fù)責(zé)處理,并且每個中間件均可獨立更新。

關(guān)鍵字:中間件NETASP組件

本文摘自:INFOQ

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號-6 京公網(wǎng)安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 赤水市| 通河县| 鄄城县| 平罗县| 富源县| 南平市| 庄浪县| 和硕县| 河北省| 洪泽县| 沂源县| 渝中区| 阿瓦提县| 环江| 西昌市| 樟树市| 新巴尔虎右旗| 东宁县| 高州市| 曲靖市| 桐城市| 周口市| 万盛区| 定兴县| 抚州市| 天津市| 芦溪县| 衡阳县| 读书| 广安市| 中宁县| 泾阳县| 惠水县| 龙口市| 上饶市| 鹤庆县| 贵溪市| 卢氏县| 巴塘县| 女性| 抚宁县|