Генерация или обновление OperationContract на лету - PullRequest
3 голосов
/ 20 марта 2011

Есть ли способ создания или обновления OperationContract на лету?

Так, например:

  1. Пользователь нажимает кнопку на экране панели управления.
  2. Веб-служба или служба WCF будут обновлены новой функцией.
  3. Другие пользователи могут использовать эту функцию откуда угодно.

Я видел, чтов действии, однако, я не уверен, как этого добиться, я могу только создавать или генерировать OperationContract, пока я нахожусь в Visual Studio, но не на лету, пока служба уже размещена.

Пожалуйста, помогите.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2011

Это невозможно для сервисов SOAP. Сервисы SOAP определяют контракт, который выставляется как WSDL. После изменения службы вы должны сообщить своему клиенту об изменениях, потому что клиент должен знать, что существует новая операция и, возможно, новые переданные данные. Отражение не является вариантом, потому что клиент обычно не имеет доступа к сборке, созданной сервисом => клиент не может быть уведомлен о новой операции и новых данных, которые должны быть сериализованы и десериализованы.

Это можно сделать с помощью сервисов REST, потому что в сервисе REST вы определяете ресурсы, доступные через его URI и HTTP-метод. Но опять же вы должны уведомить клиента, что новый ресурс доступен. Обычно это достигается путем просмотра ресурсов. У вас есть ресурс верхнего уровня, который содержит информацию о других ресурсах и их URI. Вы просто добавите URI нового ресурса в основной ресурс. Текущая версия WCF делает этот подход очень сложным, потому что вы думаете с точки зрения ресурсов, но все равно должны работать с точки зрения операций.

Я все еще не понимаю, почему люди все еще пытаются создавать динамические приложения таким образом. Нажатие кнопки и добавление нового метода будет очень сложным. Возможно, если вы измените свой вопрос и объясните, что вы хотите сделать, у вас появятся лучшие идеи, как этого добиться.

0 голосов
/ 20 марта 2011

Вы можете использовать System.Reflection для сборки сборок на лету.Проверьте эту ссылку:

http://www.williamb.net/defining-and-hosting-wcf-service-contracts-at-runtime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...