Урок за SOAP уеб услуги: Какво е SOAP протокол? ПРИМЕР

Съдържание:

Anonim

Какво е САПУН?

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

SOAP е известен като Simple Object Access Protocol, но в по-късни времена е просто съкратен до SOAP v1.2. SOAP е протокол или с други думи е дефиниция за това как уеб услугите говорят помежду си или разговарят с клиентски приложения, които ги извикват.

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

В този урок за SOAP уеб услуги ще научите -

  • Въведение в SOAP
  • Предимства на SOAP
  • SOAP Градивни елементи
  • Структура на SOAP съобщенията
  • Елемент на плик SOAP
  • Модел за комуникация SOAP
  • Практически пример за SOAP

Въведение в SOAP

В днешния свят има огромен брой приложения, които са изградени на различни езици за програмиране. Например, може да има уеб приложение, проектирано в Java, друго в .Net и друго в PHP.

Обменът на данни между приложенията е от решаващо значение в днешния мрежов свят. Но обменът на данни между тези разнородни приложения би бил сложен. Такава ще бъде и сложността на кода за осъществяване на този обмен на данни.

Един от методите, използвани за борба с тази сложност, е използването на XML (Extensible Markup Language) като междинен език за обмен на данни между приложения.

Всеки език за програмиране може да разбере XML езика за маркиране. Следователно XML се използва като основна среда за обмен на данни.

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

SOAP е проектиран да работи с XML през HTTP и има някаква спецификация, която може да се използва във всички приложения. Ще разгледаме допълнителни подробности за протокола SOAP в следващите глави.

Предимства на SOAP

SOAP е протоколът, използван за обмен на данни между приложения. По-долу са дадени някои от причините защо се използва SOAP.

  • Когато разработвате базирани на SOAP уеб услуги, трябва да имате част от езика, който може да се използва за уеб услуги, за да говорите с клиентски приложения. SOAP е идеалната среда, която е разработена, за да постигне тази цел. Този протокол се препоръчва и от консорциума W3C, който е ръководен орган за всички уеб стандарти.
  • SOAP е лек протокол, който се използва за обмен на данни между приложения. Обърнете внимание на ключовата дума „ светлина“ . Тъй като програмирането на SOAP се основава на XML език, който сам по себе си е лек език за обмен на данни, следователно SOAP като протокол, който също попада в същата категория.
  • SOAP е проектиран да бъде независим от платформата и също така е проектиран да бъде независим от операционната система. Така че протоколът SOAP може да работи с всякакви приложения, базирани на език за програмиране, както на Windows, така и на Linux платформа.
  • Той работи по протокола HTTP -SOAP работи по протокола HTTP, който е протоколът по подразбиране, използван от всички уеб приложения. Следователно няма никаква персонализация, която да е необходима за стартиране на уеб услугите, изградени по протокола SOAP, за да работят в World Wide Web.

Сградни блокове SOAP

Спецификацията на SOAP определя нещо, известно като „ SOAP съобщение “, което е това, което се изпраща до уеб услугата и клиентското приложение.

Диаграмата по-долу на SOAP архитектурата показва различните градивни елементи на SOAP съобщение.

Изграждащи блокове за SOAP съобщения

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

  • Елемент Envelope, който идентифицира XML документа като SOAP съобщение - Това е съдържащата част от SOAP съобщението и се използва за капсулиране на всички подробности в SOAP съобщението. Това е основният елемент в SOAP съобщението.
  • Елемент Header, който съдържа информация за заглавката - Елементът заглавка може да съдържа информация като идентификационни данни за удостоверяване, които могат да бъдат използвани от извикващото приложение. Той може също да съдържа дефиницията на сложни типове, които могат да се използват в SOAP съобщението. По подразбиране SOAP съобщението може да съдържа параметри, които могат да бъдат от прости типове като низове и числа, но могат да бъдат и сложен тип обект.

Прост пример за услуга SOAP от сложен тип е показан по-долу.

Да предположим, че искахме да изпратим структуриран тип данни, който имаше комбинация от „Име на урока“ и „Описание на урока“, тогава щяхме да дефинираме сложния тип, както е показано по-долу.

