Подтвердить что ты не робот

Создание WSDL из файла XSD

Мне нужно создать файл WSDL с учетом файла XSD. Как мне это сделать? Могу ли я сделать это в VS2005? Каков самый простой способ сделать это?

4b9b3361

Ответ 1

Вы не можете - XSD описывает аспекты DATA, например. webservice - WSDL описывает ФУНКЦИИ веб-сервисов (вызовы методов). Обычно вы не можете определить вызовы методов из ваших данных.

Это действительно две отдельные отличительные части уравнения. Для простоты вы часто импортируете свои определения XSD в WSDL в теге <wsdl:types>.

Марк

(спасибо Cheeso за то, что он указал на мое неточное использование терминов)

Ответ 2

Я хотел бы отличать marc_s от этого, который написал:

XSD описывает аспекты DATA, например. веб-службы - WSDL описывает ФУНКЦИИ веб-служб (вызовы методов). Обычно вы не можете выясните метод вызова из вашего только данные.

WSDL не описывает функции. WSDL определяет сетевой интерфейс, который сам состоит из конечных точек, которые получают сообщения, а затем иногда отвечают сообщениями. WSDL описывает конечные точки, а также сообщения запроса и ответа. Он очень ориентирован на сообщения.

Мы часто рассматриваем WSDL как набор функций, но это связано с тем, что инструменты веб-сервисов обычно генерируют прокси-серверы на стороне клиента, которые вызывают операции WSDL как методы или вызовы функций. Но WSDL этого не требует. Это побочный эффект от инструментов.

EDIT. Кроме того, в общем случае XSD не определяет аспекты данных веб-службы. XSD определяет элементы, которые могут присутствовать в совместимом XML-документе. Такой документ может быть обменен как сообщение через конечную точку веб-службы, но этого не должно быть.


Возвращаясь к вопросу, я бы ответил на оригинальный вопрос немного по-другому. Я бы сказал, ДА, возможно, создать файл WSDL с файлом xsd, таким же образом, как можно создать омлет, используя яйца.

EDIT: мой первоначальный ответ был неясным. Дай мне попробовать снова. Я не предполагаю, что XSD эквивалентен WSDL, и что XSD достаточно для создания WSDL. Я говорю, что можно создать WSDL, учитывая XSD файл, если по этой фразе вы имеете в виду "сгенерировать WSDL, используя XSD файл". Поступая таким образом, вы увеличите информацию в файле XSD для создания WSDL. Вам нужно будет определить дополнительные вещи - части сообщений, операции, типы портов - ни один из них не присутствует в XSD. Но можно "генерировать WSDL, учитывая XSD", с некоторыми творческими усилиями.

Если фраза "сгенерировать WSDL с учетом XSD" взята, чтобы подразумевать "механическое преобразование XSD в WSDL", тогда ответ НЕТ, вы не можете этого сделать. Это должно быть ясно из моего описания WSDL выше.

При создании WSDL с использованием XSD файла вы обычно будете делать что-то вроде этого (обратите внимание на шаги объявления в этой процедуре):

  • импортировать XML-схему в элемент WSDL (элемент wsdl: types)
  • добавить к набору типов или элементов с дополнительными, или обертки (пусть говорят массивы или структуры, содержащие базовые типы) по желанию. Результат # 1 и # 2 содержит все типы, которые будет использовать WSDL.
  • определить набор входящих и исходящих сообщений (и, возможно, сбоев) в терминах тех ранее определенных типов.
  • Определите тип порта, который представляет собой набор пар сообщений in.out. Вы можете подумать о том, что тип порта является аналогом WSDL с интерфейсом Java.
  • Укажите привязку, которая реализует тип порта и определяет, как будут обрабатываться сообщения.
  • Укажите службу, которая реализует привязку.

Большая часть WSDL больше или меньше шаблонов. Это может показаться сложным, но это в основном из-за этих страшных и обильных угловых скобок, которые я нашел.

Некоторые из них предположили, что это длинный ручной процесс. Может быть. Но вы можете создавать совместимые сервисы. Вы также можете использовать инструменты для определения WSDL. Динамическое создание WSDL из кода приведет к ошибкам interop.

Ответ 3

Я знаю, что этот вопрос старый, но он заслуживает ответа. Я лично предпочитаю создавать WSDL вручную и проверять соответствие с помощью SoapUI. Но иногда (специально для сложных WSDL) у вас есть три способа генерации одного из XSD:

Я предпочитаю подход CXF, так как я парень CLI. Если у него есть CLI, вы можете автоматизировать (это мой девиз). И мне нравится подход Spring WS по крайней мере с тех пор, как он использует множество соглашений по конкретным средам.

Есть больше людей, которые знают CXF (я считаю), чем Spring WS. Так что все, что может вызвать кривую обучения для нового инженера (без каких-либо явных преимуществ или ROI), - это то, на что я нахмурился.

Следует также сказать, что любой сгенерированный WSDL должен быть проверен на достоверность и соответствие (и подстраиваться до его соответствия), а ваше приложение публикует статический wsdl (в отличие от возврата автоматически сгенерированного файла).

По моему опыту, вы начинаете с WS-I-совместимого wsdl, а затем ваше приложение автоматически генерирует (и возвращает потребителям) несоответствующий.

Другими словами, остерегайтесь автоматической магии.

Ответ 4

Этот инструмент xsd2wsdl часть проекта Apache CXF, который будет генерировать минималистский WSDL.

Ответ 5

Лично (и учитывая то, что я знаю, т.е. Java и ось), я бы сгенерировал модель данных Java из файлов .xsd(Axis 2 может это сделать), а затем добавьте интерфейс для описания моего веб-сервиса, который использует эту модель, а затем генерирует WSDL из этого интерфейса.

Так как .NET имеет все эти функции, он также должен делать все это в этой экосистеме.

Ответ 6

мы можем сгенерировать wsdl файл из xsd, но вы должны использовать корпоративный пакет eclipse (OEPE). просто создайте xsd, а затем щелкните правой кнопкой мыши- > new- > wsdl...