WCF Предоставление метаданных или клиент реализует интерфейс? - PullRequest
4 голосов
/ 02 декабря 2010

Каковы плюсы / минусы в том, что клиент использует сервис WCF либо путем добавления ссылки на сервис (и в основном все генерируется для вас), либо в том, что клиент реализует общий интерфейс и ему приходится кодировать класс вручную?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

В общем, если вы не используете генерацию кода, вам придется писать вручную, что в противном случае было бы сгенерировано для вас.

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

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

2 голосов
/ 02 декабря 2010

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

По этой причине я НИКОГДА не генерирую клиента из открытых метаданных.

Интерфейс должен быть определен в одномбиблиотека.Давайте назовем эту библиотеку MyContractsLib .Реализация сервиса должна быть в отдельной сборке (которую я назову MyContractsImplementation ).Клиент должен перейти в другую сборку.

Затем клиент должен использовать ChannelFactory для создания службы.

        var cf = new ChannelFactory<MyContractsLib.MyContract>(this.EndpointName);
        MyContractsLib.MyContract serviceProxy = cf.CreateChannel();

Единственный сценарий, в котором это оправдано, - это если служба разрабатывается третьей стороной.-party, и вы самостоятельно пишете клиентское приложение.

Если у вас есть время и желание, см. , эта презентация углубляется в это.

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