Samouczek dotyczący usług sieci Web SOAP: Co to jest protokół SOAP? PRZYKŁAD

Spisie treści:

Anonim

Co to jest SOAP?

SOAP to oparty na języku XML protokół dostępu do usług internetowych za pośrednictwem protokołu HTTP. Ma pewne specyfikacje, które mogą być używane we wszystkich aplikacjach.

SOAP jest znany jako Simple Object Access Protocol, ale w późniejszych czasach został skrócony do SOAP v1.2. SOAP to protokół lub innymi słowy to definicja tego, jak usługi internetowe komunikują się ze sobą lub komunikują się z aplikacjami klienckimi, które je wywołują.

SOAP został opracowany jako język pośredni, aby aplikacje zbudowane w różnych językach programowania mogły łatwo komunikować się ze sobą i unikać ekstremalnego wysiłku programistycznego.

W tym samouczku dotyczącym usług sieci Web SOAP nauczysz się:

  • Wprowadzenie do SOAP
  • Zalety SOAP
  • Bloki konstrukcyjne SOAP
  • Struktura wiadomości SOAP
  • Element koperty SOAP
  • Model komunikacji SOAP
  • Praktyczny przykład SOAP

Wprowadzenie do SOAP

W dzisiejszym świecie istnieje ogromna liczba aplikacji opartych na różnych językach programowania. Na przykład, może istnieć aplikacja internetowa zaprojektowana w Javie, inna w .Net i jeszcze inna w PHP.

Wymiana danych między aplikacjami ma kluczowe znaczenie w dzisiejszym świecie sieciowym. Jednak wymiana danych między tymi heterogenicznymi aplikacjami byłaby złożona. Podobnie będzie ze złożonością kodu umożliwiającego wymianę danych.

Jedną z metod walki z tą złożonością jest użycie XML (Extensible Markup Language) jako języka pośredniego do wymiany danych między aplikacjami.

Każdy język programowania może zrozumieć język znaczników XML. Stąd XML został użyty jako podstawowe medium do wymiany danych.

Ale nie ma standardowych specyfikacji dotyczących używania XML we wszystkich językach programowania do wymiany danych. W tym miejscu pojawia się oprogramowanie SOAP.

SOAP został zaprojektowany do pracy z XML przez HTTP i posiada pewną specyfikację, która może być używana we wszystkich aplikacjach. W kolejnych rozdziałach przyjrzymy się dokładniejszym szczegółom protokołu SOAP.

Zalety SOAP

SOAP to protokół używany do wymiany danych między aplikacjami. Poniżej znajduje się kilka powodów, dla których używany jest protokół SOAP.

  • Tworząc usługi sieci Web oparte na SOAP, potrzebujesz języka, który może być używany w usługach sieci Web do komunikacji z aplikacjami klienckimi. SOAP jest idealnym medium, które zostało stworzone w tym celu. Protokół ten jest również zalecany przez konsorcjum W3C, które jest organem zarządzającym wszystkimi standardami sieciowymi.
  • SOAP to lekki protokół używany do wymiany danych między aplikacjami. Zwróć uwagę na słowo kluczowe „ światło ”. Ponieważ programowanie SOAP jest oparte na języku XML, który sam w sobie jest lekkim językiem wymiany danych, stąd SOAP jako protokół, który również należy do tej samej kategorii.
  • SOAP został zaprojektowany tak, aby był niezależny od platformy, a także został zaprojektowany tak, aby był niezależny od systemu operacyjnego. Tak więc protokół SOAP może działać z dowolnymi aplikacjami opartymi na języku programowania zarówno na platformie Windows, jak i Linux.
  • Działa na protokole HTTP -SOAP działa na protokole HTTP, który jest domyślnym protokołem używanym przez wszystkie aplikacje internetowe. W związku z tym nie ma żadnego rodzaju dostosowywania, które jest wymagane do uruchamiania usług internetowych opartych na protokole SOAP do pracy w sieci World Wide Web.

Bloki konstrukcyjne SOAP

Specyfikacja SOAP definiuje coś, co nazywa się „ komunikatem SOAP ”, który jest wysyłany do usługi sieciowej i aplikacji klienckiej.

Poniższy diagram architektury SOAP przedstawia różne bloki konstrukcyjne komunikatu SOAP.

Bloki konstrukcyjne wiadomości SOAP

