В моем веб-приложении ASP.NET Core 2.2 у меня есть эти службы в моем методе Startup.ConfigureServices (IServiceCollection services):
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
services.AddScoped<WebApplication.Services.DoThingAlpha>();
services.AddScoped<WebApplication.Services.DoThingBravo>();
services.AddScoped<WebApplication.Services.DoThingCharlie>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Эти сервисы с ограниченной областью видимости делают грязную работу за мои контроллеры.
Однако мне необходимо постоянно прослушивать порт UDP в фоновом режиме, а затем уведомлять соответствующую службу (DoThingsAlpha, DoThingsBravo или DoThingsCharlie), когда на прослушивателе получены определенные сообщения UDP.
Я думаю, что могу реализовать фоновую службу с помощью BackgroundService (https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice), а затем добавьте в коллекцию сервисов в ConfigureServices. Назовем это ListenOnUDP: BackgroundService.
Проблема в том, как мне сообщить этим другим службам с определенной областью действия, что сообщение UDP было получено в ListenOnUDP? Каков рекомендуемый шаблон для решения такого рода проблем? Несомненно, он есть.
notifier
интерфейс, в свою очередь, может предоставлять уведомления в виде обратных вызовов или задач на основе TaskCompletionSource. - person Panagiotis Kanavos   schedule 01.03.2019