Підручник з веб-служб SOAP: Що таке протокол SOAP? ПРИКЛАД

Зміст:

Anonim

Що таке мило?

SOAP - це протокол на основі XML для доступу до веб-служб через HTTP. Він має деякі специфікації, які можна використовувати у всіх додатках.

SOAP відомий як Простий протокол доступу до об'єктів, але в подальші часи його просто скоротили до SOAP v1.2. 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, для роботи у Всесвітній павутині.

SOAP будівельні блоки

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

Наведена нижче схема архітектури SOAP показує різні будівельні блоки SOAP-повідомлення.

Будівельні блоки SOAP-повідомлень

Повідомлення SOAP - це не що інше, як лише XML-документ, що містить наведені нижче компоненти.

  • Елемент конверта, який ідентифікує документ XML як повідомлення SOAP - це міститься частина повідомлення SOAP і використовується для інкапсуляції всіх деталей у повідомленні SOAP. Це кореневий елемент у повідомленні SOAP.
  • Елемент заголовка, що містить інформацію заголовка - елемент заголовка може містити таку інформацію, як облікові дані автентифікації, які можуть використовуватися програмою, що викликає. Він також може містити визначення складних типів, які можуть бути використані в повідомленні 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.

Конверт SOAP використовується для інкапсуляції всіх необхідних деталей повідомлень SOAP, якими обмінюються веб-служба та клієнтська програма.

Елемент конверта SOAP використовується для позначення початку та кінця повідомлення SOAP. Це дозволяє клієнтській програмі, яка викликає веб-службу, знати, коли закінчується повідомлення SOAP.

На елементі конверта SOAP можна відзначити наступні моменти.

  • Кожне SOAP-повідомлення повинно мати кореневий елемент конверта. Для SOAP-повідомлення абсолютно обов’язково мати елемент конверта.
  • Кожен елемент конверта повинен мати принаймні один елемент мила.
  • Якщо елемент Envelope містить заголовок, він повинен містити не більше одного, і він повинен відображатися як перша дочірня частина конверта перед елементом body.
  • Конверт змінюється, коли змінюються версії SOAP.
  • Процесор SOAP, сумісний з v1.1, генерує помилку при отриманні повідомлення, що містить простір імен конверта v1.2.
  • Процесор SOAP, сумісний з v1.2, генерує помилку версії Mismatch, якщо отримує повідомлення, яке не включає простір імен конверта v1.2.

Нижче наведено приклад API SOAP версії 1.2 елемента конверта SOAP.

int

Повідомлення про помилку

Коли запит подається на веб-службу SOAP, відповідь може бути у двох формах, що є успішною відповіддю або відповіддю на помилку. Коли генерується успіх, відповідь сервера завжди буде повідомленням 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 (віддалений виклик процедур) для спілкування. Це був найпростіший тип спілкування, але він мав багато обмежень.

Тепер у цьому посібнику з 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", що є результатом надання імені нашій веб-службі.
  • Ми також бачимо, що можемо викликати веб-службу. Якщо ми натиснемо кнопку Виклик, ми отримаємо відповідь нижче у веб-браузері.

Вищезазначений результат,

  • Це чітко показує, що за допомогою веб-методу повертається рядок "Це веб-служба Guru99".
  • Visual Studio також дозволяє переглядати запит і відповідь на повідомлення SOAP, що генеруються при виклику вищезазначеної веб-служби.

Запит SOAP, який генерується під час виклику веб-служби, показаний нижче.

Пояснення коду:

  1. Перша частина повідомлення SOAP - це елемент конверта, про що йшлося в попередніх розділах. Це елемент інкапсуляції, який присутній у кожному SOAP-повідомленні.
  2. Тіло SOAP є наступним елементом і містить фактичні деталі повідомлення SOAP.
  3. Третя частина - це елемент, який визначає, що ми хочемо викликати службу, яка називається "Guru99WebService".

string

Пояснення коду:

  1. Перша частина повідомлення SOAP - це елемент конверта, про що йшлося в попередніх розділах. Це елемент інкапсуляції, який присутній у кожному SOAP-повідомленні.
  2. Тіло SOAP є наступним елементом і містить фактичні деталі повідомлення SOAP.
  3. Цікавою частиною, яку ви побачите зараз, є атрибут 'string'. Це повідомляє клієнтській програмі, що веб-служба, що викликається, повертає об'єкт типу рядка. Це дуже корисно, тому що якщо клієнтська програма, яка інакше не знала б, що повертає веб-служба.

Резюме

  • SOAP - це протокол, який використовується для обміну даними між програмами, побудованими на різних мовах програмування.
  • SOAP побудований на специфікації XML і працює з протоколом HTTP. Це робить його ідеальним для використання у веб-програмах.
  • Будівельні блоки SOAP складаються з SOAP-повідомлення. Кожне повідомлення SOAP складається з елемента конверта, заголовка та елемента тіла.
  • Елемент конверта є обов'язковим елементом у повідомленні SOAP і використовується для інкапсуляції всіх даних у повідомленні SOAP.
  • Елемент заголовка може використовуватися для міщення такої інформації, як інформація про автентифікацію або визначення складних типів даних.
  • Елемент body - це основний елемент, який містить визначення веб-методів, а також будь-яку інформацію про параметри, якщо потрібно.