ищу правильный дизайн, два разных веб-сервиса через флаг компиляции - PullRequest
1 голос
/ 27 мая 2011

У меня есть два веб-сервиса, с немного отличающимся API, например:

void LOG(string , string ,out int)
int LOG(string ,string)

один из них предназначен для производства, а другой - для тестирования.

Какова лучшая практика в этом случае, как написать это в коде более привлекательным? и не делать уродливых #IF #ELSE заявлений в моем основном коде.

Первый - серийный, второй - тестовый. И функциональность одинакова в обеих версиях. разница между ними в том, что у меня был файл WSDL из исходного веб-сервиса, я использовал wsdl.exe yourFile.wsdl /l:CS /serverInterface и получил свой тестовый сервис, но когда я добавил его в качестве ссылки на свое приложение, у меня был другой прокси-сервер, и сигнатуры функций были немногочисленными немного по-другому. понятия не имею, почему.

1 Ответ

2 голосов
/ 27 мая 2011

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

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

ОБНОВЛЕНИЕ Технически (поскольку вы пометили его «шаблонами проектирования»), вы можете использовать шаблон Стратегии для вызовов.вместе с внедрением зависимости.Но если эти экземпляры w / s полностью равны, я предлагаю вам выяснить, что не так с этими WSDL или сгенерированным клиентским кодом.Проблема заключается в создании заглушек, а не в элегантности кода.

...