Я пытаюсь написать код на C#, который будет называть службу WCF «на лету», импортируя WSDL, исследуя его, а затем динамически вызывает вызовы.Вызов службы WCF без генерации сборки
Услуга, с которой я звоню, может время от времени меняться - поэтому, если это так, я хочу, чтобы мой клиент узнал о новых методах и новых входных параметрах и выходных параметрах для вызовов, не перестраивая моего клиента.
Одно из возможных решений заключается в том, чтобы импортировать и компилировать справочную службу на лету.
Изложенные здесь: Creating an assembly on the fly from a WSDL
Я хотел бы избежать образования сборки, а затем размышляя над ним, если это возможно.
Я просмотрел код динамического прокси в ссылке, и они используют класс framework для импорта. Этот класс является WsdlImporter
. Поэтому я подумал, что я могу использовать это и изучить схему WSDL и определить, какие вызовы присутствуют и какие входы и выходы доступны.
Проблема в том, что информация о типе отсутствует в объектах MessagePartDescription
, которые создает WsdlImporter
. По-видимому, этого не хватает because it cannot find the types yet - see the response to the question from Brian.
Значит, любой совет о том, как я должен действовать? Неужели я полностью ошибаюсь?
Можете ли вы дать реальный пример того, как это было бы полезно? Есть ли пользовательский интерфейс, представленный пользователю вашего клиента, который позволяет им выбирать методы для вызова, возможно, какой-то планировщик или что-то еще? Кроме того, что не так с созданием сборки на лету? Это звучит довольно просто. Представляете ли вы что-то более простое, чем размышление? Мне трудно понять, что это будет. – JohnOpincar
Это будет использоваться для вызова службы WF. Рабочий процесс может измениться - шаги могут быть добавлены/удалены и т. Д. – Neil
@JohnOpincar - Мое возражение не в отражении - это на сборку сборки на лету. Кажется, что это подход, который может вызвать проблемы безопасности в какой-то момент, и * может быть хрупким. Также мне кажется странным, что когда вся информация находится в WSDL, и учитывая, что в конечном итоге вызовы будут распределяться через нечто, похожее на динамический API, который создает динамический слой с отражением поверх статического слоя, который был динамически создан, который затем отображается на динамический слой, немного. Создание сборки «на лету» - это мой план резервного копирования. – Neil