真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在.NETCore微服務(wù)中使用HostBuilder和GenericHost

本篇內(nèi)容介紹了“如何在.NET Core微服務(wù)中使用HostBuilder和Generic Host”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)福州,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

介紹

自ASP.NET Core 1.0發(fā)布以來,我們有了WebHostBuilder類,它允許我們配置和構(gòu)建WebHost。然后,當(dāng)服務(wù)器(Kestrel)接受并處理HTTP請求時(shí),它將處理應(yīng)用程序的生命周期。在ASP.NET Core 2.0中,WebHostBuilder得到了一些進(jìn)一步的改進(jìn)和簡化。WebHostBuilder允許我們執(zhí)行諸如使用依賴注入容器來配置服務(wù)的事情; 通常是由Microsoft提供的作為ASP.NET Core一部分的容器。WebHostBuilder還允許我們將來自多個(gè)源的配置加載到鍵/值對的最終配置表示中。

對于ASP.NET Core Web應(yīng)用程序來說,這些工作非常好,但是到目前為止,在其他類型的應(yīng)用程序的框架中沒有類似的選項(xiàng)!

注意:請記住,這篇文章是基于ASP.NET Core 2.1預(yù)覽版1發(fā)布的。因此,在公開預(yù)覽期間以及在最終發(fā)布2.1之前,事情可能會(huì)根據(jù)預(yù)覽期間收到的反饋進(jìn)行更改。

介紹IHost和HostBuilder

使用.NET Core 2.1的開發(fā)人員可以使用的新選項(xiàng)是新的“通用”主機(jī),它使開發(fā)人員能夠輕松設(shè)置橫切關(guān)注點(diǎn),例如針對非Web焦點(diǎn)應(yīng)用程序的日志記錄,配置和依賴注入。團(tuán)隊(duì)已經(jīng)認(rèn)識到,將主機(jī)綁定到HTTP的關(guān)注可能不是一個(gè)理想的解決方案,因?yàn)槠渲性S多這些東西是其他應(yīng)用程序類型的通用要求。

可以使用這個(gè)地方的一個(gè)例子是在需要運(yùn)行后臺處理任務(wù)的控制臺應(yīng)用程序中,例如可能處理隊(duì)列中的消息?,F(xiàn)在,這些類型的服務(wù)在基于云的本地基于容器的體系結(jié)構(gòu)中很常見。

在.NET Core的當(dāng)前2.0版本中,當(dāng)然可以在控制臺應(yīng)用程序中使用日志記錄,配置和DI庫。在工作中,我們有許多微服務(wù),它們處理來自隊(duì)列的消息和數(shù)據(jù)豐富任務(wù)。我們必須自己手動(dòng)包含和設(shè)置這些常見問題。雖然這是可能的,但在應(yīng)用程序中設(shè)置DI設(shè)置之類的東西需要一些管道。

 建立一個(gè)主機(jī)

要?jiǎng)?chuàng)建主機(jī),我們可以使用新的HostBuilder,它具有與現(xiàn)有WebHostBuilder類似的一組方法和擴(kuò)展。因此,使用ASP.NET Core的任何人都應(yīng)該熟悉這些模式。

有一個(gè)主要的區(qū)別需要注意。HostBuilder不提供擴(kuò)展方法,允許您像使用WebHostBuilder一樣使用啟動(dòng)類。這個(gè)決定主要是為了避免在幕后創(chuàng)建兩個(gè)獨(dú)立的DI容器。使用通用主機(jī),配置單個(gè)服務(wù)集合,然后用于構(gòu)建最終服務(wù)提供者。

在您的應(yīng)用程序的Main方法中,您可以先創(chuàng)建一個(gè)HostBuilder,然后使用擴(kuò)展方法向DI注冊服務(wù),讀取配置并配置您的應(yīng)用程序所需的日志記錄。

解釋該功能的最佳方式是舉一個(gè)例子。如果你想查看完整的示例代碼,你可以從GitHub中獲取它。

如果我們看看這個(gè)控制臺應(yīng)用程序的Main方法,我們可以探索為我們的應(yīng)用程序創(chuàng)建一個(gè)Host。