Комплексният тип се дефинира от маркера на елемента . След това всички необходими елементи на структурата заедно със съответните им типове данни се дефинират в колекцията от сложни типове.

  • Елемент Body, който съдържа информация за обажданията и отговорите - Този елемент съдържа действителните данни, които трябва да бъдат изпратени между уеб услугата и извикващото приложение. По-долу е даден пример за уеб услуга на SOAP за тялото на SOAP, който всъщност работи върху сложния тип, дефиниран в заглавната секция. Тук е отговорът на името на урока и описанието на урока, което се изпраща на извикващото приложение, което извиква тази уеб услуга.
Web ServicesAll about web services

Структура на SOAP съобщенията

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

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

Както беше обсъдено в предишната тема на този урок за SOAP, едно просто SOAP съобщение има следните елементи -

  • Елементът плик
  • Заглавният елемент и
  • Елементът на тялото
  • Елементът за грешка (по избор)

Нека да разгледаме пример по-долу на обикновено SOAP съобщение и да видим какво всъщност прави елементът.

Структура на SOAP съобщенията
  1. Както се вижда от горното SOAP съобщение, първата част на SOAP съобщението е елементът на плика, който се използва за капсулиране на цялото SOAP съобщение.
  2. Следващият елемент е тялото на SOAP, което съдържа подробности за действителното съобщение.
  3. Нашето съобщение съдържа уеб услуга, която носи името "Guru99WebService".
  4. "Guru99Webservice" приема параметър от типа "int" и има името на TutorialID.

Сега горното SOAP съобщение ще бъде предадено между уеб услугата и клиентското приложение.

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

Елемент на плик SOAP

Първият бит на градивния блок е SOAP Envelope.

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

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

Следните точки могат да бъдат отбелязани върху елемента на плика SOAP.

  • Всяко SOAP съобщение трябва да има корен елемент Envelope. Абсолютно задължително е SOAP съобщението да има елемент на плика.
  • Всеки елемент на плика трябва да има поне един сапунен елемент на тялото.
  • Ако елемент Envelope съдържа заглавен елемент, той трябва да съдържа не повече от един и трябва да се появи като първото дъщерно устройство на плика, преди елемента body.
  • Пликът се променя, когато се променят версиите на SOAP.
  • V1.1-съвместим SOAP процесор генерира грешка при получаване на съобщение, съдържащо пространството от имена на плика v1.2.
  • V1.2-съвместим SOAP процесор генерира грешка в версията Mismatch, ако получи съобщение, което не включва пространството от имена на плика v1.2.

По-долу е даден пример за SOAP API на версия 1.2 на елемента SOAP плик.

int

Съобщението за грешка

Когато се направи заявка към SOAP уеб услуга, върнатият отговор може да бъде или от 2 форми, които са успешен отговор или отговор на грешка. Когато се генерира успех, отговорът от сървъра винаги ще бъде SOAP съобщение. Но ако се генерират SOAP грешки, те се връщат като "HTTP 500" грешки.

Съобщението за грешка в SOAP се състои от следните елементи.

  1. - Това е кодът, който обозначава кода на грешката. Кодът на повредата може да бъде някоя от стойностите по-долу
    1. SOAP-ENV: VersionMismatch - Това е, когато се срещне невалидно пространство от имена за елемента SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Непознат е непосредствен дъщерен елемент на елемента Header, с атрибут mustUnderstand, зададен на „1“.
    3. SOAP-ENV: Клиент - Съобщението е неправилно оформено или съдържа неправилна информация.
    4. SOAP-ENV: Сървър - Има проблем със сървъра, така че съобщението не може да продължи.
  2. - Това е текстовото съобщение, което дава подробно описание на грешката.
  3. (по избор) - Това е текстов низ, който показва кой е причинил грешката.
  4. (по избор) - Това е елементът за специфични за приложението съобщения за грешки. Така че приложението може да има конкретно съобщение за грешка за различни сценарии на бизнес логика.

Пример за съобщение за грешка

Пример за съобщение за грешка е даден по-долу. Грешката се генерира, ако сценарият, при който клиентът се опитва да използва метод, наречен TutorialID в класа GetTutorial.

Съобщението за грешка по-долу се генерира в случай, че методът не съществува в дефинирания клас.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Изход:

