Многопоточность и процесс сигнализации - PullRequest
0 голосов
/ 30 января 2012

У меня есть рабочий процесс, который выполняется через службу Windows (vb.net).Он выполняется каждые 5 минут и проверяет таблицу «заданий» в базе данных.У меня также есть веб-приложение (asp.net vb), которое позволяет пользователям «приостанавливать» выполнение текущих заданий в случае ошибки.

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

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

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

Ответы [ 3 ]

1 голос
/ 30 января 2012

Возможно, вы захотите сделать свой сервис сервером WCF.

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

0 голосов
/ 30 января 2012

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

0 голосов
/ 30 января 2012

Существует несколько способов осуществления межпроцессного взаимодействия в .Net Framework.Чтобы назвать два, которые доступны в Framework:

  • .NET Remoting
  • Windows Communication Foundation (WCF)

, в то время как первый прост, нодовольно старый, новый путь должен быть WCF.Я предлагаю вам ознакомиться с различными примерами из Руководства для начинающих по Windows Communication Foundation .

...