Мы работаем над SOA, как на стороне клиента (Silverlight), так и на стороне сервера (WCF), но с возможностью реализации клиентов сторонними разработчиками (.NET, Java и т. Д.). Мы используем WSDL-первый подход и хотим, чтобы наши классы интерфейса данных и сервисов (C #) автоматически генерировались из схем во время процесса сборки. Поэтому нам нужен код общих классов данных, который не будет регенерироваться для каждой службы для успешной компиляции.
Я попробовал утилиту svcutil , пытаясь сначала создать все классы контрактов данных из XSD с переключателем / dataContractOnly и скомпилировать их в отдельную библиотеку классов - на первом этапе . А затем для создания каждого кода интерфейса службы, исключая уже имеющиеся в библиотеке классы, с параметром / reference - второй этап .
Проблема в том, что наши схемы не соответствуют требованиям DataContractSerializer, поэтому svcutil не может создавать классы данных. Даже после того, как я использовал для этой цели утилиту xsd , я не могу использовать переключатель svcutil / reference на втором этапе, поскольку этот ключ работает только для классов DataContract. И это не относится к классам, сгенерированным утилитой xsd.
Итак, я что-то упустил с этими инструментами и есть ли способ использовать их в моей ситуации, или есть какие-либо другие инструменты для генерации классов данных и сервисных интерфейсов из схем XSD и WSDL, в случае, когда используются общие типы данных? используется несколькими сервисными интерфейсами? Или мы не должны ограничивать себя с помощью DataContract-совместимых схем? Какой подход вы используете для WSDL-первой разработки?