加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

ASP.NET Core使用HostingStartup增强启动操作方法详解

发布时间:2020-12-10 13:07:37 所属栏目:编程 来源:网络整理
导读:这篇文章首要先容了ASP.NET Core行使HostingStartup加强启动操纵,本文给各人先容的很是具体,对各人的进修或事变具有必然的参考小心代价,必要的伴侣可以参考下

这里我们通过必要设置ASPNETCORE_HOSTINGSTARTUPASSEMBLIES名称可以看出确实是行使了HostingStartup成果,而通过HostingStartup加强的操纵进口必定就在SkyAPM.Agent.AspNetCore措施齐集,我们找到SkyAPM.Agent.AspNetCore措施集的源码[点击查察源码👈]看到了SkyApmHostingStartup类实现如下

using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using SkyApm.Agent.AspNetCore; using SkyApm.AspNetCore.Diagnostics; [assembly: HostingStartup(typeof(SkyApmHostingStartup))] namespace SkyApm.Agent.AspNetCore { internal class SkyApmHostingStartup : IHostingStartup { public void Configure(IWebHostBuilder builder) { builder.ConfigureServices(services => services.AddSkyAPM(ext => ext.AddAspNetCoreHosting())); } } }

通过这个我们可以看出确实云云,虽然也是等同于我们通过UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "SkyApm.Agent.AspNetCore")去设置,我们乃至可行使如下的方法去行使SkyAPM-dotnet

public void ConfigureServices(IServiceCollection services) { services.AddSkyAPM(ext => ext.AddAspNetCoreHosting()) }

这些写法着实是完全等价的,可是通过情形变量的方法设置HostingStartup启动措施集的方法无疑是最优雅的。以是我们在一般的进修开拓中,最好照旧通过这种方法去操纵。

改革Zipkin行使

我们在之前的文章ASP.NET Core整合Zipkin链路跟踪中曾演示过基于诊断日记DiagnosticSource改造Zipkin的集成方法,通过本篇文章报告的HostingStartup我们可早年进一改造Zipkin的集成方法,可以让它行使起来和SkyAPM-dotnet相同的方法,我们基于之前的示例中的ZipkinExtensions措施齐集添加一个ZipkinHostingStartup类,用于承载集成Zipkin的操纵,代码如下

using System; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.DependencyInjection; namespace ZipkinExtensions { public class ZipkinHostingStartup: IHostingStartup { public void Configure(IWebHostBuilder builder) { builder.ConfigureServices(services=> { services.AddZipkin(); services.AddSingleton<ITraceDiagnosticListener, HttpDiagnosticListener>(); }); builder.Configure(app=> { IHostApplicationLifetime lifetime = app.ApplicationServices.GetService<IHostApplicationLifetime>(); ILoggerFactory loggerFactory = app.ApplicationServices.GetService<ILoggerFactory>(); IConfiguration configuration = app.ApplicationServices.GetService<IConfiguration>(); string serivceName = configuration.GetValue<string>("ServiceName"); string zipKinUrl = configuration.GetValue<string>("ASPNETCORE_ZIPKINADDRESS"); app.UseZipkin(lifetime, loggerFactory, serivceName, zipKinUrl); }); } } }

然后在每个项目标launchSettings.json文件中添加如下所示的设置即可,这样的话就可以做到对现有营业代码无任何入侵。

"environmentVariables": { "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "ZipkinExtensions", "ASPNETCORE_ZIPKINADDRESS": "http://localhost:9411/" }

总结

本文先容了HostingStartup的根基观念,基本行使以及对其源码的说明和在SkyAPM-dotnet中的应用,最后我们改革了Zipkin的集成方法。HostingStartup在一些集成APM可能链路跟踪的相同场景还长短常适用的,可能假如我们有集成一些基本组件可能三方的组件,可是我们的代码中并不必要直接的行使这些组件中的类可能直接的代码相关,均可以行使HostingStartup的方法去集成,为我们实现对现有代码提供无入侵加强提供了强盛的支持。关于HostingStartup我也是在看源码中有时发明的,其后发明微软ASP.NET Core官方文档
一文中有讲授,然后遐想到本身行使过的SkyAPM-dotnet正是行使了HostingStartup+诊断日记DiagnosticSource的方法实现了对代码无入侵的方法举办监控和链路跟踪。于是抉择深入研究一下,可谓收成满满,便写下这篇文章但愿更多的人可以或许相识行使这个成果。

到此这篇关于ASP.NET Core行使HostingStartup加强启动操纵的文章就先容到这了,更多相干ASP.NET Core行使HostingStartup加强启动操纵内容请搜刮剧本之家早年的文章或继承赏识下面的相干文章但愿各人往后多多支持剧本之家!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读