Если вы сгенерируете код автоматически, у вас возникнут проблемы с обслуживанием.Вы должны заново генерировать его всякий раз, когда вы меняете интерфейс или любую другую конфигурацию сервера.
По этой причине я НИКОГДА не генерирую клиента из открытых метаданных.
Интерфейс должен быть определен в одномбиблиотека.Давайте назовем эту библиотеку MyContractsLib .Реализация сервиса должна быть в отдельной сборке (которую я назову MyContractsImplementation ).Клиент должен перейти в другую сборку.
Затем клиент должен использовать ChannelFactory для создания службы.
var cf = new ChannelFactory<MyContractsLib.MyContract>(this.EndpointName);
MyContractsLib.MyContract serviceProxy = cf.CreateChannel();
Единственный сценарий, в котором это оправдано, - это если служба разрабатывается третьей стороной.-party, и вы самостоятельно пишете клиентское приложение.
Если у вас есть время и желание, см. , эта презентация углубляется в это.