Лучший хостинг в Windows для процессов без пользовательского интерфейса - PullRequest
0 голосов
/ 13 июля 2009

Мы планируем систему, работающую на Windows / .Net 3.5, которая имеет ряд «сервисов», которые должны работать в фоновом режиме. Некоторые будут активны все время, но некоторые будут вызываться только изредка и могут быть заменены по требованию.

Насколько я вижу, мои варианты:

  • Службы Windows - всегда запущены (?)
  • IIS размещал что-то - вызывается по требованию
  • COM + / .Net Enterprise Sevices - самый сложный вариант, но самый мощный?

Распределенные транзакции не являются обязательными, в основном это вычислительные механизмы, а не процессорные транзакции.

Есть ли у кого-нибудь опыт работы со всеми этими и какие дополнительные плюсы и минусы можно требовать для каждой технологии?

EDIT

Предположим, существует несколько способов размещения кода в IIS, веб-службах, WCF (как указано ниже) и любых других? Относительные плюсы / минусы?

Ответы [ 3 ]

2 голосов
/ 13 июля 2009

WCF - это правильный путь. Есть еще много вариантов, чтобы сделать. WCF предоставляет ряд механизмов связи и среды размещения: WCF объединяет следующие технологии в одном наборе API- ASMX; WSE; Remoting; COM +; MSMQ. Так, например, вы можете использовать постоянные сообщения от MSMQ для иногда подключенных клиентов или стандартные сообщения SOAP в кодировке XML через транспортный уровень HTTP. Вы также можете использовать новые функции 3.5, такие как двоичная кодировка XML или JSON по HTTP.

Хостинг среды включают в себя: Консольные приложения Службы Windows Службы WCF внутри IIS 7.0 а в Windows Vista или Windows Server 2008 вы можете использовать WAS (службы активации Windows) для размещения служб WCF.

Разные хостинги имеют свои плюсы и минусы. Я предлагаю вам взглянуть на MSDN для более подробной информации (например, http://msdn.microsoft.com/en-us/library/bb332338.aspx).

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

1 голос
/ 17 июля 2009

Вы упомянули запуск процесса "по требованию". WAS - Служба активации Windows, или иногда называемая Службой активации процессов Windows, хотя она никогда не сокращается до «WPAS» - это то, что в Windows обеспечивает активацию процессов по требованию. Как это работает - когда приходит сообщение, WAS может запустить рабочий процесс для обработки сообщения. До IIS7 WAS была достаточно тесно интегрирована в IIS. Он использовался главным образом для активации процессов, которые выполняли работу в Интернете - как рабочий процесс ASP.NET. В IIS7 WAS обобщен, так что он может активировать рабочие процессы на основе не HTTP, а также HTTP-сообщений. Если вы пишете свое приложение для получения сообщений через WCF, вы можете получить активацию по существу «бесплатно». Это применимо, если это HTTP, TCP, MSMQ; МЫЛО или иначе.

Ключевым моментом этого запуска по требованию является то, что он связан с коммуникацией. На самом деле модель жизненного цикла процесса для WAS также связана с коммуникацией. По умолчанию, если через некоторое время нет входящих сообщений, процесс будет остановлен WAS. Это может или не может быть то, что вы хотите.

Что касается хостинга процессов - COM + предлагает среду хостинга, но в первую очередь он предназначен для использования в качестве хоста для процессов, которые взаимодействуют. Это не может быть идеально подходит для вас.

Если у вас есть вычислительные механизмы, вы можете просто запустить службу Windows. Подобную службу можно запускать и останавливать как административно, так и программно. В последнем случае вы можете представить себе WAS-активированный рабочий процесс, программно запускающий службу Windows.

Вы можете также представить написание простой службы Windows, которая отслеживает местоположение (файловую систему, очередь сообщений и т. Д.) Для сообщения, и когда этот файл или сообщение приходит, служба Windows запускает процесс вычислительного механизма, который сам по себе НЕ является. Служба Windows, но это просто процесс.

Говоря о MSMQ - это в основном та же модель, что и триггеры MSMQ. Вы можете настроить MSMQ для запуска процесса при поступлении сообщения в определенную очередь.

Есть много вариантов.

1 голос
/ 13 июля 2009

Это зависит от того, что будет делать программное обеспечение и как (и если) пользователи или системы должны взаимодействовать с ним. В зависимости от этого может быть еще один, часто упускаемый из виду, параметр: установить его как запланированное задание. Часто это очень хорошая альтернатива службе Windows, если программное обеспечение такого типа, которое будет действовать через определенные промежутки времени (проверить изменения в базе данных, воздействовать на измененные данные и отправить их куда-нибудь, например). 1001 *

Если у вас будут другие системы, взаимодействующие напрямую с вашим программным обеспечением, я бы предположил, что приложение WCF, размещенное в IIS, было бы довольно простым способом. Мы используем оба этих подхода в моем текущем задании; Службы WCF для поиска и хранения данных, а также запланированные задачи для вычислений данных, которые выполняются на регулярной основе.

Запланированное задание имеет один потенциал роста по сравнению с другими в одной конкретной области; он использует системные ресурсы только при запуске.

...