Когато изпълните горния код, той ще покаже грешката като "Неуспешно намиране на метод (GetTutorialID) в клас (GetTutorial)"

Модел за комуникация SOAP

Цялата комуникация чрез SOAP се осъществява чрез HTTP протокола. Преди SOAP, много уеб услуги използваха стандартния RPC (Remote Procedure Call) стил за комуникация. Това беше най-простият тип комуникация, но имаше много ограничения.

Сега в този урок за SOAP API, нека разгледаме диаграмата по-долу, за да видим как работи тази комуникация. В този пример, нека приемем, че сървърът е домакин на уеб услуга, която предоставя 2 метода като

  • GetEfficiee - Това ще получи всички данни за служителите
  • SetEfficiee - Това би задало съответно стойността на данните като отдел на служителите, заплата и т.н.

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

Горният комуникационен модел има по-долу сериозни ограничения

  1. Не е независим от езика - сървърът, хостващ методите, ще бъде на определен програмен език и обикновено повикванията към сървъра ще бъдат само на този програмен език.
  2. Не стандартният протокол - Когато се осъществява повикване към отдалечената процедура, повикването не се осъществява чрез стандартния протокол. Това беше проблем, тъй като най-вече цялата комуникация през мрежата трябваше да се осъществява чрез HTTP протокола.
  3. Защитни стени - Тъй като RPC повикванията не преминават през нормалния протокол, на сървъра трябва да бъдат отворени отделни портове, за да позволи на клиента да комуникира със сървъра. Обикновено всички защитни стени блокират този вид трафик и обикновено се изисква много конфигурация, за да се гарантира, че този вид комуникация между клиента и сървъра ще работи.

За да преодолее всички ограничения, цитирани по-горе, SOAP след това ще използва модела за комуникация по-долу

  1. Клиентът ще форматира информацията относно повикването на процедурата и всички аргументи в SOAP съобщение и ще я изпрати на сървъра като част от HTTP заявка. Този процес на капсулиране на данните в SOAP съобщение беше известен като Маршалинг.
  2. След това сървърът ще разгъне съобщението, изпратено от клиента, ще види за какво е поискал клиентът и след това ще изпрати съответния отговор обратно на клиента като SOAP съобщение. Практиката на разгъване на заявка, изпратена от клиента, е известна като Demarshalling.

Практически пример за SOAP

Сега в този урок за SoapUI, нека видим практически пример за SOAP,

Вероятно един от най-добрите начини да видите как се генерират SOAP съобщения е действително да видите уеб услуга в действие.

Тази тема ще разгледа използването на рамката Microsoft.Net за изграждане на уеб услуга ASMX. Този тип уеб услуга поддържа SOAP версия 1.1 и версия 1.2.

ASMX уеб услугите автоматично генерират документ за дефиниция на уеб услуги (WSDL). Този WSDL документ се изисква от извикващото клиентско приложение, така че приложението да знае какво може да направи уеб услугата.

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

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

Visual Studio също ще ни покаже какво SOAP съобщение се предава между уеб услугата и извикващото приложение.

Първата предпоставка за настройка на нашето приложение за уеб услуги, което може да се направи, като следвате стъпките по-долу.

Моля, уверете се, че имате Visual Studio 2013, инсталиран на вашата система за този пример.

Стъпка 1) Първата стъпка е да създадете празно уеб приложение ASP.Net. От Visual Studio 2013 кликнете върху опцията от менюто Файл-> Нов проект.

След като щракнете върху опцията Нов проект, Visual Studio ще ви даде друг диалогов прозорец за избор на вида на проекта и за предоставяне на необходимите подробности за проекта. Това е обяснено в следващата стъпка.

Стъпка 2) В тази стъпка,

  1. Уверете се, че първо сте избрали уеб шаблона C # на уеб приложението ASP.NET. Проектът трябва да бъде от този тип, за да се създаде проект за SOAP услуги. Избирайки тази опция, Visual Studio след това ще извърши необходимите стъпки за добавяне на необходимите файлове, които се изискват от всяко уеб-базирано приложение.
  2. Дайте име на вашия проект, който в нашия случай е даден като webservice.asmx. След това се уверете, че сте дали място, където ще се съхраняват файловете на проекта.

