Надежный сервис WCF

Каков наилучший способ обеспечить надежность службы, чтобы предотвратить ее недоступность, если она становится недоступной, есть ли способ перезапустить службу?

заранее спасибо.


person CodeMonkey    schedule 20.01.2009    source источник


Ответы (3)


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

Или, если у вас есть Windows 2008, вы можете использовать WAS для размещения службы, которая автоматически перезапустит ее.

Важно понимать, что ваша служба может иметь состояние, но в ней нет запущенного «потока», поэтому она не работает как таковая, объект просто существует. По сути, вы платите Microsoft за предоставление вам .net и WCF, которые заботятся о хостинге, они гарантируют вам, что ваш сервис останется доступным.

Сбой в методе приведет к сбою службы, но вы можете обрабатывать любые исключения, с которыми вы можете справиться изящно, и позволить операционной системе обрабатывать вещи, которые вы не можете (например, исключения из памяти и т. д.). Обратите внимание, что это ваша ответственность. разобраться с неисправностью службы. Однако помимо этого WCF чрезвычайно надежен.

person Spence    schedule 20.01.2009

Это зависит от того, как вы размещаете свой сервис.

Объяснение и сравнение различных доступных параметров можно найти здесь: http://msdn.microsoft.com/en-us/library/ms730158.aspx

person David Tischler    schedule 20.01.2009

Просто для ясности: если по какой-либо причине я не обработал исключение, и это вызвало остановку службы, в IIS 7.0 служба должна перезапуститься в новом состоянии.

person CodeMonkey    schedule 20.01.2009
comment
Если вы не обработаете исключение, это вызовет ошибку вашей службы. ВЫ несете ответственность за его очистку и принудительное закрытие или устранение неполадок. - person Spence; 20.01.2009