如果您已經(jīng)使用過ASP.NET Core,并且已經(jīng)看到了WebHost構(gòu)建器,特別是在1.0時(shí)間框架中,這看起來可能非常熟悉。我們首先創(chuàng)建一個(gè)HostBuilder,然后我們可以使用它來定義我們想要?jiǎng)?chuàng)建的主機(jī)。本例中的第一個(gè)方法是ConfigureAppConfiguration方法。這個(gè)方法允許我們配置應(yīng)該使用哪個(gè)配置提供者來為我們的應(yīng)用程序構(gòu)造配置值的最終表示。

這與使用WebHostBuilder時(shí)可以自定義配置的方式相同。在這個(gè)例子中,我們已經(jīng)說過,我們希望首先從appsettings.json文件中讀取配置值,然后是環(huán)境變量,最后是傳遞到應(yīng)用程序中的任何參數(shù)。

接下來我們調(diào)用ConfigureServices,就像WebHostBuilder一樣,允許我們用ServiceCollection注冊服務(wù)。使用ServiceCollection上的擴(kuò)展方法執(zhí)行注冊,一旦完成,將使我們能夠在我們的應(yīng)用程序中有DI可用的任何地方獲取這些注冊的實(shí)例。

在這種情況下,第一個(gè)添加了ASP.NET Core Options服務(wù),第二個(gè)為IOptions綁定設(shè)置了注冊。最后的服務(wù)注冊是我稍后會(huì)談到的。

最后一節(jié),ConfigureLogging如你所期望的那樣設(shè)置應(yīng)用程序的日志記錄。在這種情況下,我們添加控制臺日志記錄,它使用應(yīng)用程序配置中的值來確定要記錄的內(nèi)容。

本示例中的日志記錄配置與使用模板創(chuàng)建的默認(rèn)ASP.NET Core Web應(yīng)用程序中的配置相同。

最后一步是在構(gòu)建和啟動(dòng)應(yīng)用程序的HostBuilder上調(diào)用RunConsoleAsync。它會(huì)一直運(yùn)行,直到CTRL + C被用來觸發(fā)它關(guān)閉。

完成任務(wù)

如果我們把它留在這里,服務(wù)就不會(huì)太好。此時(shí)我們只是運(yùn)行一個(gè)控制臺應(yīng)用程序,但實(shí)際上并沒有做任何有用的事情。因此我們需要一種方法來定義應(yīng)用程序應(yīng)該執(zhí)行的工作。

為這種服務(wù)風(fēng)格推薦的模式是利用新的IHostedService功能,首先在ASP.NET Core 2.0中引入。

這里我們有一個(gè)基本的IHostedService實(shí)現(xiàn),它將在這個(gè)服務(wù)中運(yùn)行...

我不會(huì)深入研究這些代碼,但我會(huì)總結(jié)一下它在做什么。當(dāng)應(yīng)用程序啟動(dòng)時(shí),它將在此服務(wù)上調(diào)用StartAsync。在該方法中,我們創(chuàng)建了一個(gè)每5秒鐘執(zhí)行一次工作的定時(shí)器。

作品本身在DoWork中定義。這里只是用戶將ILogger記錄為信息。這包括從應(yīng)用程序配置中檢索的消息。這是通過DI傳遞給服務(wù)的IOptions對象訪問的。

在關(guān)機(jī)時(shí),StopAsync被調(diào)用,服務(wù)在應(yīng)用程序被終止之前清理一點(diǎn)。這是一個(gè)非常人為的例子,但我想簡單地把事情放在一起,并專注于這些部分如何組合在一起。

通過定義IHostedService實(shí)現(xiàn),我們只需使用ConfigureServices中的以下常見操作(我們在前面看到)將其注冊到DI容器。

services.AddSingleton();

如果我們需要在此服務(wù)中運(yùn)行各種東西,我們可以添加多個(gè)托管服務(wù)。

概要

使用這種新的“通用”主機(jī)概念有很多情況。在這篇文章中,我們已經(jīng)探索了一個(gè)非常基本的例子,但是我不需要太多的工作來簡化我們環(huán)境中的一些微服務(wù)。對于Web應(yīng)用程序和服務(wù)有一個(gè)通用模式,并且可以輕松訪問DI,日志記錄和配置等特性,這是非常受歡迎的。

“如何在.NET Core微服務(wù)中使用HostBuilder和Generic Host”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


新聞名稱:如何在.NETCore微服務(wù)中使用HostBuilder和GenericHost
本文URL:http://weahome.cn/article/gediji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部