Проблема ... У меня есть служба WCF, я не буду тратить чье-то время на копирование / вставку базовой реализации, просто представьте, что это стандартный пример "Эха", который вы видите разбросанным по MSDN.
Допустим, я размещаю сервисную библиотеку с помощью IIS / веб-приложения.Допустим также, что я публикую веб-сайт в разных средах - локальных, совместно используемых серверах разработки, разных тестовых серверах и, конечно же, в разных живых средах.Мы также предположим, что боги WCF улыбнулись нам, и развертывание прошло без проблем =)
Теперь я хочу написать приложение (скажем, приложение WPF для некоторой ясности).Когда приложение запускается, я хочу раскрывающийся список всех доступных сред - я не возражаю против жесткого кодирования или предоставления (с помощью файла конфигурации) этих сред, но слава для ссылок на любые статьи, показывающие обнаружение в локальной сети развернутых служб WCF?^^
Когда пользователь выбрал свою выбранную среду, я хочу, чтобы приложение могло вызывать метод службы (в правильной среде).Теперь я мог бы сделать это с помощью большого оператора выбора case / if, создания экземпляра соответствующего прокси-класса для выбранной среды, вызова с использованием прокси-класса и т. Д. Я даже мог передавать класс от метода к методу в качестве объекта и затем использоватьвыберите операторы case / if вместе с TryCast / DirectCast, чтобы определить, к какой среде относится предоставленный прокси-класс.
Но ... Это ужасно.И должен быть лучший способ.
Я граничу с идеей выбора среды (ни одной, в частности, только одной из них) и с предположением, что все развертывания / среды имеют идентичный код, создавая экземплярпрокси-клиент с подробной информацией о конечной точке выбранной мной среды.Я теряю форму безопасности типов, но это нормально?Это готовый путь?
т.е.
Dim t As Binding = GetDefaultBinding()
' GetCurrentEnvironmentUri() is some function to fetch an endpoint address based on the chosen environment
Dim s As New RandomEnvironment.ProxyClient(t, New EndpointAddress(GetCurrentEnvironmentUri()))
У кого-нибудь была эта проблема?Я предполагаю, что это довольно распространено, мир макетов созрел в наши дни ...