Я пытаюсь создать простое приложение ASP.NET 5 с SignalR, которое должно регулярно отправлять сообщения клиентам (например, реализовать панель мониторинга со значениями, передаваемыми с сервера в браузер).
Я изучил некоторые сообщения, такие как http://arulselvan.net/realtime-dashboard-asp-net-signalr-angularjs-d3js/ или http://henriquat.re/server-integration/signalr/integrateWithSignalRHubs.html. Они рекомендуют реализовать таймер в классе, реализующем IRegisteredObject
из пространства имен System.Web.Hosting
.
Однако, похоже, я не могу найти пространство имен, в котором IRegisteredObject
живет в ASP.NET 5. System.Web
больше не существует в ASP.NET 5. Мне не удалось найти информацию о нем в Интернете. Чем заменить его в ASP.NET 5?
ОБНОВЛЕНИЕ
Я пробую следующее решение:
создать сервис, инкапсулирующий таймер
зарегистрируйте его в
Startup.cs
как одноэлементную службу, например.public class Ticker { Timer timer = new Timer(1000); public Ticker() { timer.Elapsed += Timer_Elapsed; timer.Start(); } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { // do something } }
In Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// ...
Ticker ticker = new Ticker();
ServiceDescriptor sd = new ServiceDescriptor(typeof(Ticker), ticker);
services.Add(sd);
// ...
}
Как насчет этого подхода?
HostingEnvironment.QueueBackgroundWorkItem
? Был введен с .NET 4.5, он заменяетIRegisteredObject
. - person Anders   schedule 19.04.2016System.Web.Hosting
— похоже, этого пространства имён больше не существует, как и самогоSystem.Web
- person AunAun   schedule 19.04.2016