Использование нашего собственного файла 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, вместо того, чтобы позволить ему генерировать свой собственный?
Спасибо
1 ответ
Вы можете использовать такие инструменты, как WSCF.blue, чтобы сгенерировать классы контрактов данных из файла XSD. У меня есть опыт из этого, и он работает нормально для большинства случаев. Смотрите этот блог для хорошего объяснения.
Есть и другие инструменты, которые позволяют это, см. Этот вопрос для некоторых предложений.
Кажется, в Visual Studio 2012 также появилась новая опция для этого, см. Документацию. Я не проверял это сам.
Этот метод разработки сначала называется контрактом, поэтому вы найдете еще больше информации в Google:-)