Wiadomość SOAP to nic innego jak zwykły dokument XML, który zawiera poniższe komponenty.

  • Element Envelope, który identyfikuje dokument XML jako komunikat SOAP - jest to część zawierająca komunikat SOAP i służy do hermetyzacji wszystkich szczegółów w komunikacie SOAP. To jest element główny w komunikacie SOAP.
  • Element nagłówka, który zawiera informacje nagłówka - element nagłówka może zawierać informacje, takie jak poświadczenia uwierzytelniania, które mogą być używane przez aplikację wywołującą. Może również zawierać definicję typów złożonych, które mogą być użyte w komunikacie SOAP. Domyślnie komunikat SOAP może zawierać parametry, które mogą być prostymi typami, takie jak łańcuchy i liczby, ale mogą być również złożonymi typami obiektów.

Poniżej przedstawiono prosty przykład usługi SOAP typu złożonego.

Załóżmy, że chcieliśmy wysłać ustrukturyzowany typ danych, który miał kombinację „Nazwy samouczka” i „Opisu samouczka”, a następnie zdefiniowalibyśmy typ złożony, jak pokazano poniżej.

Typ złożony jest definiowany przez znacznik elementu . Wszystkie wymagane elementy struktury wraz z odpowiadającymi im typami danych są następnie definiowane w kolekcji typów złożonych.

  • Element Body, który zawiera informacje o połączeniach i odpowiedziach - ten element zawiera rzeczywiste dane, które muszą zostać przesłane między usługą internetową a aplikacją wywołującą. Poniżej znajduje się przykład usługi sieci Web SOAP w treści protokołu SOAP, która faktycznie działa na typie złożonym zdefiniowanym w sekcji nagłówka. Oto odpowiedź nazwy samouczka i opisu samouczka, która jest wysyłana do aplikacji wywołującej, która wywołuje tę usługę sieci Web.
Web ServicesAll about web services

Struktura wiadomości SOAP

Należy zwrócić uwagę na to, że komunikaty SOAP są zwykle generowane automatycznie przez usługę sieciową, gdy są wywoływane.

Za każdym razem, gdy aplikacja kliencka wywołuje metodę w usłudze sieciowej, usługa sieciowa automatycznie generuje komunikat SOAP, który będzie zawierał niezbędne szczegóły danych, które zostaną wysłane z usługi sieciowej do aplikacji klienckiej.

Jak omówiono w poprzednim temacie tego samouczka SOAP, prosta wiadomość SOAP zawiera następujące elementy -

  • Element Envelope
  • Element nagłówka i
  • Element ciała
  • Element błędu (opcjonalnie)

Spójrzmy na poniższy przykład prostego komunikatu SOAP i zobaczmy, jaki element faktycznie robi.

Struktura wiadomości SOAP
  1. Jak widać z powyższego komunikatu SOAP, pierwszą częścią komunikatu SOAP jest element koperty, który jest używany do hermetyzacji całej wiadomości SOAP.
  2. Następnym elementem jest treść SOAP, która zawiera szczegóły aktualnej wiadomości.
  3. Nasza wiadomość zawiera usługę sieciową o nazwie „Guru99WebService”.
  4. „Guru99Webservice” przyjmuje parametr typu „int” i ma nazwę TutorialID.

Teraz powyższy komunikat SOAP zostanie przekazany między usługą sieciową a aplikacją kliencką.

Możesz zobaczyć, jak przydatne są powyższe informacje dla aplikacji klienckiej. Komunikat SOAP informuje aplikację kliencką, jaka jest nazwa usługi sieci Web, a także jakich parametrów oczekuje, a także jaki jest typ każdego parametru, który jest pobierany przez usługę sieciową.

Element koperty SOAP

Pierwszym elementem bloku konstrukcyjnego jest koperta SOAP.

Koperta SOAP służy do hermetyzacji wszystkich niezbędnych szczegółów komunikatów SOAP, które są wymieniane między usługą internetową a aplikacją kliencką.

Element koperty SOAP służy do wskazania początku i końca komunikatu SOAP. Dzięki temu aplikacja kliencka, która wywołuje usługę internetową, wie, kiedy kończy się komunikat SOAP.

