Обработка фоновой службы ASP.NET MVC - PullRequest
1 голос
/ 06 октября 2011

Мы запускаем несколько сайтов ASP.NET MVC - по одному сайту на экземпляр клиента и около 50 на сервере.Каждый сайт имеет свою конфигурацию / базу данных / и т. Д.

Каждый сайт может работать в немного другой версии нашего приложения в зависимости от того, где они находятся в нашем графике обслуживания.

В настоящее время для фоновой обработки мы используем Quartz.net, который работаетдомен приложения сайта.Это работает в основном хорошо, но, очевидно, страдает от проблем, таких как не работает, когда домен приложения закрывается, например, после длительной активности.

Каковы наши варианты создания более надежного решения?* Службы Windows обсуждаются, но я не знаю, как мы можем добиться того же мультисайта на разных версиях, которые мы получаем в IIS.

Я действительно хочу, чтобы каждый сайт IIS имел собственную фоновую обработку, которая всегда работает как служба, но изолируется так же, как и сайт IIS.

Ответы [ 2 ]

0 голосов
/ 09 января 2015

Я предполагаю, что у вас есть несколько баз данных для каждого клиента, как вы упомянули.Создайте пользовательский файл конфигурации со строками подключения базы данных для каждого клиента.

например,

<?xml version="1.0" encoding="utf-8" ?>
<MyClients>
  <MyClient name="Cleint1">
    <Connection key="Client1" value="data source=<database>;initial catalog=client1DB;persist security info=True;user id=xxxx;password=xxxx;MultipleActiveResultSets=True;App=EntityFramework" />       
  </MyClient>
  <Myclient name="client2".....></MyClient>
</MyClients>

Напишите службу Windows, которая загружает указанный выше файл конфигурации (клиенты | connectiostring) в память и выполняет итерациючерез каждую конфигурацию базы данных клиента.Я предполагаю, что все клиенты имеют одинаковую инфраструктуру очередей заданий, так что вы можете выполнять одинаковую логику для каждой базы данных.

Вы можете использовать Mutex , чтобы запустить службу Windows для клиента, чтобы онубедитесь, что два экземпляра службы для одного и того же клиента не будут работать одновременно.

0 голосов
/ 06 октября 2011

Вы можете установить службу Windows для каждого клиента. Это похоже на головную боль при обслуживании.

Вы также можете написать один сервис, который распознает все версии вашего приложения, а затем обрабатывает каждого клиента одну за другой.

Для этого вы также можете создать задания сервера sql и настроить одно задание для каждого клиента.

...