телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Какво е "уеб услуга" на обикновен английски? XML уеб услуги. Преглед на технологиите

Заглавието на темата наистина е въпрос, защото... Аз самият не знам какво е и за първи път ще се опитам да работя с него в рамките на тази статия. Единственото нещо, което мога да гарантирам е, че кодът, представен по-долу, ще работи, но моите фрази ще бъдат само предположения и предположения за това как аз самият разбирам всичко това. И така, да тръгваме...

Въведение

Трябва да започнем с това защо е създадена концепцията за уеб услугите. По времето, когато тази концепция се появи в света, вече съществуваха технологии, които позволяваха на приложенията да взаимодействат от разстояние, където една програма можеше да извика някакъв метод в друга програма, която можеше да бъде стартирана на компютър, намиращ се в друг град или дори държава. Всичко това е съкратено като RPC (Remote Procedure Calling). Примери включват CORBA технологиите, а за Java - RMI (Remote Method Invoking). И всичко изглежда добре в тях, особено в CORBA, защото... Можете да работите с него на всеки език за програмиране, но нещо все още липсваше. Вярвам, че недостатъкът на CORBA е, че работи чрез някои от собствените си мрежови протоколи вместо обикновен HTTP, който ще пасне през всяка защитна стена. Идеята на уеб услугата беше да създаде RPC, който да бъде вмъкнат в HTTP пакети. Така започна разработването на стандарта. Какви са основните понятия на този стандарт:
  1. САПУН. Преди да извикате отдалечена процедура, трябва да опишете това повикване XML файл e SOAP формат. SOAP е просто един от многото XML маркировки, които се използват в уеб услугите. Всичко, което искаме да изпратим някъде чрез HTTP, първо се преобразува в XML SOAP описание, след което се натъпква в HTTP пакет и се изпраща до друг компютър в мрежата чрез TCP/IP.
  2. WSDL. Има уеб услуга, т.е. програма, чиито методи могат да бъдат извикани дистанционно. Но стандартът изисква тази програма да бъде придружена от описание, което казва, че „да, прав си – това наистина е уеб услуга и можеш да извикваш такива и такива методи от нея.“ Това описание е представено от друг XML файл, който има различен формат, а именно WSDL. Тези. WSDL е просто XML файл, описващ уеб услуга и нищо повече.
Защо толкова накратко питате? Не можеш ли да бъдеш по-конкретен? Вероятно е възможно, но за да направите това, ще трябва да се обърнете към книги като T. Mashnin, „Java Web Services“. Там, в първите 200 страници, има подробно описание на всеки таг на стандартите SOAP и WSDL. Струва ли си да се прави? Според мен не, защото... всичко това се създава автоматично в Java и трябва само да напишете съдържанието на методите, които трябва да бъдат извикани дистанционно. Така в Java се появи API като JAX-RPC. Ако някой не знае, когато казват, че Java има такъв и такъв API, това означава, че има пакет с набор от класове, които капсулират въпросната технология. JAX-RPC се разви с течение на времето от версия на версия и в крайна сметка стана JAX-WS. WS очевидно означава WebService и може да си помислите, че това е просто преименуване на RPC като популярна модна дума в наши дни. Това не е вярно, т.к Сега уеб услугите се отдалечиха от първоначалната идея и ви позволяват не само да извиквате отдалечени методи, но и просто да изпращате съобщения за документи във формат SOAP. Все още не знам защо е необходимо това; малко вероятно е отговорът тук да бъде „само в случай, че е необходимо“. Аз самият бих искал да се уча от по-опитни другари. И накрая, тогава се появи JAX-RS за така наречените RESTful уеб услуги, но това е тема на отделна статия. Въведението може да приключи до тук, защото... След това ще се научим да работим с JAX-WS.

Общ подход

В уеб услугите винаги има клиент и сървър. Сървърът е нашата уеб услуга и понякога се нарича крайна точка (като крайната точка, до която достигат SOAP съобщения от клиента). Трябва да направим следното:
  1. Опишете интерфейса на нашата уеб услуга
  2. Приложете този интерфейс
  3. Стартирайте нашата уеб услуга
  4. Напишете клиент и дистанционно извикайте желания метод на уеб услуга
Уеб услугата може да бъде стартирана различни начини: или опишете клас с основен метод и стартирайте уеб услугата директно като сървър, или я разположете на сървър като Tomcat или друг. Във втория случай не се стартираме сами нов сървъри не отваряме друг порт на компютъра, а просто казваме на контейнера за сървлети Tomcat, че „тук сме написали класове за уеб услуги, моля, публикувайте ги, така че всеки, който се свърже с вас, да може да използва нашата уеб услуга.“ Независимо от начина на стартиране на уеб услугата, ще имаме един и същ клиент.

сървър

