одноэлементный шаблон в службе активации Windows

У меня есть несколько сервисов WCF, которые в настоящее время размещаются самостоятельно, в очень простой службе NT. Я хочу расширить свое приложение, чтобы добавить предоставление служб WCF и обновлений, а также изоляцию (я хочу, чтобы каждая служба WCF находилась в своем собственном AppDomain). Эти службы WCF содержат логику, которую необходимо запускать на регулярной основе, проверяя базу данных и получая информацию от внешних устройств, чтобы при поступлении запроса данные были легко доступны.

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

Насколько я понимаю, WAS на самом деле не поддерживает модель наличия службы, которая работает до того, как кто-то фактически вызовет метод службы. статью я читал здесь

Ссылка на статью MSDN

заявляет: «По сути, это означает, что готовый хостинг WAS не совсем подходит для сеансовых или одноэлементных сервисов. Он больше подходит для сервисов без сохранения состояния для каждого вызова».

он говорит, что «из коробки», поэтому мне интересно, использовал ли кто-нибудь WAS для размещения службы WCF, которая действительно ведет себя больше как служба NT (запуск и остановка независимо от вызываемого метода). Или любые другие идеи были бы замечательны. Я планировал сам написать эту инфраструктуру, чтобы размещать службы WCF в пользовательском ServiceHost и размещать их выполнение в отдельном AppDomain, а также разрешить предоставление этих служб после первоначальной установки вместе с обновлениями. Тем не менее, я бы НАМНОГО НАМНОГО лучше не владеть этим кодом, если мне это не нужно.

Благодарность

Джошуа


person Joshua    schedule 10.12.2009    source источник


Ответы (1)


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

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

person Scott P    schedule 17.06.2010