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

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

发布时间:2020-12-10 18:01:44 所属栏目:建站 来源:网络整理
导读:副标题#e# 在ASP.NET Core中我们可以使用一种机制来增强启动时的操作,它就是HostingStartup。如何叫"增强"操作,相信了解过AOP概念的同学应该都非常的熟悉。我们常说AOP使用了关注点分离的方式,增强了对现有逻辑的操作。而我们今天要说的HostingStartup就

我们在之前的文章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增强启动操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

(编辑:西安站长网)

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

热点阅读