Да стартираме IDEA и да творим нов проект Създаване на нов проект. Да посочим името HelloWebServiceи натиснете бутона Следващия, след това бутон завършек. В папка srcнека създадем пакет ru.javarush.ws. В този пакет ще създадем интерфейса HelloWebService: package ru. javarush. ws; // това са анотации, т.е. начин за маркиране на нашите класове и методи, // във връзка с технологията на уеб услугатаимпортиране на javax. jws. WebMethod; импортиране на javax. jws. Уеб сервиз; импортиране на javax. jws. сапун. SOAPBinding; // казваме, че нашият интерфейс ще работи като уеб услуга@Уеб сервиз // казваме, че уеб услугата ще се използва за извикване на методи@SOAPBinding (стил = SOAPBinding. Стил. RPC) публичен интерфейс HelloWebService ( // казваме, че този метод може да бъде извикан дистанционно@WebMethod public String getHelloString(Име на низ) ; ) В този код класовете WebService и WebMethod са така наречените анотации и не правят нищо, освен да маркират нашия интерфейс и неговия метод като уеб услуга. Същото важи и за класа SOAPBinding. Единствената разлика е, че SOAPBinding е анотация с параметри. IN в такъв случайпараметърът стил се използва със стойност, показваща, че уеб услугата ще работи не чрез съобщения на документи, а като класически RPC, т.е. за извикване на метод. Нека внедрим логиката на нашия интерфейс и да създадем клас HelloWebServiceImpl в нашия пакет. Между другото, отбелязвам, че завършването на клас с Impl е конвенция в Java, според която имплементацията на интерфейсите се обозначава така (Impl - от думата implementation, т.е. реализация). Това не е изискване и вие сте свободни да назовете класа както искате, но добрите обноски го изискват: package ru. javarush. ws; // същата анотация като при описание на интерфейса,импортиране на javax. jws. Уеб сервиз; // но тук се използва с параметъра endpointInterface, // указва пълното име на интерфейсния клас на нашата уеб услуга@WebService(endpointInterface= "ru.javarush.ws.HelloWebService") публичен клас HelloWebServiceImpl имплементира HelloWebService ( @Override public String getHelloString (име на низ) ( // просто върнете поздрава return "Здравей, " + име + "!" ; ) ) Нека стартираме нашата уеб услуга като независим сървър, т.е. без участието на Tomcat и сървъри за приложения (това е тема за отделна дискусия). За да направите това, в структурата на проекта в папката srcНека създадем пакет ru.javarush.endpoint и в него ще създадем клас HelloWebServicePublisher с основен метод: package ru. javarush. крайна точка; // клас за стартиране на уеб сървър с уеб услугиимпортиране на javax. xml. ws. Крайна точка; // клас на нашата уеб услугавнос ru. javarush. ws. HelloWebServiceImpl; публичен клас HelloWebServicePublisher ( public static void main (String... args) ( // стартиране на уеб сървъра на порт 1986 // и до адреса, посочен в първия аргумент, // стартиране на уеб услугата, предадена във втория аргументКрайна точка. публикувам( "http://localhost:1986/wss/здравей", нов HelloWebServiceImpl () ); ) ) Сега нека стартираме този клас, като щракнем Shift+F10. Нищо няма да се появи в конзолата, но сървърът работи. Можете да проверите това, като напишете реда http://localhost:1986/wss/hello?wsdl във вашия браузър. Страницата, която се отваря, от една страна, доказва, че имаме уеб сървър (http://), работещ на порт 1986 на нашия компютър (localhost), и, от друга страна, показва WSDL описание на нашата уеб услуга. Ако спрете приложението, описанието ще стане недостъпно, както и самата уеб услуга, така че няма да правим това, а ще преминем към писане на клиента.

Клиент

В папката на проекта srcНека създадем пакет ru.javarush.client и в него класа HelloWebServiceClient с основен метод: package ru. javarush. клиент; // необходимо за получаване на wsdl описание и чрез него // достигане до самата уеб услугаимпортиране на java. нето. URL адрес; // това изключение ще възникне при работа с URL обектимпортиране на java. нето. MalformedURLException; // класове за анализ на xml с wsdl описание // и достигне служебния таг в негоимпортиране на javax. xml. пространство от имена. QName; импортиране на javax. xml. ws. Обслужване; // интерфейс на нашата уеб услуга (имаме нужда от повече)внос ru. javarush. ws. HelloWebService; публичен клас HelloWebServiceClient ( публичен статичен void main (String args) хвърля MalformedURLException ( // създаване на връзка към wsdl описание URL url= нов URL ( "http://localhost:1986/wss/hello?wsdl") ; // Разглеждаме параметрите на следващия конструктор в първия таг на WSDL описанието - дефиниции // погледнете първия аргумент в атрибута targetNamespace // вижте втория аргумент в атрибута name QName qname = ново QName ("http://ws.javarush.ru/", "HelloWebServiceImplService"); // Сега можем да достигнем сервизния таг в wsdl описанието, Сервизно обслужване= Обслужване. създаване (url, qname) ; // и след това до тага на порта, вложен в него, така че // получаване на връзка към отдалечен от нас обект на уеб услуга HelloWebService здравей = услуга. getPort(HelloWebService.class); // Ура! Вече можете да извикате отдалечения методСистема. навън. println (здравей. getHelloString ("JavaRush")); ) ) Дадох максимум коментари за кода в листинга. Нямам какво да добавя, така че нека стартираме (Shift+F10). Трябва да видим текста в конзолата: Здравей, JavaRush! Ако не сте го виждали, вероятно сте забравили да стартирате уеб услугата.

