• В чем разница между XSD и WSDL

    Страница 2 из 3

    Описание с помощью WSDL

    SOAP работает очень хорошо, если о Web-службе все известно. Однако это не всегда так. Средством описания интерфейса для доступа к Web-службе является язык WSDL (Web Services Description Language - язык описания Web-служб). Этот стандарт совместно разработан компаниями IBM, Microsoft и webMethods. У каждой из этих трех компаний был собственный подход к разработке стандарта для описания Web-служб: IBM создала NASSL, Microsoft разработала SCL, а компания webMethods придумала WIDL.

    Результатом их сотрудничества стала версия 1.1 языка WSDL, По поводу W3C следует отметить, что так же как и с SOAP, консорциум W3C на основе версии 1.1 разработал версию WSDL 1.2, которая теперь является рекомендацией W3C. WSDL-описание Web-службы содержит всю необходимую для использования этой службы информацию, включая доступные методы и их параметры. Эта информация содержится в следующих пяти элементах:

    • - поддерживаемые протоколы.
    • - сообщения Web-службы (запрос, ответ).
    • Все доступные методы.
    • - URI службы.
    • - используемые типы данных.

    Вся эта информация хранится в корневом элементе WSDL-описания , В листинге ниже представлен пример WSDL-описания Web-службы.

    WSDL-описание Web-службы

    Да уж... без стаканА не разберёшся, а ведь это один из самых простеньких(!) WSDL файлов. К сожалению, один из недостатков SOAP-расширения для РНР 5 связан с тем, что в отличие от других реализаций SOAP, оно не позволяет создавать WSDL-описания автоматически (во всяком случае, пока что). Наверняка этот недостаток исправят в будущих версиях РНР.

    Кстати!

    Для автоматического создания WSDL-описания вы можете использовать альтернативные реализации протокола SOAP в РНР:

    Поиск в справочнике с помощью UDDI

    Теперь, после того как мы знаем, как получать информацию о Web-службе и как ее запрашивать, нужно научиться находить такую службу. Для этой цели существует нечто похожее на "Желтые страницы", а именно - реестры UBR (Universal Business Registries - универсальные бизнес-реестры) - справочники Web-служб.

    Существует несколько таких реестров, среди которых реестры компаний IBM, Microsoft, NTT-Com и SAP. Эти реестры синхронизируют свои данные, поэтому можно пользоваться любым из них. Текущей версией стандарта UDDI является версия UDDI 3.0, хотя большинство реализаций используют версию 2. Среди разработчиков этого стандарта такие компании-гиганты, как HP, Intel, Microsoft и Sun.

    Для взаимодействия с UBR существует два типа API-интерфейсов: Inquiry API и Publish API . Интерфейс Inquiry API (Запрос) предназначен для запроса служб в реестрах UBR, а интерфейс Publish API (Публикация) позволяет разработчикам регистрировать свои службы . Похоже, что заполнение содержимого реестров спамом - это только вопрос времени:)

    Кстати!

    Существуют тестовые реестры, предназначенные для тестирования регистрации служб перед их размещением в "настоящих" реестрах.

    Так выглядит запрос Web-службы:

    sortByNameAsc sortByDateDesc %guid%

    В примере выше видно, что UDDI-запрос инкапсулирован в SOAP-сообщение, поэтому выглядит он довольно знакомым. Ответом на запрос является также SOAP-документ, показанный ниже:

    Web Services Guided Tour Sample Web services for Guided Tourbook Guided Tour StockQuote Service

    Установка

    Установить SOAP-расширение для PHP5 довольно легко. В Windows этот модуль находится в подкаталоге ext каталога установки РНР. Для его использования необходимо в файл php.ini добавить следующую строку: extension=php_soap.dll Для работы этому модулю требуется, которая включена в РНР 5 по умолчанию, по крайней мере, в Windows-версии.

    В этой статье я расскажу о том, что такое WSDL-файл, зачем он нужен и как с ним работать.

    Карта статьи

    Что такое WSDL

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

    Путь к wsdl-файлу обычно имеет вид http://host/services/wsdl/gbdar-v2-2.wsdl

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

    SoapUi

    Одним из таких инструментов является soapUi (). Установив дистрибутив, предназначенный для вашей платформы, вы сможете создать новый проект командой File/New SoapUi project. В диалоге создания нового проекта оставляем включенной галочку Create sample requests

    Выполнение запросов

    В новом проекте будут автоматически созданы шаблоны запросов для сервиса, описание которого содержится в wsdl-файле. Слева в дереве Вы увидите перечень функций, содержащихся в WSDL-файле. Я раскрою функцию Replication. Внутри нее присутствует запрос Request1, дважды щелкнув по которому, мы увидим диалог с шаблоном запроса, вместо параметров по умолчанию будут проставлены знаки вопроса. Чтобы функция корректно выполнилась, необходимо заполнить все параметры, не помеченные тегом Optional, после чего нажать зеленый треугольник в верхнем левом углу диалога.

    Если все параметры указаны верно, справа появится ответ сервиса на запрос.

    SoapUi предоставляет возможность просмотра параметров WSDL-файла, для этого необходимо дважды щелкнуть по наименованию интерфейса (помечен зеленой иконкой в дереве WSDL-файла, у меня — gdbar-v2-2SOAP). В диалоговом окне вы можете найти:

    • Вкладка OverView — описание общих параметров WSDL, список функций и связанных с ними действий сервера
    • Вкладка Service Endpoints — путь к серверу и прочие параметры
    • WSDL Content — дерево навигации по файлу
    • WS-I Compliance — здесь можно создать WS-I отчет по интерфейсу

    Генерация документации

    SoapUi позволяет нам генерировать документацию по функциям WSDL. Для этого щелкните правой кнопкой по интерфейсу и вызовите команду Generate Documentation. В результате получим подробный мануал в html-формате.

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

    Страница 2 из 3

    Описание с помощью WSDL

    SOAP работает очень хорошо, если о Web-службе все известно. Однако это не всегда так. Средством описания интерфейса для доступа к Web-службе является язык WSDL (Web Services Description Language - язык описания Web-служб). Этот стандарт совместно разработан компаниями IBM, Microsoft и webMethods. У каждой из этих трех компаний был собственный подход к разработке стандарта для описания Web-служб: IBM создала NASSL, Microsoft разработала SCL, а компания webMethods придумала WIDL.

    Результатом их сотрудничества стала версия 1.1 языка WSDL, По поводу W3C следует отметить, что так же как и с SOAP, консорциум W3C на основе версии 1.1 разработал версию WSDL 1.2, которая теперь является рекомендацией W3C. WSDL-описание Web-службы содержит всю необходимую для использования этой службы информацию, включая доступные методы и их параметры. Эта информация содержится в следующих пяти элементах:

    • - поддерживаемые протоколы.
    • - сообщения Web-службы (запрос, ответ).
    • Все доступные методы.
    • - URI службы.
    • - используемые типы данных.

    Вся эта информация хранится в корневом элементе WSDL-описания , В листинге ниже представлен пример WSDL-описания Web-службы.

    WSDL-описание Web-службы

    Да уж... без стаканА не разберёшся, а ведь это один из самых простеньких(!) WSDL файлов. К сожалению, один из недостатков SOAP-расширения для РНР 5 связан с тем, что в отличие от других реализаций SOAP, оно не позволяет создавать WSDL-описания автоматически (во всяком случае, пока что). Наверняка этот недостаток исправят в будущих версиях РНР.

    Кстати!

    Для автоматического создания WSDL-описания вы можете использовать альтернативные реализации протокола SOAP в РНР:

    Поиск в справочнике с помощью UDDI

    Теперь, после того как мы знаем, как получать информацию о Web-службе и как ее запрашивать, нужно научиться находить такую службу. Для этой цели существует нечто похожее на "Желтые страницы", а именно - реестры UBR (Universal Business Registries - универсальные бизнес-реестры) - справочники Web-служб.

    Существует несколько таких реестров, среди которых реестры компаний IBM, Microsoft, NTT-Com и SAP. Эти реестры синхронизируют свои данные, поэтому можно пользоваться любым из них. Текущей версией стандарта UDDI является версия UDDI 3.0, хотя большинство реализаций используют версию 2. Среди разработчиков этого стандарта такие компании-гиганты, как HP, Intel, Microsoft и Sun.

    Для взаимодействия с UBR существует два типа API-интерфейсов: Inquiry API и Publish API . Интерфейс Inquiry API (Запрос) предназначен для запроса служб в реестрах UBR, а интерфейс Publish API (Публикация) позволяет разработчикам регистрировать свои службы . Похоже, что заполнение содержимого реестров спамом - это только вопрос времени:)

    Кстати!

    Существуют тестовые реестры, предназначенные для тестирования регистрации служб перед их размещением в "настоящих" реестрах.

    Так выглядит запрос Web-службы:

    sortByNameAsc sortByDateDesc %guid%

    В примере выше видно, что UDDI-запрос инкапсулирован в SOAP-сообщение, поэтому выглядит он довольно знакомым. Ответом на запрос является также SOAP-документ, показанный ниже:

    Web Services Guided Tour Sample Web services for Guided Tourbook Guided Tour StockQuote Service

    Установка

    Установить SOAP-расширение для PHP5 довольно легко. В Windows этот модуль находится в подкаталоге ext каталога установки РНР. Для его использования необходимо в файл php.ini добавить следующую строку: extension=php_soap.dll Для работы этому модулю требуется, которая включена в РНР 5 по умолчанию, по крайней мере, в Windows-версии.

    XSD: определение схемы XML.

    XML: расширяемый язык разметки.

    WSDL: язык определения веб-сервисов.

    Я не собираюсь отвечать технически. Я направляю это объяснение на новичков.

    Нелегко общаться между двумя различными приложениями, которые разрабатываются с использованием двух разных технологий. Например, компания в Чикаго может разработать веб-приложение с использованием Java, а другая компания в Нью-Йорке может разработать приложение на С#, и когда эти две компании решили обмениваться информацией, тогда XML появится в картине. Он помогает хранить и транспортировать данные между двумя различными приложениями, которые разрабатываются с использованием разных технологий. Примечание. Это не ограничивается языком программирования, пожалуйста, исследуйте транспортировку информации между двумя различными приложениями.

    XSD - это определение схемы. Под этим я имею в виду, что он говорит пользователям разрабатывать свой XML в такой схеме. Пожалуйста, смотрите ниже изображения и внимательно следите за ним с помощью элемента "load-on-startup" и его типа, который является целым числом. В изображении XSD вы можете видеть, что оно предназначено для целочисленного значения для "load-on-startup" и, следовательно, когда пользователь создал свой XML-код, он передал значение int этому конкретному элементу. Напомним, что XSD - это схема и стиль, тогда как XML - это форма для связи с другим приложением или системой. Нужно видеть XSD и создавать XML таким образом, иначе он не будет связываться с другим приложением или системой, которая была разработана с использованием другой технологии. Компания в Чикаго предоставляет шаблон XSD для компании в Техасе, чтобы писать или генерировать свой XML в данном формате XSD. Если компания в Техасе не смогла придерживаться тех правил или схем, упомянутых в XSD, тогда невозможно ожидать правильной информации от компании в Чикаго. После вышеупомянутой истории есть так много всего, что любитель или новичок должен знать, кодируя некоторые вещи, как я сказал выше. Если вы действительно хотите узнать, что будет дальше, тогда лучше посидеть с старшими инженерами программного обеспечения, которые фактически разработали веб-службы. Далее идет WSDL, пожалуйста, следуйте изображениям и попытайтесь выяснить, куда будет вписываться WSDL.

    *************** ======== Ниже представлено частичное изображение XML ========== ********* ******

    *************** ======== Ниже представлено частичное изображение XSD ========== ********* ******

    *************** ======== Ниже представлено частичное изображение WSDL ======= *********** **

    Мне пришлось создать образец WSDL для веб-службы под названием "Книга". Обратите внимание, что это XSD, но вы должны назвать его WSDL (язык определения веб-сервисов), потому что он очень специфичен для веб-служб. Ниже WSDL (или, другими словами, XSD) создается для класса Book.java, и он создал службу SOAP. Как создала веб-служба SOAP, это другая тема. Нужно написать класс Java, и перед выполнением его создания в качестве веб-службы пользователь должен убедиться, что Axis2 API установлен, и Tomcat для размещения веб-службы на месте.

    В качестве сервис-провайдера (тот, кто позволяет другим (клиентам) получать доступ к информации или данным из своих систем) фактически дает клиенту (тем, кто должен использовать информацию или данные сервис-провайдера) полный доступ к данным через веб-службу, ни одна компания на земле не готова предоставить свою базу данных для посторонних. Как и моя компания, я решил предоставить некоторую информацию о продуктах через веб-службы, поэтому нам пришлось создать шаблон XSD и передать некоторые из наших клиентов, которые хотят работать с нами. Они должны написать код для полного использования данного XSD и сделать вызовы Web Service для извлечения данных из servicer и преобразования данных, возвращенных в их подходящее требование, а затем отображать или публиковать данные или информацию о продукте на своем веб-сайте. Простым примером может служить бронирование авиабилетов FLIGHT. Авиакомпания позволит третьим сторонам использовать данные рейса на своем сайте для продажи билетов. Но опять-таки есть намного больше, просто не позволяя стороннему агентству по авиабилетам продавать билеты, там будут синхронизация и безопасность на месте. Если нет синхронизации, то вероятность 100% более одного клиента может купить тот же авиабилет из разных источников.

    Я надеюсь, что эксперты будут способствовать моему ответу. Для новичков или новичков очень сложно понять XML, XSD, а затем работать с веб-службами.