Коллизия пространства имен службы WCF, все в одном решении

У меня есть библиотека классов WCF, клиент службы WCF и сервер службы WCF в одном решении Visual Studio, и у меня проблема.

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

Можно ли использовать в моем решении оригинальные классы из библиотеки, на которые я могу ссылаться в этом проекте? И использовать сгенерированные классы из .wsdl только тогда, когда я использую другое решение? или, может быть, я должен спроектировать это по-другому?

Спасибо!


person Svisstack    schedule 09.01.2012    source источник


Ответы (1)


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

Если вы хотите использовать одни и те же определения контрактов данных между клиентом и сервером, которые находятся в вашей клиентской библиотеке WCF, вы можете полностью пропустить svcutil.exe и использовать ChannelFactory напрямую. По ссылке есть пример того, как это сделать.

person parapura rajkumar    schedule 09.01.2012
comment
Хорошо, но я работаю над рабочими классами, которые запрограммированы на использование библиотеки общих типов, когда я работаю с данными в библиотеке общих типов, как я могу преобразовать тип из моих классов в сгенерированные классы, мне это нужно для запроса веб-службы, которая использует сгенерированные классы, технически это 2 разных типа объектов. - person Svisstack; 09.01.2012
comment
@Svisstack, пожалуйста, посмотрите мою правку ... я как бы догадался, что вы пытались это сделать ... Теоретически вам это не нужно ... это немного сложно, но можно сделать ... - person parapura rajkumar; 09.01.2012
comment
почему возникает эта проблема, я что-то неправильно спроектировал? У меня есть простая библиотека классов с некоторыми рабочими функциями, совместно используемыми в решении, и чтобы сделать сервер и клиенты множеством экземпляров клиентов, которые используют те же данные, я думаю, это простая проблема, но в решении wcf я не могу сделать это просто, как выглядит ;-( i не нравится это - person Svisstack; 09.01.2012
comment
@Svisstack ... WCF не предназначен для совместного использования определения данных между сервером и клиентом в общей библиотеке. Обычно клиент не имеет доступа к коду сервера и должен переопределить как интерфейс службы, так и передаваемые данные. - person parapura rajkumar; 09.01.2012
comment
Спасибо ;-) теперь я почти уверен, что мне не нравится wcf в этом решении - person Svisstack; 09.01.2012
comment
@Svisstack, пожалуйста, не сдавайтесь из-за этого ... как только вы заставите его работать правильно, будет ли это лучше, чем использование svcutil.exe ... поскольку при обновлении кода службы и данных вам не нужно снова запускать svcutil.exe :) - person parapura rajkumar; 09.01.2012