Заключение

Тази тема предостави кратка екскурзия в уеб услугите. Още веднъж ще кажа, че голяма част от написаното е мое предположение за това как работи и затова не трябва да ми се доверявате твърде много. Ще бъда благодарен, ако знаещи хораЩе ме коригират, защото тогава ще науча нещо. UPD.

Издадохме нова книга „Маркетинг на съдържанието в в социалните мрежи: Как да влезете в главите на вашите абонати и да ги накарате да се влюбят във вашата марка.

Абонирай се

Уеб услуга (услуга) е програма, която организира взаимодействието между сайтовете. Информацията от един портал се прехвърля в друг.

Например, има авиокомпания. Тя има много полети, което означава, че има много билети. Той предава информация чрез уеб услуга към сайт за агрегатор на пътувания. Потребител, който влезе в агрегатора, ще може да закупи билети за тази авиокомпания директно там.

Друг пример за уеб услуги е сайт за проследяване на времето, който съдържа информация за метеорологичните условия в определен град или държава като цяло. Тази информациячесто се използва и от трети страни.

Информацията в интернет е разнообразна. Сайтовете се управляват различни системи. Използват се различни протоколи за предаване и криптиране. Уеб услугите опростяват обмена на информация между различни сайтове.

Архитектура и протоколи на уеб услуги

Можете да дефинирате 3 органа, които взаимодействат помежду си: каталог, изпълнител и клиент. След като създаде услугата, изпълнителят я регистрира в каталога, а клиентът намира услугата там.

Механизмът за обмен на данни се формира в Описанието на уеб услугите. Това е спецификация, обхващаща формати за препращане, типове съдържание, транспортни протоколи, които се използват в процеса на обмен на информация между клиента и превозвача на услугата.

Днес най-често се използват няколко технологии за внедряване на различни уеб услуги:

  1. TCP/IP е протокол, който се разбира от почти всяко мрежово оборудване, от мейнфрейми до преносими устройстваи PDA.
  2. HTML е универсален език за маркиране, използван за показване на съдържание на потребителски устройства.
  3. XML - универсален лекза обработка на всички видове данни. Други протоколи за обмен на информация могат да работят на негова основа: SOAP и WSDL.
  4. UDDI е универсален източник на разпознаване, интегриране и описание. Работи, като правило, в частни мрежи и все още не е намерил достатъчно разпространение.

Гъвкавостта на представените технологии е в основата на разбирането на уеб услугите. Те работят със стандартни технологии, които са независими от доставчиците на приложения и други мрежови ресурси. Може да се използва във всякакви операционна система, сървъри за приложения, езици за програмиране и др.

Предимства

  • Създаване необходими условияза взаимодействие софтуерни компонентинезависимо от платформата.
  • Уеб услугите са базирани на отворени стандартни протоколи. Благодарение на въвеждането на XML, създаването и конфигурирането на уеб услуги е опростено.
  • Използването на HTTP гарантира взаимодействието на системите чрез достъп до мрежата.

недостатъци

  • Ниска производителност и голям обем трафик, в сравнение със системите RMI, CORBA, DCOM, поради използването на XML съобщения в контекста на текста.
  • Ниво на сигурност. Всички съвременни уеб услуги трябва да прилагат кодиране и да изискват потребителско разрешение. Дали HTTPS е достатъчен тук или са необходими по-надеждни протоколи, като XML криптиране, SAML и др., се решава по време на разработката.

Задачи за уеб услуги

Уеб услугите могат да се използват в много области.

B2B транзакции

Интегрирането на процесите става веднага, без участието на хора. Например, актуализиране на каталога на онлайн магазина с нови продукти. Те се доставят в склада, а складодържателят отбелязва пристигането в базата данни. Информацията се прехвърля автоматично в онлайн магазина. И купувачът, вместо да отбелязва „Изчерпано“ на продуктовата карта, вижда количеството му.

Интегриране на корпоративни услуги

Ако компанията използва корпоративни програми, тогава уеб услугата ще ви помогне да настроите съвместната им работа.

Създаване на система клиент-сървър

