Мне нужно выполнить некоторые фоновые задачи для веб-приложения, которое я создаю.Мне нравится внешний вид использования Topshelf для запуска службы на сервере.Мне было интересно, как лучше инициализировать сервис.Мне было интересно, будет ли плохой идеей запускать службу при запуске приложения MVC
Например:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
InitService();
}
private void InitService()
{
Task.Factory.StartNew(() => HostFactory.Run(x =>
{
x.Service<TestService>(s =>
{
s.SetServiceName("TestService");
s.ConstructUsing(
name => new TestService());
s.WhenStarted(ts => ts.Start()); s.WhenStopped(ts => ts.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Sample test service");
x.SetDisplayName("Test display name");
x.SetServiceName("Test service name");
}));
}
очевидно, что задача запуска приложения запускается сама по себезадача.Есть ли лучшие способы сделать это?Не могли бы вы увидеть проблему с этим?
Моя идея состоит в том, что, как только служба будет запущена, она с этого момента будет обрабатывать себя.
Моя единственная мысль была: если вы перезапустите свое веб-приложениенесколько раз, но я подумал, что мог бы просто добавить логику, чтобы проверить, что если служба уже запущена, не запускайте другую.