Poniższe punkty można zauważyć w elemencie koperty SOAP.

  • Każda wiadomość SOAP musi mieć główny element Envelope. Dla wiadomości SOAP absolutnie konieczne jest posiadanie elementu koperty.
  • Każdy element Envelope musi mieć co najmniej jeden element mydlany.
  • Jeśli element Envelope zawiera element nagłówka, nie może zawierać więcej niż jeden i musi pojawić się jako pierwsze dziecko Envelope przed elementem body.
  • Koperta zmienia się, gdy zmieniają się wersje SOAP.
  • Procesor SOAP zgodny z wersją 1.1 generuje błąd po odebraniu komunikatu zawierającego przestrzeń nazw kopert w wersji 1.2.
  • Procesor SOAP zgodny z wersją 1.2 generuje błąd niezgodności wersji, jeśli otrzyma komunikat, który nie zawiera przestrzeni nazw kopert w wersji 1.2.

Poniżej znajduje się przykład interfejsu SOAP API wersji 1.2 elementu koperty SOAP.

int

Komunikat o błędzie

Gdy żądanie jest kierowane do usługi WWW SOAP, zwracana odpowiedź może mieć dwie formy, które są odpowiedzią pomyślną lub odpowiedzią błędu. Po wygenerowaniu sukcesu odpowiedzią z serwera będzie zawsze komunikat SOAP. Ale jeśli generowane są błędy protokołu SOAP, są one zwracane jako błędy „HTTP 500”.

Komunikat błędu protokołu SOAP składa się z następujących elementów.

  1. - jest to kod oznaczający kod błędu. Kod błędu może mieć dowolną z poniższych wartości
    1. SOAP-ENV: VersionMismatch - występuje wtedy, gdy napotkano nieprawidłową przestrzeń nazw dla elementu SOAP Envelope.
    2. SOAP-ENV: MustUnderstand - Bezpośredni element podrzędny elementu Header z atrybutem mustUnderstand ustawionym na „1” nie został zrozumiany.
    3. SOAP-ENV: Klient - wiadomość została nieprawidłowo utworzona lub zawierała nieprawidłowe informacje.
    4. SOAP-ENV: Serwer - Wystąpił problem z serwerem, więc komunikat nie mógł być kontynuowany.
  2. - to jest wiadomość tekstowa, która zawiera szczegółowy opis błędu.
  3. (opcjonalnie) - jest to ciąg tekstowy wskazujący, kto spowodował błąd.
  4. (opcjonalnie) - jest to element komunikatów o błędach specyficznych dla aplikacji. Dlatego aplikacja może mieć określony komunikat o błędzie dla różnych scenariuszy logiki biznesowej.

Przykład komunikatu o błędzie

Poniżej podano przykład komunikatu błędu. Błąd jest generowany, jeśli scenariusz, w którym klient próbuje użyć metody o nazwie TutorialID w klasie GetTutorial.

Poniższy komunikat o błędzie jest generowany w przypadku, gdy metoda nie istnieje w zdefiniowanej klasie.

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

Wynik:

Po wykonaniu powyższego kodu wyświetli się błąd „Nie udało się zlokalizować metody (GetTutorialID) w klasie (GetTutorial)”

Model komunikacji SOAP

Cała komunikacja przez SOAP odbywa się za pośrednictwem protokołu HTTP. Przed SOAP wiele usług internetowych używało do komunikacji standardowego stylu RPC (Remote Procedure Call). To był najprostszy rodzaj komunikacji, ale miał wiele ograniczeń.

Teraz w tym samouczku interfejsu API SOAP rozważmy poniższy diagram, aby zobaczyć, jak działa ta komunikacja. W tym przykładzie załóżmy, że serwer obsługuje usługę sieciową, która udostępnia 2 metody, takie jak

  • GetEmployee - spowoduje to pobranie wszystkich danych pracownika
  • SetEmployee - odpowiednio ustawi wartość szczegółów, takich jak dział pracowników, wynagrodzenie itp.

W normalnej komunikacji w stylu RPC klient po prostu wywoływał metody w swoim żądaniu i wysyłał wymagane parametry do serwera, a serwer wysyłał następnie żądaną odpowiedź.

Powyższy model komunikacji ma poniższe poważne ograniczenia

  1. Niezależne od języka - serwer obsługujący metody byłby w określonym języku programowania i zwykle wywołania do serwera odbywałyby się tylko w tym języku programowania.
  2. Nie jest to standardowy protokół - w przypadku wywołania procedury zdalnej wywołanie nie jest realizowane za pośrednictwem protokołu standardowego. Był to problem, ponieważ większość komunikacji przez Internet musiała odbywać się za pośrednictwem protokołu HTTP.
  3. Zapory - ponieważ wywołania RPC nie przechodzą przez normalny protokół, oddzielne porty muszą być otwarte na serwerze, aby umożliwić klientowi komunikację z serwerem. Zwykle wszystkie zapory ogniowe blokowałyby tego rodzaju ruch i generalnie wymagana była duża konfiguracja, aby zapewnić, że ten rodzaj komunikacji między klientem a serwerem będzie działał.