Услугите се използват за конфигуриране на работата на клиента и сървъра. Това осигурява предимства:

  • не можете да го продадете сами софтуер, но да направят достъпа до уеб услугата платен;
  • По-лесно е да решавате проблеми с помощта на софтуер на трети страни;
  • по-лесно се организира достъпът до съдържанието и материалите на сървъра.

Уеб услугата е приложение, което улеснява техническа настройкавзаимодействие на ресурсите.

Уеб услугата е програма, която може да бъде достъпна от други програми през Интернет (http). Да приемем например, че имате функция, която предоставя текст в HTML формат. Целта на приложението е уеб браузърът да показва резултатите и човек лесно ще може да прочете този текст на страницата.

От друга страна, целева аудиторияУеб услугите са други програми или други уеб услуги, които консумират данни, обслужвани от уеб услугата. Обикновено изходът е на стандартен език, който може да бъде разбран от други програми. Вземете горния пример, ако уеб услуга извежда текст в XML формат, тогава други уеб услуги, които могат да четат или разбират XML, могат да използват този изход.

Основното предимство на уеб услугата е, че приложенията могат да бъдат написани на всеки език, но те могат да комуникират и обменят данни помежду си чрез уеб услугата. Софтуерни приложения, написани на различни езици за програмиране и работещи на различни платформи, могат да използват уеб услуги за комуникация през интернет (HTTP). Това е взаимодействие (например между Java и Python, или Windows приложенияи Linux) се свързва с използването на отворени стандарти (XML, SOAP, HTTP).

  • SOAP (прост протокол за достъп до обекти)
  • UDDI (Универсално описание, откриване и интегриране)
  • WSDL (Език за описание на уеб услуги)

Колко различни вида уеб услуги има?

Основно има два вида уеб услуги, протокол за прост достъп до обекти (SOAP) и трансфер на представително състояние (REST).

  • Уеб услугата SOAP приема заявка в XML формат и генерира изход в XML формат.
  • Уеб услугата REST е по-гъвкава и може да приема XML, както и JSON като заявка и генерира изход в XML, както и JSON или дори HTML

Повече информация този въпросможе да се изучава на нашия.

Валентин Колесов
разработчик на Красноярския клон на петербургската компания "Astrosoft", сертифициран специалист на Microsoft (MCSD, MCSE, MCDBA)
[имейл защитен]

Демонстрация на това как работи SOAP с помощта на пример за писане на уеб сървър

Какво е SOAP

Разпространените в момента технологии за дистанционно извикване на методи (DCOM, CORBA/IIOP и RMI) са доста трудни за конфигуриране и организиране на взаимодействие. Това води до затруднения в работата и функционирането разпределени системи(проблеми със сигурността, неудобство при транспортиране през защитни стени и др.). Много проблеми бяха решени чрез създаването на SOAP (Simple Object Access Protocol), прост XML-базиран протокол за обмен на съобщения в разпределени среди (WWW). Протоколът е предназначен за създаване на уеб услуги и методи за дистанционно извикване. SOAP може да се използва в комбинация с различни транспортни протоколи, включително HTTP, SMTP и други.

Какво представляват уеб услугите

Наричаме уеб услуги активно съдържание, което изпълнява някаква функционалност, и данни, разположени на уеб сървъри и предоставени за използване от външни приложения. Уеб услугите са напълно независими от езика и платформата за изпълнение. Външните приложения взаимодействат с услугите, използвайки стандартни протоколи и формати на данни. Технологията за уеб услуги е крайъгълният камък на програмния модел .NET на Microsoft.

За да демонстрира възможностите на SOAP, тази статия използва наскоро пуснатата реализация на SOAP Toolkit версия 2.0 от Microsoft. трябва да бъде отбелязано че Сегашна версияИнструментариумът е забележимо различен от предишния (Microsoft SOAP Toolkit за Visual Studio 6.0) и от бета версията на SOAP Toolkit 2.0.

