Как создать и управлять клиентами службы wcf?

Сначала я рассматривал их как любую зависимость, передавая их в ctor классу, потребляющему сервис:

var serviceConsumer = new ServiceConsumer(new MailingServiceClient())

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

Более того, я познакомился с тем фактом, что службы wcf могут быть неправильно расположены в нескольких случаях, потому что метод dispose генерируемого прокси-сервера нарушен (вызовы закрываются без проверки состояния ошибки), и столкнулся с несколькими способами преодоления этого:

  1. упаковка каждого звонка в каждую услугу.
  2. переопределить поведение IDisposable по умолчанию класса, созданного scvutil.exe

Поскольку я не хотел бы, чтобы потребительский код сам создавал клиент службы по причинам тестирования, у меня есть следующие вопросы:

  • как я могу поддерживать работоспособную безотказную службу?

  • Как я могу все еще использовать внедрение зависимости для тестируемости?

1 ответ

Решение

Нашел хорошее решение.

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

http://wcfproxygenerator.codeplex.com/

кажется, работает нормально для меня.

Другие вопросы по тегам