След като приключите, ще видите файла на проекта, създаден във вашия изследовател на решения в Visual Studio 2013.

Стъпка 3) В тази стъпка,

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

  1. Първо щракнете с десния бутон върху файла на проекта, както е показано по-долу

  1. След като щракнете с десния бутон върху файла на проекта, имате възможност да изберете опцията "Добавяне-> Уеб услуга (ASMX), за да добавите файл с уеб услуга. Просто посочете име на Урочната услуга за файла с името на уеб услугата.

Стъпка 4) Добавете следния код към вашия asmx файл на Tutorial Service.

Обяснение на кода:

  1. Този ред код предоставя име за вашия файл с уеб услуга. Това е важна стъпка, тъй като дава възможност на клиентското приложение да извика уеб услугата чрез името на уеб услугата.
  2. Обикновено файл с клас се използва за капсулиране на функционалността на уеб услуга. Така файлът на класа ще има дефиницията на всички уеб методи, които ще предоставят известна функционалност на клиентското приложение.
  3. Тук [WebMethod] е известен като атрибут, който описва функция. Следващата стъпка създава функция, наречена "Guru99WebService", но с включването на тази стъпка от добавяне на атрибут [WebMethod] гарантира, че този метод може да бъде извикан от клиентско приложение. Ако този атрибут не е на място, тогава методът никога не може да бъде извикан от клиентско приложение.
  4. Тук дефинираме функция, наречена „Guru99WebService“, която ще бъде използвана за връщане на низ в извикващото клиентско приложение. Тази функция е уеб услуга, която може да бъде извикана от всяко клиентско приложение.
  5. Използваме оператора return, за да върнем низа „Това е уеб услуга на Guru99“ в клиентското приложение.

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

Изход:

  • Резултатът ясно показва, че името на нашата уеб услуга е "Guru99 Web Service", което е резултат от даването на име за нашата уеб услуга.
  • Също така виждаме, че можем да извикаме уеб услугата. Ако щракнем върху бутона Invoke, ще получим отговора по-долу в уеб браузъра.

Горният изход,

  • Ясно показва, че чрез извикване на уеб метода се връща низът „Това е уеб услуга на Guru99“.
  • Visual Studio също ви позволява да видите заявката за SOAP съобщение и отговор, който се генерира при извикване на горната уеб услуга.

Искането за SOAP, което се генерира при извикване на уеб услугата, е показано по-долу.

Обяснение на кода:

  1. Първата част на SOAP съобщението е елементът на плика, който е дискутиран в предишните глави. Това е капсулиращият елемент, който присъства във всяко SOAP съобщение.
  2. Тялото на SOAP е следващият елемент и съдържа действителните подробности за SOAP съобщението.
  3. Третата част е елементът, който указва, че искаме да извикаме услугата, наречена „Guru99WebService“.

string

Обяснение на кода:

  1. Първата част на SOAP съобщението е елементът на плика, който е дискутиран в предишните глави. Това е капсулиращият елемент, който присъства във всяко SOAP съобщение.
  2. Тялото на SOAP е следващият елемент и съдържа действителните подробности за SOAP съобщението.
  3. Интересното, което ще видите сега, е атрибутът „низ“. Това казва на клиентското приложение, че извиканата уеб услуга връща обект от типа низ. Това е много полезно, защото ако клиентското приложение, което иначе не би знало какво връща уеб услугата.

Обобщение

  • SOAP е протокол, който се използва за обмен на данни между приложения, които са изградени на различни програмни езици.
  • SOAP е изграден върху XML спецификацията и работи с HTTP протокола. Това го прави идеален за използване в уеб приложения.
  • Строителните блокове на SOAP се състоят от SOAP съобщение. Всяко SOAP съобщение се състои от елемент на плик, заглавна част и елемент на тялото.
  • Елементът на плика е задължителен елемент в SOAP съобщението и се използва за капсулиране на всички данни в SOAP съобщението.
  • Елементът на заглавката може да се използва, за да съдържа информация като информация за удостоверяване или дефиниция на сложни типове данни.
  • Елементът body е основният елемент, който съдържа дефиницията на уеб методите заедно с всякаква информация за параметрите, ако е необходимо.