Обектният модел на SOAP Toolkit предоставя както интерфейси от ниско, така и от високо ниво (SOAPClient, SOAPServer), които скриват от програмиста цялата „вътрешна кухня“ - анализиране и генериране на пакети, методи за извикване и т.н. Използвайки тези интерфейси, можете да използвате Уеб базирани инструменти по много елегантен начин услуги в разработени приложения. Обектът SOAPClient действа като прокси, предоставяйки интерфейс за уеб услуга и ви позволява да работите с него като с обикновен COM обект (фиг. 1).

  1. Клиентското приложение инстанцира обекта SOAPClient.
  2. SOAPClient чете файлове с описание на метода на уеб услугата (в WSDL и мета езика на уеб услугите, WSML). Тези файлове могат да се съхраняват и от страна на клиента.
  3. Клиентско приложение, използващо функции късно обвързванеметоди на обекта SOAPClient, извиква сервизния метод. SOAPClient генерира пакет заявка (SOAP Envelope) и го изпраща на сървъра. Може да се използва всеки транспортен протокол, но обикновено се използва HTTP.
  4. Сървърното приложение Listener (това може да бъде ISAPI приложение или ASP страница) получава пакета, създава обект SOAPServer и му предава пакета заявка. В допълнение, Listener обработва HTTP пакети от клиента, изпраща пакети с резултата от услугата до клиента, обработва грешки и използва функционалността на SOAP обекти.
  5. SOAPServer чете описанието на уеб услугата, зарежда описанието и пакета за заявка в XML DOM дървета.
  6. SOAPServer извиква метод на обекта или приложението, което имплементира услугата.
  7. Резултатите от изпълнението на метода или описанието на грешката се преобразуват от обекта SOAPServer в пакет с отговор и се изпращат на клиента.
  8. Обектът SOAPClient анализира получения пакет и връща на клиентското приложение резултатите от услугата или описание на възникналата грешка.

WSDL файлът е XML документ, който описва методите, изложени от уеб услуга, както и параметрите на метода, техните типове, имена и местоположение на услугата Listener. Съветникът за SOAP Toolkit автоматично генерира този документ, откъс от който е показан по-долу:

Етикетът Envelope трябва да бъде основният елемент на пакета. Елементът Header не е задължителен, но елементът Body трябва да присъства и да бъде директно дете на елемента Envelope. В случай на грешка при изпълнение на метод, сървърът генерира пакет, съдържащ елемент Fault в тага Body, който съдържа Подробно описаниегрешки.

Ако използвате интерфейсите на високо ниво SOAPClient, SOAPServer, тогава не е нужно да навлизате в тънкостите на формата на пакета, но ако желаете, можете да използвате интерфейси на ниско ниво или дори да създадете пакет „ръчно“, като използвате всяко програмиране език.

Обектният модел на SOAP Toolkit дава възможност за работа с API обекти от ниско ниво:

  • SoapConnector - осигурява работа с транспортния протокол за обмен на SOAP пакети.
  • SoapConnectorFactory - Предоставя метод за създаване на конектор за транспортния протокол, указан в WSDL файла (таг).
  • SoapReader - чете SOAP съобщения и изгражда XML DOM дървета.
  • SoapSerializer - съдържа методи за създаване на SOAP съобщение.·
  • IsoapTypeMapper, SoapTypeMapperFactory - интерфейси, които ви позволяват да работите със сложни типове данни.

Използвайки API обекти от високо ниво, можете да прехвърляте данни само от прости типове (int, string, float и т.н.), но спецификацията SOAP 1.1 ви позволява да работите с по-сложни типове данни, като масиви, структури, списъци и комбинации от тях. За да работите с такива типове, трябва да използвате интерфейсите IsoapTypeMapper и SoapTypeMapperFactory.

Пример

За да демонстрираме как работи SOAP, нека напишем проста уеб услуга, която може да събира и изважда числа. Сървърното приложение изисква IIS 5, за да работи. Windows среда 2000 или IIS4 на Windows NT 4.0 Service Pack 6 и инсталиран SOAP Toolkit 2.0.

Изисквания клиентско приложение- ОПЕРАЦИОННА СИСТЕМА Microsoft Windows 98/Me или Windows NT 4.0 Service Pack 6/2000 Service Pack 1, както и инсталиран SOAP Toolkit 2.0.

Създаване на сървър

Отворете нов ActiveX DLL проект във VB. Променете името на класа на SOAPClass и името на проекта на SOAPProj.

В класа създайте следните методи:

