我有一个单例服务,我想在启动时运行,而不是等待一些Controller
通过依赖注入构造服务。
该服务处理来自服务总线的数据,并且似乎不正确地依赖于客户端流量。初始化的最干净的方法是什么?
通常,您通常会正常实例化服务,然后将其引用传递给AddSingleton()
方法。
var someRepository = new SomeRepository(/*pass in configuration and dependencies*/);
// pass instance of the already instantiated service
services.AddSingleton<ISomeRespository>(someRepository);
编辑
或预热扩展方法:
public static class WarmupServiceProviderExtensions
{
public static void WarmUp(this IServiceProvider app)
{
// Just call it to resolve, no need to safe a reference
app.RequestService<ISomeRepository>();
}
}
并在您的Startup.cs中
public void Configure(IServiceProvider app)
{
app.UseXyz(...);
// warmup/initailize your services
app.WarmUp();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句