Aby przezwyciężyć wszystkie powyższe ograniczenia, SOAP użyłby wówczas poniższego modelu komunikacji

  1. Klient sformatowałby informacje dotyczące wywołania procedury i wszelkich argumentów w komunikacie SOAP i wysłałby je do serwera jako część żądania HTTP. Ten proces hermetyzacji danych w wiadomości SOAP był znany jako Marshalling.
  2. Następnie serwer rozpakowałby wiadomość wysłaną przez klienta, zobaczył, o co prosił klient, a następnie odesłał odpowiednią odpowiedź z powrotem do klienta jako wiadomość SOAP. Praktyka rozpakowywania żądania wysłanego przez klienta jest znana jako Demarshalling.

Praktyczny przykład SOAP

Teraz w tym samouczku SoapUI zobaczmy praktyczny przykład SOAP,

Prawdopodobnie jednym z najlepszych sposobów sprawdzenia, jak generowane są komunikaty SOAP, jest faktyczne zobaczenie usługi sieciowej w akcji.

W tym temacie przyjrzymy się używaniu struktury Microsoft.Net do tworzenia usługi sieci Web ASMX. Ten typ usługi sieciowej obsługuje zarówno protokół SOAP w wersji 1.1, jak i w wersji 1.2.

Usługi sieciowe ASMX automatycznie generują dokument Web Service Definition Language (WSDL). Ten dokument WSDL jest wymagany przez wywołującą aplikację kliencką, aby aplikacja wiedziała, do czego jest zdolna usługa WWW.

W naszym przykładzie utworzymy prostą usługę sieciową, która będzie używana do zwracania ciągu znaków do aplikacji wywołującej usługę sieciową.

Ta usługa internetowa będzie hostowana w aplikacji internetowej Asp.Net. Następnie wywołamy usługę sieciową i zobaczymy wynik, który jest zwracany przez usługę sieciową.

Program Visual Studio pokaże nam również, jaki komunikat SOAP jest przesyłany między usługą internetową a aplikacją wywołującą.

Pierwszy warunek wstępny do skonfigurowania naszej aplikacji usługi sieci Web, który można wykonać, wykonując poniższe czynności.

Upewnij się, że w tym przykładzie masz zainstalowany program Visual Studio 2013 w systemie.

Krok 1) Pierwszym krokiem jest utworzenie pustej aplikacji internetowej ASP.Net. W programie Visual Studio 2013 kliknij opcję menu Plik-> Nowy projekt.

Po kliknięciu opcji Nowy projekt program Visual Studio wyświetli kolejne okno dialogowe umożliwiające wybranie typu projektu i podanie niezbędnych szczegółów projektu. Zostanie to wyjaśnione w następnym kroku.

Krok 2) Na tym etapie

  1. Upewnij się, że najpierw wybierzesz szablon sieci Web C # aplikacji sieci Web ASP.NET. Projekt musi być tego typu, aby można było utworzyć projekt usług SOAP. Wybierając tę ​​opcję, Visual Studio wykona niezbędne kroki, aby dodać wymagane pliki, które są wymagane przez dowolną aplikację internetową.
  2. Nadaj projektowi nazwę, która w naszym przypadku została podana jako webservice.asmx. Następnie podaj lokalizację, w której będą przechowywane pliki projektu.

Po zakończeniu zobaczysz plik projektu utworzony w eksploratorze rozwiązań w programie Visual Studio 2013.

Krok 3) Na tym etapie

Zamierzamy dodać plik usługi sieci Web do naszego projektu

  1. Najpierw kliknij prawym przyciskiem myszy plik projektu, jak pokazano poniżej

  1. Po kliknięciu pliku projektu prawym przyciskiem myszy możesz wybrać opcję „Dodaj-> Usługa sieciowa (ASMX), aby dodać plik usługi sieciowej. Wystarczy podać nazwę usługi samouczka dla pliku nazwy usługi sieciowej”.

Krok 4) Dodaj następujący kod do pliku asmx usługi samouczka.

