Главная » Java, Web, XML » Деятельность организации WS-I

0

Список протоколов и спецификаций Web Services далеко не ограничен перечисленными выше документами. Можно назвать еще множество аббревиатур, относящихся к Web-службам: SAML, WSXL, WSCL, WSCM, WSEL, WSML, WSUI, WS-License, WS-Referral. Пока я их перечисляю, возникают новые спецификации. Такую тенденцию необходимо упорядочить и стандартизировать. С этой целью весной 2002 года по инициативе IBM и Microsoft была создана организация, названная "Web Services Interoperability Organization", сокращенно WS-I. Ее целью была провозглашена выработка стандартов, обеспечивающих совместимость программных продуктов разных производителей, относящихся к разным платформам, операционным системам и языкам программирования. К организации WS-I уже примкнули все крупные производители компьютерного оборудования и программного обеспечения. Официальный сайт организации http://www.ws-i.org/.

Организация WS-I вырабатывает четыре типа документов: профили взаимодействия, инструменты для тестирования, образцы применения и примеры приложений, построенных по этим образцам.

Профиль взаимодействия (interoperability profile) или просто профиль — это набор протоколов и/или спецификаций, взятых в определенный момент их развития, вместе с правилами их наилучшего использования. Профиль содержит готовое проверенное решение, которое могут сразу применить создатели Web-служб.

Основой для первого профиля, разработанного организацией WS-I, послужил набор взаимодействующих протоколов и спецификаций XML Schema 1.0, SOAP 1.1, WSDL 1.1 и UDDI 1.2. Этот профиль назван "WS-Basic".

Профиль WS- Basic

Профиль WS-Basic Profile создан фирмами IBM, Microsoft и BEA Systems. Его черновая версия опубликована на странице http://www.ws- i.org/Proffles/Basic/2002-10/BasicProfile- 1.0-WGD.htra. Профиль рассматривает четыре группы вопросов: пересылку SOAP-посланий, описание WSDL, регистрацию UDDI и безопасность. Рассмотрим их подробнее.

Пересылка SOAP-посланий

Организация WS-1 выбрала для профиля WS-Basic следующие версии протоколов:

•            SOAP 1.1;

•            XML 1.0 (Second Edition);

•HTTP/1.1.

Большинство рекомендаций по использованию протокола SOAP 1.1 относится к сообщениям об ошибках          Профиль рекомендует не использовать в элементе других вложенных элементов кроме <faultstring>, <faultactor> и <detail>. Имена этих элементов рекомендуется записывать без префиксов. В элементе <faultcode> следует использовать только коды ошибок, определенные SOAP 1.1.

Профиль не рекомендует употреблять атрибут encodingstyle в элементах тела SOAP-послания <Body> и вообще во всех элементах, определенных в пространстве имен с идентификатором http://schemas.xmlsoap.org/soap/envelope/.

Само SOAP-послание не должно содержать описаний DTD, инструкций по обработке и никаких элементов после элемента <Body>.

Все элементы, вложенные в элемент <Body>, должны быть записаны расширенными именами с префиксами. Это облегчает синтаксический разбор послания.

Профиль рекомендует использовать для пересылки SOAP-посланий только протокол HTTP версии 1.1, причем только метод POST. Если применен другой HTTP-метод, то сервер должен вернуть код ответа "405 Method not Allowed". Послание с сообщением об ошибке            должно иметь код

ответа "500 Server Error", а послание без элемента              — код ответа "200

или "202 Accepted".

Сервер должен вернуть ответ с кодом "415 Unsupported Media Туре", если в поле  заголовка запроса не был указан

Сервер должен послать сообщение с кодом ответа "307 Temporary Redirect", если он направил сообщение другому серверу.

Не следует использовать расширения протокола HTTP, сделанные в рекомендации RFC 2774.

Как видите, большинство этих рекомендаций учтено в версии SOAP 1.2.

Описание WSDL

Профиль WS-Basic содержит следующие версии спецификаций: •WSDL 1.1; • XML Schema 1.0.

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

Большинство рекомендаций относится к элементу                           описания

WSDL. Его бездумное применение приводит к большим трудностям при разборе описания Web-службы. Профиль рекомендует записывать элемент <import> первым в элементе <definitions> и использовать его только для включения других описаний или определений на языке XSD. В первом случае надо обращать особое внимание на значение атрибута targetNamespace включаемого описания. Оно должно соответствовать значению атрибута namespace элемента <import>. В последнем случае элемент <import> следует включать в элемент <types>.

Элемент <types> следует записывать первым в элементе <definitions> или сразу после элемента <import>. В элементе <types> не следует применять имена элементов из пространств имен, на которые нет ссылок в элементе <import>.

При описании посланий документного стиля в элементе <message> следует записывать не более одного элемента <part>, описывающего тело <Body> SOAP-послания. При этом надо обязательно использовать атрибут element, указывающий на XSD-определение типа элемента.

При описании посланий процедурного стиля можно записывать сколько угодно элементов <part>, при этом следует использовать их атрибут type и строго соблюдать порядок следования элементов <part>. Результат выполнения процедуры должен содержать только один элемент        может быть, сложного типа.

