c# - IHostedService 多个实现的最佳实践
问题描述
我有一个充当网关的应用程序,其中有两个进程,它们不断处理事件流。这两个进程都有启动和停止方法。他们通过事件队列相互交谈。
public class ServiceComposite: IHostedService
{
public ServiceComposite(IServiceA serviceA, IServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public Task StartAsync(CancellationToken token)
{
return Task.Run(() =>
{
Console.Writeline("Starting services");
serviceA.Start();
serviceB.Start();
}, token);
}
public Task StopAsync(CancellationToken token)
{
return Task.Run(() =>
{
Console.Writeline("Stopping services");
serviceA.Stop();
serviceB.Stop();
}, token);
}
}
起初我想创建一个带有启动和停止方法的接口,因为这样我就可以注入一个 IEnumerable 并循环通过它来启动和停止。但后来我看到 IHostedService 与 StartAsync 和 StopAsync 有一个非常相似的接口。
将它们保持原样的利弊是什么,即一个 IHostedService 实现,它控制两个进程以及将我的进程转换为 IHostService 并注册两者的利弊
services.AddHostedService<ServiceA>();
services.AddHostedService<ServiceB>();
解决方案
推荐阅读
- python-3.x - valueerror 尝试将值(类型模型)转换为张量
- bash - 在 linux 命令行上发送 4 个字节的 HEX
- python - 如何在后台继续执行正在运行的python进程
- sql-server - MSSQL 在 ORDER BY 列表的位置 1 中遇到常量表达式
- ios - 如何使用 AudioKit 音序器设置不在轨道末尾的循环?
- php - 使用 WordPress wp_mail 发送具有不同主题和消息的多封邮件
- android - 崩溃:tid:com.facebook.react.WebSocketModuleQueue RCTSRWebSocket.m SocketRocket:处于调试模式。允许连接到任何根证书
- java - 在 PHP 代码加密中转换 Java AES 加密
- electron - 将主过程的状态存储在电子中
- html - 结合一个标签和一个