Objaśnienie kodu:

  1. Ten wiersz kodu zawiera nazwę pliku usługi sieci Web. Jest to ważny krok, ponieważ umożliwia aplikacji klienckiej wywoływanie usługi sieciowej za pośrednictwem jej nazwy.
  2. Zwykle plik klasy jest używany do hermetyzacji funkcjonalności usługi internetowej. Zatem plik klasy będzie zawierał definicję wszystkich metod internetowych, które zapewnią pewną funkcjonalność aplikacji klienckiej.
  3. Tutaj [WebMethod] jest znany jako atrybut opisujący funkcję. Kolejny krok tworzy funkcję o nazwie „Guru99WebService”, ale wraz z dołączeniem tego kroku dodania atrybutu [WebMethod] zapewnia, że ​​ta metoda może zostać wywołana przez aplikację kliencką. Jeśli tego atrybutu nie ma, to metoda nigdy nie może zostać wywołana przez aplikację kliencką.
  4. Tutaj definiujemy funkcję o nazwie „Guru99WebService”, która zostanie użyta do zwrócenia ciągu znaków do wywołującej aplikacji klienckiej. Ta funkcja jest usługą sieciową, którą można wywołać w dowolnej aplikacji klienckiej.
  5. Używamy instrukcji return, aby zwrócić do aplikacji klienta ciąg „To jest usługa sieciowa Guru99”.

Jeśli kod zostanie wykonany pomyślnie, następujące dane wyjściowe zostaną wyświetlone po uruchomieniu kodu w przeglądarce.

Wynik:

  • Wynik jasno pokazuje, że nazwa naszej usługi internetowej to „Usługa sieciowa Guru99”, co jest wynikiem nadania nazwy naszej usłudze internetowej.
  • Widzimy również, że możemy wywołać usługę internetową. Jeśli klikniemy przycisk Wywołaj, otrzymamy poniższą odpowiedź w przeglądarce internetowej.

Powyższe dane wyjściowe,

  • Wyraźnie widać, że wywołanie metody sieciowej powoduje zwrócenie ciągu znaków „To jest usługa sieciowa Guru99”.
  • Visual Studio umożliwia również przeglądanie żądania wiadomości SOAP i odpowiedzi, które są generowane, gdy wywoływana jest powyższa usługa internetowa.

Żądanie SOAP, które jest generowane, gdy wywoływana jest usługa sieciowa, jest pokazane poniżej.

Objaśnienie kodu:

  1. Pierwsza część komunikatu SOAP to element koperty, o którym mówiliśmy w poprzednich rozdziałach. To jest element hermetyzujący, który jest obecny w każdej wiadomości SOAP.
  2. Treść SOAP jest następnym elementem i zawiera rzeczywiste szczegóły komunikatu SOAP.
  3. Trzecia część to element określający, że chcemy wywołać usługę o nazwie „Guru99WebService”.

string

Objaśnienie kodu:

  1. Pierwsza część komunikatu SOAP to element koperty, o którym mówiliśmy w poprzednich rozdziałach. To jest element hermetyzujący, który jest obecny w każdej wiadomości SOAP.
  2. Treść SOAP jest następnym elementem i zawiera rzeczywiste szczegóły komunikatu SOAP.
  3. Ciekawą częścią, którą teraz zobaczysz, jest atrybut „string”. Informuje to aplikację kliencką, że wywoływana usługa internetowa zwraca obiekt typu string. Jest to bardzo przydatne, ponieważ aplikacja kliencka, która w przeciwnym razie nie wiedziałaby, co zwraca usługa sieciowa.

Podsumowanie

  • SOAP to protokół używany do wymiany danych między aplikacjami zbudowanymi w różnych językach programowania.
  • SOAP jest zbudowany na specyfikacji XML i współpracuje z protokołem HTTP. To sprawia, że ​​jest idealny do użytku w aplikacjach internetowych.
  • Bloki konstrukcyjne SOAP składają się z komunikatu SOAP. Każda wiadomość SOAP składa się z elementu koperty, nagłówka i elementu treści.
  • Element koperty jest obowiązkowym elementem w komunikacie SOAP i służy do hermetyzacji wszystkich danych w komunikacie SOAP.
  • Element nagłówka może służyć do przechowywania informacji, takich jak informacje uwierzytelniające lub definicje złożonych typów danych.
  • Element body jest głównym elementem, który zawiera definicję metod internetowych wraz z wszelkimi informacjami o parametrach, jeśli są wymagane.