В описании нельзя использовать операции типов                                          и

notification.

Профиль рекомендует применять для описания пересылки посланий (SOAP binding) только протокол SOAP 1.1. В элементе <soap:binding> надо атрибутом transport указать значение "http://schemas.xmlsoap.org/soap/http". Так сделано в листинге 4.2. В атрибуте use следует указывать значение по умолчанию "literal".

В элементах <soap:fault> и <soap:headerfault> обязательно надо использовать атрибут part, а в элементе <soap:fault> еще и атрибут name.

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

Большая часть этих рекомендаций уже учтена в версии WSDL 1.2.

Регистрация UDDI

В профиль WS-Basic включены следующие версии спецификаций UDDI 2.0:

?           UDDI Version 2.04 API Published Specification;

?           UDDI Version 2.03 Data Structure Reference;

?           Version 2.0 UDDI XML Schema 2001;

?           UDDI Version 2.03 Replication Specification;

?           Published Specification, Version 2.03 Replication XML Schema 2001;

?           UDDI Version 2.03 XML Custody Schema;

?           UDDI Version 2.01 Operator’s Specification, Published Specification.

Основная рекомендация профиля WS-Basic — максимально согласовать описание Web-службы, сделанное на языке WSDL, с описанием UDDI. Для этого профиль советует ‘ установить взаимно однозначное соответствие между элементами      описания и элементами

описания UDDI. При этом значение атрибута

location элемента <wsdl:port> должно совпадать со значением атрибута accessPoint элемента

Если такое взаимно однозначное соответствие установлено, то следует пометить элемент <uddi:businessService> как совместимый с профилем WS- Для этого в элементе                                                        вложенном в элемент

<categoryBag>, следует указать категорию ws-i-org:conformsTo И дать ей значение            .0".

Описание технических деталей                необходимо основывать на описа

нии WSDL. Для этого в элементе                                вложенном в элемент

<tModel>, следует указывать адрес описания WSDL, как это сделано в листинге 5.5. Кроме того, надо пометить элемент <tModel> как совместимый с описанием WSDL. Для этого надо во вложенном элементе <categoryBag> указать категорию uddi-org: types и дать ей значение "wsdlSpec".

Многие рекомендации профиля WS-Basic уже учтены в версии UDDI 3.0.

Безопасность

Для обеспечения безопасности профиль WS-Basic рекомендует протокол HTTPS, то есть следующие протоколы:

? HTTP Over TLS (рекомендация RFC 2818);

?           TLS Protocol Version 1.0 (рекомендация RFC 2246);

?           SSL Protocol Version 3.0;

?         Internet X.509 Public Key Infrastructure Certificate and CRL Profile (рекомендация RFC 2459).

Это старые испытанные средства, их применение давно отработано на практике. Профиль дает лишь одну рекомендацию по использованию этих протоколов — оговаривать с Web-службой детали их применения.

Как видите, профиль WS-Basic дает ценные практические рекомендации по эффективной организации работы Web-службы. Эти рекомендации уже воплощаются в следующих версиях спецификаций Web Services. Работа только началась. Организация WS-I готовит новые профили, образцы их применения и примеры приложений. Вы можете ознакомиться с ними на сайте организации http://www.ws-i.org/.

Что дальше?

Вот и последняя страница книги. Вы познакомились с новейшей Web- технологией, широко распространяющейся по компьютерному миру и бурно развивающейся вширь и вглубь. Станет ли эта технология доминирующей, затмит ли она другие Web-технологии — неизвестно. Полувековая история развития вычислительной техники знает много шумных открытий, которым прочили роль панацеи от всех программистских бед. Большинство этих технологий благополучно забыто, другие заняли свое место и скромно работают на благо переработки информации. Скорее всего, то же самое произойдет и с Web Services. Но пока ниша Web-служб четко не определена. От нас, от нашего труда и нашей активности зависит место и область применения Web Services. Успехов вам в ваших проектах!

• • Листинг 5.9. Получение информации из реестра с помощью JAXR

import javax.xml.registry.*; import javax.xml.registry.infomodel.*; import j ava.net.*; import java.util.*;

•      public Ebdpoint getTo () — возвращает содержимое элемента <to> с адресом получателя;

•          public string getRelatesTo () — возвращает содержимое ссылки <relatesTo>;

•  password_property — строка типа string с паролем пользователя Web- службы;

import j avax. xml. rpc. Stub ; import bookinfo. * ;

public class BooklnfoStubClientf

public static void main (String [ ] args) {

try{

Stub stub =

(Stub) (new BookInfo_Impl () .getBooklnfoPort () ) ; stub._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY,

"http://localhost:8080/services/bookinfo"); BooklnfoPort bip = (BooklnfoPort) stub;

Book book = bip.getInfo("5-94157-041-4") ; System.out.println(book.getTitle());

import java.net.URL; import javax.xml.rpc.*;

•     Рабочая группа, разрабатывающая правила работы с цифровыми подписями на языке XML, ее сайт http://www.w3.org/TR/xmldsig-core/, предложила две рекомендации: RFC 3275 описывает синтаксис цифровой

 

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии