Использование нашего собственного файла xsd в службе WCF

У нас есть файл xsd, в котором уже определены контракты. Мы используем xsd.exe для создания классов для нашей службы WCF и снова используем XmlSerializerFormat для нашей веб-службы.

Мне кажется, что это странно, когда WCF генерирует новый XSD для классов, которые xsd.exe сгенерировал для нас, в то время как у нас уже есть наше определение XSD, которое можно взять.

Хотя xsd.exe отлично справляется с созданием классов, он также упрощает сложные типы, как вы можете видеть в моем предыдущий вопрос; это означает, что xsd на самом деле немного меняется, когда он генерирует классы и снова используется в веб-сервисе; проблема ArrayOfStringXXX..

Можем ли мы указать службе WCF использовать наш собственный файл xsd для своего контракта вместо создания нового контракта на основе того, что предоставляет xsd.exe?

Что я пробовал:

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

TL;DR: Можем ли мы указать нашей службе WCF наш собственный файл xsd вместо того, чтобы позволять ему генерировать свой собственный?

Спасибо


person Arcturus    schedule 07.12.2012    source источник


Ответы (1)


Вы можете использовать такие инструменты, как WSCF.blue, для создания классов контрактов данных из вашего XSD-файла. У меня есть опыт в этом, и в большинстве случаев это работает нормально. Хорошее объяснение см. в этом блоге.

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

В Visual Studio 2012 для этого также появилась новая опция, см. документацию. . Я не проверял это сам.

Этот метод разработки называется сначала контракт, так что дополнительную информацию вы найдете в Google :-)

person GTG    schedule 07.12.2012
comment
Я уже пробовал WSCF.blue, и он также создает string[] вместо классов... Посмотрю на инструмент Contract-First! - person Arcturus; 10.12.2012
comment
Кажется, что панель параметров WCF видна только в проектах библиотеки служб WCF, а НЕ в приложении службы WCF. - person GTG; 10.12.2012