Добавление сервисных ссылок на несколько сервисов WCF, которые совместно использовали классы

Откройте devTools в Chrome и выберите вкладку «Сеть», на вкладке «Сеть» снимите флажок «Отключить кэш» и перезагрузите страницу.

6
задан Justin 20 May 2009 в 18:58
поделиться

3 ответа

В разделе «Дополнительно» раздела «Добавить ссылку на службу» есть флажок «Повторное использование типов в сборках, на которые имеются ссылки». Это будет искать типы, используемые в вашей службе, и если они уже существуют в ссылочной сборке, то они будут использоваться, а не сгенерированный прокси-класс.

Одно предостережение заключается в том, что поиск выполняется только по «ссылочным сборкам», поэтому он не будет принимать прокси, созданные другими службами (и я считаю, что другое пространство имен также остановит его).

Обычно у меня есть бизнес-проект / проект домена в моем проекте Silverlight, поэтому я добавляю свои общие классы в этот проект ( обычно с помощью «Добавить существующий элемент»> «Добавить как ссылку», чтобы предоставить общий доступ к коду).

Как только это '

8
ответ дан 10 December 2019 в 00:44
поделиться

Если вы одновременно сгенерируете прокси с помощью svcutil.exe, он будет генерировать только один тип. Я не знаю, как это сделать, добавив в проект ссылку на сервис.

Мы запускаем его в пакетном файле, поэтому я вырезал его и изменил имена, чтобы защитить невиновных. На самом деле речь идет о сопоставлении пространств имен служб вместе, а затем , включающем все URL-адреса вместе . Он также имеет набор типов коллекции (для списков) и включает ссылку на сборку (на которую ссылаются некоторые другие ответы.

@ECHO OFF

SET cmd=C:\"Program Files"\"Microsoft SDKs"\Windows\v6.0a\bin\SvcUtil.exe
SET cmd=%cmd% /out:Traffic.cs /noConfig /collectionType:System.Collections.Generic.List`1

SET cmd=%cmd% /reference:..\..\..\lib\Architecture.Frameworks.dll

REM ######### Service namespace mappings (Service Contracts and Message Contracts)
SET cmd=%cmd% /namespace:"http://services.test.com/app/2005/09/"
SET cmd=%cmd%,"app.ServiceProxies"

REM ######### Schema namespace mappings (Data Contracts)
SET cmd=%cmd% /namespace:"http://schemas.company.com/app/2005/09/"
SET cmd=%cmd%,"Co.ServiceProxies.app.DataContracts"

REM ######### Set all the URLs that have common types
SET cmd=%cmd% http://localhost/Services/MyService1.svc
SET cmd=%cmd% http://localhost/Services/MyService2.svc

%cmd%

PAUSE

Если все элементы находятся в одном пространстве имен службы,

3
ответ дан 10 December 2019 в 00:44
поделиться

svcutil.exe может повторно использовать типы из указанных сборок. Вы можете настроить это, задав свойства ссылки на службу или ключ / reference, если вы запускаете svcutil.exe вручную.

Если вы являетесь владельцем упомянутых служб, рассмотрите возможность помещения типов данных, таких как класс Person, в отдельную сборку, доступную как для клиента, так и для службы.

-1
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: