Как создать и управлять клиентами службы wcf?
Сначала я рассматривал их как любую зависимость, передавая их в ctor классу, потребляющему сервис:
var serviceConsumer = new ServiceConsumer(new MailingServiceClient())
Проблема заключалась в том, что после того, как из службы было сгенерировано исключение, оно перешло в сбойное состояние и не отвечало ни на какие запросы, поэтому требовалась повторная инициализация.
Более того, я познакомился с тем фактом, что службы wcf могут быть неправильно расположены в нескольких случаях, потому что метод dispose генерируемого прокси-сервера нарушен (вызовы закрываются без проверки состояния ошибки), и столкнулся с несколькими способами преодоления этого:
- упаковка каждого звонка в каждую услугу.
- переопределить поведение IDisposable по умолчанию класса, созданного scvutil.exe
Поскольку я не хотел бы, чтобы потребительский код сам создавал клиент службы по причинам тестирования, у меня есть следующие вопросы:
как я могу поддерживать работоспособную безотказную службу?
Как я могу все еще использовать внедрение зависимости для тестируемости?
1 ответ
Нашел хорошее решение.
генератор прокси, который заменяет VS и генерирует оболочку вокруг прокси по умолчанию, которая работает с ошибками прокси, тайм-аутами и правильным удалением.
http://wcfproxygenerator.codeplex.com/
кажется, работает нормально для меня.