Генерация прокси-серверов службы Silverlight с тем же пространством имен - PullRequest
0 голосов
/ 08 октября 2010

Мне нужно сгенерировать прокси служб для нескольких служб WCF в одном и том же пространстве имен, что невозможно при использовании функции Добавить ссылку на службу в Visual Studio.

Как я могу сделать это автоматически?Я рассмотрел вопрос об использовании SLsvcUtil , но для этого необходимо убедиться, что у меня есть доступ к моим службам WCF, и, если я использую сервер разработки ASP.NET, мне нужно будет вручную проверитьURL.

В идеале у меня был бы какой-то способ указать сборку, тип службы, конфигурацию (web | app.config) и целевое пространство имен, и тогда мой код был бы сгенерирован.Любые идеи?

Редактировать

Чтобы уточнить, я пытаюсь решить ту же проблему, которая описана в этой проблеме подключения:http://connect.microsoft.com/VisualStudio/feedback/details/426791/adding-multiple-service-references-from-same-application-should-not-require-multiple-namespaces

Мне нужен автоматизированный способ создания сервисных прокси в одном пространстве имен.Для меня неприемлемо указывать уникальное пространство имен для каждой ссылки на сервис.Использование SLsvcUtil является опцией, но требует, чтобы у меня была запущена и запущена моя служба, чтобы она могла читать метаданные, что является проблемой, потому что у меня не всегда последняя версия службы работает в любой данный момент времени.

Функциональность «Добавить ссылку на службу» в VS хорошо справляется с этим - она ​​автоматически размещает службу достаточно долго, чтобы захватить метаданные, а затем генерирует интерфейсы контрактов на обслуживание и прокси-серверы.Еще раз, требуется, чтобы каждый сервис был code-gen'd в своем собственном, уникальном пространстве имен, что мне не нужно.

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

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Что я обычно делаю, так это сообщаю составное пространство имен.Когда появляется диалоговое окно «Добавить ссылку на службу», я помещаю в пространство имен что-то вроде Services.ServiceA или Services.ServiceB.Тогда все пространства имен служб имеют общий корень Services.*.

0 голосов
/ 05 декабря 2010

Если я правильно понял вопрос, вы обеспокоены тем, что способ добавления ссылки на службу, интерфейсы ServiceContract не совсем такие, как те, которые вы определяете в исходной сборке.

Единственноереальное отличие состоит в том, что интерфейс ServiceContract, который генерирует Add Service Reference для SL, имеет определенные асинхронные операции (поскольку SL не поддерживает синхронные вызовы WCF).Остальное (класс XXXClient : ClientBase) может быть полностью обойдено, если вы просто используете ChannelFactory<TServiceContractInterface>.

Лично я в итоге разделил синхронный интерфейс ServiceContract, но создал контракт на обслуживание с асинхронными операциями, используяSystem.Reflection.Emit.TypeBuilder.Затем, используя собственную ChannelFactory, я создал оболочку для динамически генерируемого асинхронного интерфейса ServiceContract.

Надеюсь, это поможет.

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