В следващия прозорец на съветника можете да изберете методи, които ще бъдат включени в уеб услугата. В този случай изберете всички методи. След това посочете къде ще се намира уеб приложението (например http://wsd010/soap/), задайте типа на приложението Listener (ASP или ISAPI), изберете ASP, формат на схема (по подразбиране). Посочете пътя, където ще бъдат разположени файловете с описание на уеб услугата и кодирането. След като съветникът приключи, ASP, WSDL и WSML файловете ще се появят в уеб директорията - това е Listener за ASP и описанието на услугата (вижте листинги 1-3).

Остава само да конфигурирате правата за достъп до уеб приложението - препоръчително е да инсталирате NT Challenge/Response удостоверяване. Това завършва работата по създаването на сървъра.

Създаване на клиент

Отворете нов стандартен EXE проект във VB. В менюто Project/References направете връзка към SOAP библиотеката на Microsoft. Създайте бутон във формуляра, напишете следния код в манипулатора за щракване върху бутон:

Dim SoapClient като нов SoapClient SoapClient.mssoapinit "http://wsd010/soap/SOAPService.wsdl" MsgBox SoapClient.AddNumbers(4, 3) MsgBox SoapClient.SubtractNumbers(3, 2)

Не забравяйте да промените адреса на уеб сървъра и пътя към WSDL файла във втория ред на адреса и пътя към вашата уеб услуга.

След създаването на обекта SOAPClient, той трябва да бъде инициализиран - посочете пътя до документа с описание на уеб услугата. След инициализацията обектът ще има методи за уеб услуга. Можете да работите с тях като с обикновен COM обект.

С помощта на отличния MsSoapT.exe (Trace Utility), включен в комплекта инструменти, можете да преглеждате пакети, преминаващи от клиент към сървър и обратно в реално време. За да направите това, трябва да намерите таг в WSDL файла и вместо ред като http://wsd010/soap/SOAPService.ASP напишете http://wsd010:8080/soap/SOAPService.ASP, т.е. порт 8080. След това трябва да стартирате проследяването на помощната програма и да приемете настройките по подразбиране, след което да създадете нов обект Formatted Trace. Сега всички SOAP пакети за работа с уеб услугата са достъпни за бърз преглед. Ако трасиращият не е зареден, тогава трябва да премахнете индикацията за порт 8080. На фиг. Фигура 4 показва съдържанието на пакета заявка за изпълнение на метода SubstractNumbers.

А пакетът с отговори изглежда така:

1

Ето как изглежда сървърният пакет, когато дойде в отговор на заявка с неправилен формат:

SOAP-ENV: Сървър Конектор - Лоша заявка към сървъра. -2146823238 800a13ba

Допълнителна информация по темата

http://msdn.microsoft.com/webservices/ и http://msdn.microsoft.com/soap/ - последна новиназа SOAP и уеб услуги от Microsoft. Там можете да намерите и най-новите версии на софтуера.

http://www.vbxml.com/soap/ - много полезна информацияза разработчици. Има презентации и уроци по SOAP.

http://www.w3.org/TR/SOAP/ - SOAP спецификация от W3C.

http://www.w3.org/TR/wsdl - информация за стандарта Web Services Definition Language (WSDL) 1.1/

http://microsoft.public.xml.soap - в тази конференция експертите ще помогнат за решаването на сложни проблеми с програмирането на SOAP.

Листинг 1. Код на слушател за ASP

<%@ LANGUAGE=VBScript %> <% Option Explicit On Error Resume Next Response.ContentType = "text/xml" Dim SoapServer If Not Application("SoapServerInitialized") Then Application.Lock If Not Application("SoapServerInitialized") Then Dim WSDLFilePath Dim WSMLFilePath WSDLFilePath = Server.MapPath("SOAPService.wsdl") WSMLFilePath = Server.MapPath("SOAPService.wsml") Set SoapServer = Server.CreateObject("MSSOAP.SoapServer") If Err Then SendFault "Cannot create SoapServer object. " & Err.Description SoapServer.Init WSDLFilePath, WSMLFilePath If Err Then SendFault "SoapServer.Init failed. " & Err.Description Set Application("SOAPServiceServer") = SoapServer Application("SoapServerInitialized") = True End If Application.UnLock End If Set SoapServer = Application("SOAPServiceServer") SoapServer.SoapInvoke Request, Response, "" If Err Then SendFault "SoapServer.SoapInvoke failed. " & Err.Description Sub SendFault(ByVal LogMessage) Dim Serializer On Error Resume Next " "URI Query" logging must be enabled for AppendToLog to work Response.AppendToLog " SOAP ERROR: " & LogMessage Set Serializer = Server.CreateObject("MSSOAP.SoapSerializer") If Err Then Response.AppendToLog "Could not create SoapSerializer object. " & Err.Description Response.Status = "500 Internal Server Error" Else Serializer.Init Response If Err Then Response.AppendToLog "SoapSerializer.Init failed. " & Err.Description Response.Status = "500 Internal Server Error" Else Serializer.startEnvelope Serializer.startBody Serializer.startFault "Server", "The request could not be processed due to a problem in the server. Please contact the system administrator. " & LogMessage Serializer.endFault Serializer.endBody Serializer.endEnvelope If Err Then Response.AppendToLog "SoapSerializer failed. " & Err.Description Response.Status = "500 Internal Server Error" End If End If End If Response.End End Sub %>

Листинг 2. Код на WSDL файл

Листинг 3. Код на WSDL файл

Александър Качанов

Идеята за уеб услуги е разработена от гиганти в компютърната индустрия като Sun, Oracle, HP, Microsoft и IBM. Тази идея не е нищо ново, но е голяма крачка напред към по-лесен достъп до програми в мрежата. Въз основа на стандартните комуникационни формати, уеб услугите могат напълно да променят начина, по който мислим за това как трябва да правим уебсайтове.

Какво е уеб услуга?

Благодарение на уеб услугите функциите на всяка програма могат да бъдат достъпни през Интернет. По този начин програми като PHP, ASP, JSP скриптове, JavaBeans, COM обекти и всички други наши любими инструменти за програмиране вече могат да имат достъп до някоя програма, работеща на друг сървър (т.е. уеб услуга) и да използват отговора, получен от нея на нейния уебсайт, или приложение.

Да речем, ако трябва да изпълня някаква програмна задача и съм твърде зает (или съм се побъркал да преоткрия отново колелото), мога да използвам услугите на уеб услуга, до която моят сайт ще има достъп през Интернет. Като предавам заявка с параметри към уеб услугата, очаквам да получа отговор, съдържащ резултата от изпълнението на моята заявка.

Всеки, който наскоро е работил с Hotmail, вече се е сблъсквал частично с уеб услугите: системата за удостоверяване на потребителя Passport е една от услугите, включени в инициативата Microsoft .NET. Понастоящем е достъпен безплатно, така че създателите на уебсайтове могат лесно да внедрят удостоверяване на потребителите на своя сайт.

Основи

Принципите зад уеб услугите са изненадващо прости. И те не добавят нищо ново към света на разпределените изчисления и Интернет:

  • лицето, отговорно за уеб услугата, определя формата на заявките към своята уеб услуга и нейните отговори
  • всеки компютър в мрежата прави заявка към уеб услуга
  • уеб услуга обработва заявка, извършва някакво действие и след това изпраща отговор

Това действие може да бъде например показване на борсова котировка, показване на цената на определен продукт, запазване на запис в календар за срещи, превод на текст от един език на друг или проверка на номер на кредитна карта.

Стандарти в основата

Причината всички внезапно да се заинтересуваме от уеб услугите е, че те са базирани на стандарти, отворени протоколи за обмен и трансфер на данни.

Преди това много компании разработиха свои собствени стандарти и формати. И сега, за да работим, трябва само да знаем прост XML (eXtensible Markup Language), който се предава по стария познат HTTP протокол. Това означава, че информацията за това как работят уеб услугите е достъпна за всички и уеб разработчиците, които са запознати с тези технологии по професия, могат да започнат да играят с уеб услугите днес.

Разликата между уеб услугите и други технологии, с които разработчиците са се сблъсквали (например DCOM, наименувани канали, RMI) е, че уеб услугите са базирани на отворени стандарти, те са лесни за научаване и тези стандарти се поддържат широко в целия свят. и Windows платформи.

Simple Object Access Protocol (SOAP) е стандартен протокол, разработен от W3C. Той определя формата на заявките към уеб услугите.

Съобщенията между уеб услуга и нейния потребител са пакетирани в SOAP пликове. Съобщенията съдържат или искане за извършване на някакво действие, или отговор - резултатът от извършването на това действие. Пликът и съдържанието му са кодирани в XML и са доста лесни за разбиране. Ето как изглежда една проста SOAP заявка, когато е изпратена чрез HTPP към уеб услуга:

xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/Postcode">
WC1A8GH
Великобритания


Ключовите елементи на SOAP плика са доста лесни за намиране: това са два параметъра ( ("пощенски код") и ("държава")), които се съдържат в елемент, наречен . Този елемент е името на уеб услугата, към която отправяме заявката. Други данни в плика, като например кодирането на текста и версията на SOAP, помагат на уеб услугата да обработи заявката правилно.

И отговорът ще изглежда така:

xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/Postcode">
да


Това съобщение е още по-лесно за дешифриране. елемент в нашата заявка се промени на елемента в отговор на искането. Този елемент съдържа само един елемент , чиято стойност показва дали пощенският ни код е правилен или не. И така, чрез магията на SOAP създадохме заявка, която ни върши полезна работа. В отговор чрез мрежата получаваме определен тип отговор в XML.

Сега за UDDI

Въпреки че SOAP протоколът е прост, уеб услугите не биха били от голяма полза, ако нямаше начин да ги намерим. За щастие IBM, Microsoft и Ariba се засилиха и създадоха проекта Universal Description, Discovery and Integration (UDDI), който се надяват да се превърне в общ каталог на всички уеб услуги в мрежата.

Системата UDDI позволява на компаниите да представят своите уеб услуги на обществеността. Тази директория работи като телефонен указател за всички уеб услуги. Регистрацията в директорията UDDI е безплатна и основателите на проекта се надяват, че тази директория ще съдържа описания на всички, всички, всички услуги в мрежата, така че за да намерите желаната уеб услуга, ще бъде достатъчно да се обърнете само към една UDDI директория.

Как работи всичко

И така, как да намеря правилната уеб услуга?

Нека си представим, че съм разработчик на уебсайт и клиентът ми ме помоли да добавя нова функция към сайта: Трябва да добавя проверка на пощенски код във формуляра за регистрация.

За да извърша тази проверка, ще трябва да създам база данни с всички пощенски кодове във всичките 30 държави, в които нашата компания извършва бизнес, и след това да проверя дали пощенският код съответства на града, посочен в регистрацията при регистрацията. Но аз нямам тези данни и мисля, че събирането на такива данни ще трябва да похарчи значителна сума пари.

Вместо да харча пари за закупуване на база данни, да напиша сам кода, да гарантирам целостта и коректността на всички данни и да отстранявам грешки в скриптовете, аз просто отивам в директорията UDDI и виждам дали има уеб услуга, която може да свърши работата за аз Пристигайки на сайта http://www.uddi.org/, стартирам търсене и намирам отлична услуга от XYZ Corp.

Преглеждам внимателно дефиницията на формата на уеб услугата (дефиницията е написана на WSDL (Език за описание на уеб услуги), като се уверявам, че услугата прави точно това, от което се нуждая. След това проверявам с колегите си за репутацията на XYZ Corp. и откривам че е солидна и след това се свържете с XYZ Corp. относно ценообразуването. Ако цената за достъп до услугата е в рамките на бюджета ми, пиша проста JSP страница за моя сайт, която извиква уеб услугата на XYZ Corp., и ето, ето, незабавна проверка се появява на пощенския код на сайта.

Заслужава си времето

Дори и да нямате нищо общо с програмирането или технологиите за разработка на уебсайтове, уеб услугите си струва да научите повече за тях. Представете си картина как обсъждате нов уебсайт с клиент, обсъждайки всички функции на новия проект. Всичко върви чудесно: бюджетът отговаря на очакванията на клиента, той хареса скицата на плана на сайта и хареса примерите за интерфейс. Изглежда всичко работи.

И изведнъж си спомнят някаква много сложна функция. При самото споменаване лицето на вашия уеб разработчик позеленява и той започва да се задушава и кашля. Това е разработчикът, който ви дава сигнал, че разработването на тази функция ще изисква много пари и време или просто не е осъществимо с такъв бюджет.

Зарежи страха си! Готов съм да гарантирам, че в Интернет вече има уеб услуга, която е готова да ви предостави необходимата функция, а цената за използване на тази уеб услуга ще бъде много по-ниска от цената за самостоятелно разработване на нейния аналог. По този начин спестявате вашия разработчик от ненужни главоболия, вашия клиент от пилеене на пари, като просто прекарате няколко минути в разглеждане на UDDI каталога.

Развитие на услугата

Разбира се, разработчиците не трябва да се задоволяват само с уеб услуги, създадени от други. Използвайки един от следните комплекти инструменти, можете да създадете своя собствена уеб услуга и да предоставяте нейните услуги на други интернет потребители.

Изборът от инструменти за разработване на уеб услуги е богат. Той включва инструменти от компании като Sun (Open Net), Microsoft (.NET), (е-услуги) и IBM (Web Services). Има и рамки с отворен код. Например, проектът Mono има за цел да замени .NET инструментариума на Microsoft, като предоставя компилатори, време за изпълнение и библиотеки за изпълнение на едни и същи уеб услуги на всички платформи, включително Unix.

Въпреки разнообразието от сървъри и инструменти за разработка на уеб услуги, всички те поддържат един и същ SOAP протокол, XML език и UDDI система.

минуси

Преди да изоставя напълно кариерата си на програмист и да се посветя на използването на уеб услуги, трябва да си задам въпроса: "Картината е твърде розова. Какво не е наред?" За съжаление големият потенциал на уеб услугите си има цена:

  • Използването на XML като формат за пренос на данни означава, че вашите съобщения ще бъдат много големи по размер: самите XML тагове заемат много място и това ни натоварва да създаваме, предаваме и интерпретираме съобщения.
  • Тъй като използваме отдалечени компютри за изпълнение на определени функции, ние разчитаме изцяло на интернет, което създава твърде много ненадеждни връзки във веригата между нашия уеб сървър и уеб услугата.
  • Днес малко компании създават уеб услуги и малко компании ги използват. Отстраняването на грешки и подобряването на системата за уеб услуги все още изисква много време.
  • Системата за лицензиране и таксуване за използването на уеб услуги все още не е приета от разработчиците. Поради факта, че все още има твърде малко уеб услуги, повечето компании се опитват да направят добро впечатление на своите потенциални клиенти, като съзнателно намаляват цената на услугите и предлагат изгодни лицензионни условия. Ще мине известно време преди да стане ясна реалната цена на уеб услугите.

Когато уеб услугите заемат своето място и станат достъпни за всички, те ще се превърнат в безценна помощ за уеб разработчиците. Те ще ни дадат гъвкав достъп до пълната мощност на всички компютри в мрежата. Време е създателите на уебсайтове да се заинтересуват от уеб услугите и да научат повече за това какво могат да получат от тях.



Свързани публикации