2015-08-06 4 views
1

В Visual Studio (2013) есть ли способ обновить ссылку WCF, не взорвав ее?Как обновить ссылку WCF?

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

Служба работает отлично в тестовом клиенте WCF. Я вижу новый тип результатов. Я просто не могу его обновить в существующем проекте.

ответ

1

... есть ли способ обновить ссылку WCF, не взорвав ее?

Не совсем. Когда вы обновляете ссылку на службу, конечный результат, в конечном счете детерминированный, безусловно непредсказуем.

Чтобы этого избежать, не беспокойтесь о рекомендациях по обслуживанию. Просто создайте двоичную ссылку на контракты на обслуживание и используйте стек канала WCF для вызова службы, как описано here.

Вы можете сделать это, только если у вас есть доступ к служебным двоичным файлам.

ссылка обслуживание имеет свое место, если вы не хотите, чтобы ссылаться на сборке контракта (возможно потому, что не существует)

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

Я действительно пытаюсь представить себе ситуацию, когда было бы предпочтительнее использовать ссылку на службу по двоичной ссылке, если у вас есть доступ к сборке служб.

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

+0

Вам не кажется, что совет слишком предписывающий? Ссылки на службы имеют место, если вы не хотите ссылаться на сборку контракта (возможно, потому, что она не существует). – usr

+0

@usr Я ответил ответом. Я предполагаю, что место, откуда я родом, - это тот, у кого очень мало опыта проектирования и потребления общественных услуг, поэтому я всегда разрабатываю свои услуги таким образом, чтобы их можно было использовать через двоичную ссылку. –

+0

OK, хороший совет сейчас. +1 – usr

Смежные вопросы