Usługi sieci Web - krótki przewodnik
Różne książki i różne organizacje podają różne definicje usług internetowych. Niektóre z nich są wymienione tutaj.
Usługa sieciowa to dowolne oprogramowanie, które udostępnia się w Internecie i wykorzystuje ustandaryzowany system przesyłania wiadomości XML. XML jest używany do kodowania całej komunikacji do usługi sieciowej. Na przykład klient wywołuje usługę internetową, wysyłając wiadomość XML, a następnie czeka na odpowiednią odpowiedź XML. Ponieważ cała komunikacja odbywa się w języku XML, usługi sieciowe nie są powiązane z żadnym systemem operacyjnym ani językiem programowania - Java może komunikować się z Perlem; Aplikacje Windows mogą komunikować się z aplikacjami Unix.
Usługi internetowe to samodzielne, modułowe, rozproszone, dynamiczne aplikacje, które można opisywać, publikować, lokalizować lub wywoływać w sieci w celu tworzenia produktów, procesów i łańcuchów dostaw. Aplikacje te mogą być lokalne, rozproszone lub oparte na sieci WWW. Usługi internetowe są oparte na otwartych standardach, takich jak TCP / IP, HTTP, Java, HTML i XML.
Usługi sieci Web to oparte na języku XML systemy wymiany informacji, które wykorzystują Internet do bezpośredniej interakcji między aplikacjami. Systemy te mogą obejmować programy, obiekty, wiadomości lub dokumenty.
Usługa internetowa to zbiór otwartych protokołów i standardów używanych do wymiany danych między aplikacjami lub systemami. Aplikacje napisane w różnych językach programowania i działające na różnych platformach mogą wykorzystywać usługi sieciowe do wymiany danych w sieciach komputerowych, takich jak Internet, w sposób podobny do komunikacji między procesami na jednym komputerze. Ta interoperacyjność (np. Między aplikacjami Java i Python lub Windows i Linux) wynika z wykorzystania otwartych standardów.
Podsumowując, kompletna usługa internetowa to każda usługa, która -
Jest dostępny przez Internet lub sieci prywatne (intranet)
Używa ustandaryzowanego systemu przesyłania wiadomości XML
Nie jest powiązany z żadnym systemem operacyjnym ani językiem programowania
Samoopisuje się za pomocą wspólnej gramatyki XML
Można go znaleźć za pomocą prostego mechanizmu wyszukiwania
Składniki usług internetowych
Podstawową platformą usług internetowych jest XML + HTTP. Wszystkie standardowe usługi sieciowe działają przy użyciu następujących komponentów -
SOAP (Simple Object Access Protocol)
UDDI (uniwersalny opis, wykrywanie i integracja)
WSDL (język opisu usług sieci Web)
Wszystkie te komponenty zostały omówione w rozdziale Architektura usług internetowych .
Jak działa usługa sieciowa?
Usługa sieciowa umożliwia komunikację między różnymi aplikacjami przy użyciu otwartych standardów, takich jak HTML, XML, WSDL i SOAP. Usługa internetowa korzysta z -
XML do oznaczania danych
SOAP do przesłania wiadomości
WSDL opisujący dostępność usługi.
W systemie Solaris można zbudować usługę internetową opartą na języku Java, do której można uzyskać dostęp z poziomu programu Visual Basic działającego w systemie Windows.
Możesz również użyć C # do tworzenia nowych usług internetowych w systemie Windows, które mogą być wywoływane z aplikacji internetowej opartej na JavaServer Pages (JSP) i działającej w systemie Linux.
Przykład
Rozważ prosty system zarządzania kontami i przetwarzania zamówień. Księgowi używają aplikacji klienckiej zbudowanej w języku Visual Basic lub JSP do tworzenia nowych kont i wprowadzania nowych zamówień klientów.
Logika przetwarzania tego systemu jest napisana w języku Java i rezyduje na komputerze z systemem Solaris, który również współdziała z bazą danych w celu przechowywania informacji.
Kroki do wykonania tej operacji są następujące -
Program klienta pakuje informacje o rejestracji konta w komunikat SOAP.
Ten komunikat SOAP jest wysyłany do usługi sieci Web jako treść żądania HTTP POST.
Usługa sieciowa rozpakowuje żądanie SOAP i konwertuje je na polecenie zrozumiałe dla aplikacji.
Aplikacja przetwarza informacje zgodnie z wymaganiami i odpowiada nowym unikalnym numerem konta dla tego klienta.
Następnie usługa sieciowa pakuje odpowiedź do innego komunikatu SOAP, który odsyła z powrotem do programu klienta w odpowiedzi na jego żądanie HTTP.
Program kliencki rozpakowuje komunikat SOAP w celu uzyskania wyników procesu rejestracji konta.
Oto zalety korzystania z usług internetowych -
Ujawnianie istniejącej funkcji w sieci
Usługa internetowa to jednostka zarządzanego kodu, którą można wywołać zdalnie za pomocą protokołu HTTP. Oznacza to, że można go aktywować za pomocą żądań HTTP. Usługi sieci Web umożliwiają udostępnienie funkcjonalności istniejącego kodu w sieci. Gdy zostanie ujawniony w sieci, inne aplikacje mogą korzystać z funkcjonalności Twojego programu.
Interoperacyjność
Usługi internetowe umożliwiają różnym aplikacjom komunikowanie się ze sobą oraz współdzielenie danych i usług między sobą. Inne aplikacje również mogą korzystać z usług internetowych. Na przykład aplikacja VB lub .NET może komunikować się z usługami sieciowymi Java i odwrotnie. Usługi internetowe służą do uniezależnienia platformy aplikacji i technologii.
Standardowy protokół
Usługi internetowe wykorzystują do komunikacji ustandaryzowany protokół branżowy. Wszystkie cztery warstwy (Service Transport, XML Messaging, Service Description i Service Discovery) używają dobrze zdefiniowanych protokołów w stosie protokołów usług sieciowych. Taka standaryzacja stosu protokołów daje firmie wiele korzyści, takich jak szeroki wybór opcji, redukcja kosztów wynikających z konkurencji oraz wzrost jakości.
Niska cena komunikacji
Usługi sieci Web używają protokołu SOAP przez HTTP, więc możesz używać istniejącego taniego Internetu do wdrażania usług internetowych. To rozwiązanie jest znacznie mniej kosztowne w porównaniu z rozwiązaniami autorskimi, takimi jak EDI / B2B. Oprócz protokołu SOAP przez HTTP, usługi sieciowe mogą być również implementowane w innych niezawodnych mechanizmach transportu, takich jak FTP.
Usługi internetowe mają następujące szczególne cechy behawioralne -
Oparte na XML
Usługi sieci Web używają XML w warstwach reprezentacji danych i transportu danych. Korzystanie z języka XML eliminuje wszelkie powiązania z siecią, systemem operacyjnym lub platformą. Aplikacje oparte na usługach internetowych są wysoce interoperacyjne na swoim podstawowym poziomie.
Luźno powiązane
Konsument usługi internetowej nie jest bezpośrednio powiązany z tą usługą internetową. Interfejs usługi sieci Web może się zmieniać w czasie bez uszczerbku dla możliwości interakcji klienta z usługą. Ściśle powiązany system oznacza, że logika klienta i serwera są ściśle ze sobą powiązane, co oznacza, że jeśli jeden interfejs się zmieni, drugi musi zostać zaktualizowany. Przyjęcie luźno powiązanej architektury sprawia, że systemy oprogramowania są łatwiejsze w zarządzaniu i umożliwia prostszą integrację między różnymi systemami.
Gruboziarnisty
Technologie zorientowane obiektowo, takie jak Java, udostępniają swoje usługi za pomocą indywidualnych metod. Indywidualna metoda jest zbyt precyzyjną operacją, aby zapewnić jakąkolwiek użyteczną zdolność na poziomie korporacyjnym. Tworzenie programu w języku Java od podstaw wymaga utworzenia kilku drobnoziarnistych metod, które są następnie składane w gruboziarnistą usługę, z której korzysta klient lub inna usługa.
Firmy i interfejsy, które ujawniają, powinny być gruboziarniste. Technologia usług sieci Web zapewnia naturalny sposób definiowania gruboziarnistych usług, które mają dostęp do odpowiedniej ilości logiki biznesowej.
Zdolność do bycia synchronicznym lub asynchronicznym
Synchroniczność odnosi się do związania klienta z wykonaniem usługi. W wywołaniach synchronicznych klient blokuje i czeka na zakończenie działania usługi przed kontynuowaniem. Operacje asynchroniczne umożliwiają klientowi wywołanie usługi, a następnie wykonanie innych funkcji.
Klienci asynchroniczni pobierają wyniki w późniejszym czasie, natomiast klienci synchroniczni otrzymują wyniki po zakończeniu usługi. Zdolność asynchroniczna jest kluczowym czynnikiem umożliwiającym tworzenie luźno powiązanych systemów.
Obsługuje zdalne wywołania procedur (RPC)
Usługi sieci Web umożliwiają klientom wywoływanie procedur, funkcji i metod na zdalnych obiektach przy użyciu protokołu opartego na języku XML. Procedury zdalne ujawniają parametry wejściowe i wyjściowe, które musi obsługiwać usługa sieci Web.
Rozwój komponentów za pomocą Enterprise JavaBeans (EJB) i .NET Components w ciągu ostatnich kilku lat w coraz większym stopniu staje się częścią architektur i wdrożeń w przedsiębiorstwach. Obie technologie są dystrybuowane i dostępne za pośrednictwem różnych mechanizmów RPC.
Usługa internetowa obsługuje RPC, udostępniając własne usługi, równoważne usługom tradycyjnego komponentu, lub tłumacząc przychodzące wywołania na wywołanie komponentu EJB lub .NET.
Obsługuje wymianę dokumentów
Jedną z głównych zalet XML jest ogólny sposób przedstawiania nie tylko danych, ale także złożonych dokumentów. Dokumenty te mogą być tak proste, jak reprezentowanie aktualnego adresu, lub mogą być tak złożone, jak reprezentowanie całej książki lub zapytania ofertowego (RFQ). Usługi internetowe wspierają przejrzystą wymianę dokumentów, ułatwiając integrację biznesową.
Istnieją dwa sposoby przeglądania architektury usług internetowych -
- Pierwszym jest zbadanie indywidualnych ról każdego aktora usługi sieciowej.
- Drugim jest zbadanie pojawiającego się stosu protokołów usług sieciowych.
Role usługi sieci Web
W architekturze usług internetowych istnieją trzy główne role -
Dostawca usługi
To jest dostawca usługi internetowej. Usługodawca realizuje usługę i udostępnia ją w Internecie.
Żądający usługi
To jest dowolny konsument usługi internetowej. Żądający wykorzystuje istniejącą usługę internetową, otwierając połączenie sieciowe i wysyłając żądanie XML.
Rejestr usług
To jest logicznie scentralizowany katalog usług. Rejestr stanowi centralne miejsce, w którym programiści mogą publikować nowe usługi lub znajdować istniejące. Służy więc jako scentralizowana izba rozliczeniowa dla firm i ich usług.
Stos protokołów usług sieci Web
Drugą opcją przeglądania architektury usług internetowych jest zbadanie pojawiającego się stosu protokołów usług internetowych. Stos wciąż się rozwija, ale obecnie składa się z czterech głównych warstw.
Service Transport
Ta warstwa jest odpowiedzialna za przesyłanie wiadomości między aplikacjami. Obecnie warstwa ta obejmuje Hyper Text Transport Protocol (HTTP), Simple Mail Transfer Protocol (SMTP), File Transfer Protocol (FTP) i nowsze protokoły, takie jak Blocks Extensible Exchange Protocol (BEEP).
Wiadomości XML
Ta warstwa jest odpowiedzialna za kodowanie wiadomości w typowym formacie XML, tak aby wiadomości były zrozumiałe na każdym końcu. Obecnie ta warstwa zawiera XML-RPC i SOAP.
opis usługi
Ta warstwa jest odpowiedzialna za opisanie publicznego interfejsu do określonej usługi internetowej. Obecnie opis usługi jest obsługiwany za pośrednictwem języka opisu usługi sieci Web (WSDL).
Wykrywanie usług
Ta warstwa jest odpowiedzialna za scentralizowanie usług we wspólnym rejestrze i zapewnienie łatwej funkcji publikowania / znajdowania. Obecnie wykrywanie usług jest obsługiwane za pośrednictwem uniwersalnego opisu, wykrywania i integracji (UDDI).
Wraz z rozwojem usług internetowych można dodawać kolejne warstwy, a do każdej warstwy mogą być dodawane dodatkowe technologie.
W następnym rozdziale opisano składniki usług internetowych.
Kilka słów o transporcie usług
Dolna część stosu protokołów usług sieci Web to transport usług. Ta warstwa jest odpowiedzialna za rzeczywisty transport wiadomości XML między dwoma komputerami.
Hyper Text Transfer Protocol (HTTP)
Obecnie HTTP jest najpopularniejszą opcją transportu usług. Protokół HTTP jest prosty, stabilny i szeroko stosowany. Ponadto większość zapór zezwala na ruch HTTP. Umożliwia to wiadomościom XMLRPC lub SOAP podszywanie się pod wiadomości HTTP. Jest to dobre, jeśli chcesz zintegrować aplikacje zdalne, ale powoduje to szereg problemów związanych z bezpieczeństwem.
Bloki Extensible Exchange Protocol (BEEP)
To obiecująca alternatywa dla HTTP. BEEP to nowa struktura Internet Engineering Task Force (IETF) służąca do tworzenia nowych protokołów. BEEP jest nakładany bezpośrednio na TCP i zawiera szereg wbudowanych funkcji, w tym wstępny protokół uzgadniania, uwierzytelnianie, zabezpieczenia i obsługę błędów. Używając BEEP, można tworzyć nowe protokoły dla różnych aplikacji, w tym komunikatorów, przesyłania plików, syndykacji treści i zarządzania siecią.
SOAP nie jest powiązany z żadnym określonym protokołem transportowym. W rzeczywistości możesz używać protokołu SOAP przez HTTP, SMTP lub FTP. Dlatego jednym obiecującym pomysłem jest użycie SOAP zamiast BEEP.
W ciągu ostatnich kilku lat trzy podstawowe technologie wyłoniły się jako światowe standardy, które stanowią rdzeń dzisiejszej technologii usług internetowych. Technologie te omówiono poniżej.
XML-RPC
Jest to najprostszy protokół oparty na języku XML do wymiany informacji między komputerami.
XML-RPC to prosty protokół, który używa komunikatów XML do wykonywania RPC.
Żądania są kodowane w XML i wysyłane przez HTTP POST.
Odpowiedzi XML są osadzane w treści odpowiedzi HTTP.
XML-RPC jest niezależny od platformy.
XML-RPC umożliwia komunikację różnorodnym aplikacjom.
Klient Java może mówić XML-RPC do serwera Perla.
XML-RPC to najłatwiejszy sposób na rozpoczęcie pracy z usługami sieciowymi.
Aby dowiedzieć się więcej o XML-RPC, odwiedź nasz samouczek dotyczący XML-RPC .
MYDŁO
SOAP to oparty na języku XML protokół do wymiany informacji między komputerami.
SOAP to protokół komunikacyjny.
SOAP służy do komunikacji między aplikacjami.
SOAP to format do wysyłania wiadomości.
SOAP jest przeznaczony do komunikacji przez Internet.
SOAP jest niezależny od platformy.
SOAP jest niezależny od języka.
SOAP jest proste i rozszerzalne.
SOAP pozwala ominąć zapory.
SOAP zostanie opracowany jako standard W3C.
Aby dowiedzieć się więcej o SOAP, odwiedź nasz samouczek dotyczący protokołu SOAP .
WSDL
WSDL to oparty na XML język opisujący usługi sieciowe i sposób uzyskiwania do nich dostępu.
WSDL oznacza język opisu usług sieciowych.
WSDL został opracowany wspólnie przez Microsoft i IBM.
WSDL to oparty na XML protokół wymiany informacji w środowiskach zdecentralizowanych i rozproszonych.
WSDL to standardowy format opisu usługi WWW.
Definicja WSDL opisuje, jak uzyskać dostęp do usługi WWW i jakie operacje będzie ona wykonywać.
WSDL jest językiem opisującym sposób łączenia się z usługami opartymi na XML.
WSDL jest integralną częścią UDDI, światowego rejestru biznesowego opartego na XML.
WSDL to język używany przez UDDI.
WSDL jest wymawiane jako „wiz-dull” i zapisywane jako „WSD-L”.
Aby dowiedzieć się więcej o WSDL, odwiedź nasz samouczek dotyczący WSDL .
UDDI
UDDI to oparty na języku XML standard opisywania, publikowania i znajdowania usług internetowych.
UDDI to skrót od Universal Description, Discovery and Integration.
UDDI to specyfikacja rozproszonego rejestru usług internetowych.
UDDI to niezależna od platformy, otwarta struktura.
UDDI może komunikować się za pośrednictwem protokołu SOAP, CORBA i Java RMI.
UDDI używa WSDL do opisywania interfejsów do usług WWW.
UDDI jest postrzegany w SOAP i WSDL jako jeden z trzech podstawowych standardów usług WWW.
UDDI to otwarta inicjatywa branżowa, która umożliwia firmom wzajemne poznanie się i zdefiniowanie sposobu interakcji w Internecie.
Aby dowiedzieć się więcej o UDDI, odwiedź nasz samouczek dotyczący UDDI .
W oparciu o architekturę usług sieciowych w ramach implementacji usług internetowych tworzymy dwa następujące komponenty -
Usługodawca lub wydawca
To jest dostawca usługi internetowej. Usługodawca realizuje usługę i udostępnia ją w Internecie lub intranecie.
Napiszemy i opublikujemy prostą usługę internetową przy użyciu .NET SDK.
Zgłaszający usługę lub konsument
To jest dowolny konsument usługi internetowej. Żądający wykorzystuje istniejącą usługę internetową, otwierając połączenie sieciowe i wysyłając żądanie XML.
Napiszemy również dwa requestery usług internetowych: jednego konsumenta internetowego (aplikacja ASP.NET) i drugiego konsumenta aplikacji Windows.
Poniżej przedstawiono nasz pierwszy przykład usługi sieciowej, która działa jako dostawca usług i ujawnia dwie metody (dodaj i SayHello) jako usługi internetowe, które mają być używane przez aplikacje. To jest standardowy szablon usługi internetowej. Usługi sieci Web .NET używają rozszerzenia .asmx. Należy zauważyć, że metoda udostępniana jako usługa internetowa ma atrybut WebMethod. Zapisz ten plik jako FirstService.asmx w katalogu wirtualnym IIS (jak wyjaśniono w konfigurowaniu usług IIS; na przykład c: \ MyWebSerces).
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Aby przetestować usługę internetową, należy ją opublikować. Usługa sieciowa może zostać opublikowana w intranecie lub w Internecie. Będziemy publikować tę usługę internetową w usługach IIS uruchomionych na komputerze lokalnym. Zacznijmy od skonfigurowania usług IIS.
Otwórz Start → Ustawienia → Panel sterowania → Narzędzia administracyjne → Menedżer usług internetowych.
Rozwiń i kliknij prawym przyciskiem domyślną witrynę internetową; wybierz Nowy & # rarr; Katalog wirtualny. Otworzy się Kreator tworzenia katalogu wirtualnego. Kliknij Następny.
Otworzy się ekran „Alias katalogu wirtualnego”. Wpisz nazwę katalogu wirtualnego. Na przykład MyWebServices. Kliknij Następny.
Otworzy się ekran „Katalog zawartości witryny sieci Web”.
Wprowadź nazwę ścieżki katalogu wirtualnego. Na przykład c: \ MyWebServices. Kliknij Następny.
Otworzy się ekran „Uprawnienia dostępu”. Zmień ustawienia zgodnie ze swoimi wymaganiami. Zachowajmy domyślne ustawienia tego ćwiczenia.
Kliknij przycisk Dalej. Kończy konfigurację usług IIS.
Kliknij Zakończ, aby zakończyć konfigurację.
Aby sprawdzić, czy usługi IIS zostały poprawnie skonfigurowane, skopiuj plik HTML (na przykład x.html) do utworzonego powyżej katalogu wirtualnego (C: \ MyWebServices). Teraz otwórz Internet Explorer i wpiszhttp://localhost/MyWebServices/x.html. Powinien otworzyć plik x.html.
Note- Jeśli to nie zadziała, spróbuj zastąpić hosta lokalnego adresem IP komputera. Jeśli nadal nie działa, sprawdź, czy usługi IIS są uruchomione; może zajść potrzeba ponownej konfiguracji usług IIS i katalogu wirtualnego.
Aby przetestować tę usługę sieci Web, skopiuj FirstService.asmx do katalogu wirtualnego IIS utworzonego powyżej (C: \ MyWebServices). Otwórz usługę internetową w przeglądarce Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Powinien otworzyć stronę usługi internetowej. Strona powinna zawierać linki do dwóch metod udostępnianych przez naszą aplikację jako usługi sieciowe. Gratulacje! Napisałeś swój pierwszy serwis internetowy!
Testowanie usługi internetowej
Jak właśnie widzieliśmy, pisanie usług internetowych jest łatwe w .NET Framework. Pisanie konsumentów usług internetowych jest również łatwe w środowisku .NET; jednak jest to trochę bardziej skomplikowane. Jak wspomniano wcześniej, napiszemy dwa rodzaje odbiorców usług, jednego konsumenta internetowego i drugiego konsumenta aplikacji Windows. Napiszmy naszego pierwszego konsumenta usług internetowych.
Konsument usług internetowych
Napisz konsumenta internetowego, jak podano poniżej. Nazwij to WebApp.aspx. Zauważ, że jest to aplikacja ASP.NET. Zapisz to w katalogu wirtualnym usługi internetowej (c: \ MyWebServices \ WebApp.axpx).
Ta aplikacja ma dwa pola tekstowe, które służą do pobierania liczb od użytkownika, który ma zostać dodany. Ma jeden przycisk, Wykonaj, który po kliknięciu powoduje pobranie usług sieciowych Dodaj i SayHello.
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
Po utworzeniu konsumenta musimy utworzyć serwer proxy dla usługi internetowej, która ma być używana. Ta praca jest wykonywana automatycznie przez program Visual Studio .NET za nas podczas odwoływania się do dodanej usługi sieciowej. Oto kroki, które należy wykonać -
Utwórz serwer proxy dla usługi sieci Web, która ma być używana. Serwer proxy jest tworzony za pomocą narzędzia WSDL dostarczonego z zestawem .NET SDK. To narzędzie wyodrębnia informacje z usługi sieci Web i tworzy serwer proxy. Serwer proxy jest ważny tylko dla określonej usługi internetowej. Jeśli chcesz korzystać z innych usług internetowych, musisz również utworzyć serwer proxy dla tej usługi. Program Visual Studio .NET automatycznie tworzy serwer proxy po dodaniu odwołania do usługi sieci Web. Utwórz serwer proxy dla usługi sieci Web za pomocą narzędzia WSDL dostarczonego z zestawem .NET SDK. Utworzy plik FirstSevice.cs w bieżącym katalogu. Musimy go skompilować, aby utworzyć FirstService.dll (proxy) dla usługi sieci Web.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
Umieść skompilowany serwer proxy w katalogu bin katalogu wirtualnego usługi sieci Web (c: \ MyWebServices \ bin). Internetowe usługi informacyjne (IIS) wyszukują serwer proxy w tym katalogu.
Utwórz konsumenta usługi w taki sam sposób, jak to zrobiliśmy. Należy zauważyć, że obiekt serwera proxy usługi sieci Web jest tworzony w konsumentach. Ten serwer proxy obsługuje interakcję z usługą.
Wpisz adres URL konsumenta w IE, aby go przetestować (na przykład http: //localhost/MyWebServices/WebApp.aspx).
Konsument usług internetowych opartych na aplikacjach systemu Windows
Pisanie konsumenta usługi sieciowej opartej na aplikacji systemu Windows jest tym samym, co pisanie dowolnej innej aplikacji Windows. Musisz tylko utworzyć serwer proxy (co już zrobiliśmy) i odwołać się do niego podczas kompilacji aplikacji. Poniżej znajduje się nasza aplikacja Windows korzystająca z usługi sieciowej. Ta aplikacja tworzy obiekt usługi sieciowej (oczywiście proxy) i wywołuje metody SayHello i Add.
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
Skompiluj go za pomocą c:\>csc /r:FirstService.dll WinApp.cs
. Stworzy WinApp.exe. Uruchom go, aby przetestować aplikację i usługę internetową.
Teraz pojawia się pytanie: Skąd możesz mieć pewność, że ta aplikacja faktycznie wywołuje usługę internetową?
To jest proste do przetestowania. Zatrzymaj serwer sieciowy, aby nie można było skontaktować się z usługą sieciową. Teraz uruchom aplikację WinApp. Spowoduje to uruchomienie wyjątku czasu wykonywania. Teraz ponownie uruchom serwer WWW. Powinno działać.
Bezpieczeństwo ma kluczowe znaczenie dla usług internetowych. Jednak ani specyfikacje XML-RPC, ani SOAP nie nakładają żadnych wyraźnych wymagań dotyczących zabezpieczeń ani uwierzytelniania.
Z usługami internetowymi wiążą się trzy konkretne problemy z bezpieczeństwem -
- Confidentiality
- Authentication
- Bezpieczeństwo sieci
Poufność
Jeśli klient wysyła żądanie XML do serwera, czy możemy zapewnić poufność komunikacji?
Odpowiedź leży tutaj -
- XML-RPC i SOAP działają głównie na protokole HTTP.
- Protokół HTTP obsługuje protokół Secure Sockets Layer (SSL).
- Komunikacja może być szyfrowana przez SSL.
- SSL to sprawdzona technologia i szeroko stosowana.
Pojedyncza usługa internetowa może składać się z łańcucha aplikacji. Na przykład jedna duża usługa może łączyć ze sobą usługi trzech innych aplikacji. W tym przypadku SSL nie jest wystarczający; wiadomości muszą być zaszyfrowane w każdym węźle na ścieżce usługi, a każdy węzeł reprezentuje potencjalne słabe ogniwo w łańcuchu. Obecnie nie ma uzgodnionego rozwiązania tego problemu, ale obiecującym rozwiązaniem jest standard szyfrowania W3C XML. Ten standard zapewnia strukturę do szyfrowania i odszyfrowywania całych dokumentów XML lub tylko części dokumentu XML. Możesz to sprawdzić na www.w3.org/Encryption
Poświadczenie
Jeśli klient łączy się z usługą internetową, w jaki sposób identyfikujemy użytkownika? Czy użytkownik jest upoważniony do korzystania z usługi?
Można rozważyć następujące opcje, ale nie ma jasnego konsensusu co do schematu silnego uwierzytelniania.
Protokół HTTP zawiera wbudowaną obsługę uwierzytelniania podstawowego i cyfrowego, dzięki czemu usługi można chronić w taki sam sposób, jak obecnie chronione są dokumenty HTML.
SOAP Digital Signature (SOAP-DSIG) wykorzystuje kryptografię klucza publicznego do cyfrowego podpisywania wiadomości SOAP. Umożliwia klientowi lub serwerowi sprawdzenie tożsamości drugiej strony. Sprawdź to na www.w3.org/TR/SOAP-dsig .
Organizacja zajmująca się rozwojem standardów informacji strukturalnej (OASIS) pracuje nad językiem Security Assertion Markup Language (SAML).
Bezpieczeństwo sieci
Obecnie nie ma łatwej odpowiedzi na ten problem i był on przedmiotem wielu debat. Na razie, jeśli naprawdę zależy Ci na odfiltrowaniu komunikatów SOAP lub XML-RPC, jedną z możliwości jest odfiltrowanie wszystkich żądań HTTP POST, które ustawiają typ zawartości na tekst / xml.
Inną alternatywą jest filtrowanie atrybutu nagłówka HTTP SOAPAction. Dostawcy zapór ogniowych również opracowują obecnie narzędzia zaprojektowane specjalnie do filtrowania ruchu sieciowego.
W tym rozdziale przedstawiono wszystkie najnowsze standardy związane z usługami sieciowymi.
Transporty
BEEP, Blocks Extensible Exchange Protocol (poprzednio nazywany BXXP), jest strukturą do tworzenia protokołów aplikacji. Został znormalizowany przez IETF i dla protokołów internetowych robi to, co XML zrobił dla danych.
Bloki Extensible Exchange Protocol (BEEP)
Wiadomości
Te standardy i specyfikacje dotyczące przesyłania wiadomości mają na celu stworzenie ram dla wymiany informacji w zdecentralizowanym, rozproszonym środowisku.
SOAP 1.1 (uwaga)
SOAP 1.2 (specyfikacja)
Profil załączników usług sieci Web 1.0
Mechanizm optymalizacji transmisji komunikatów SOAP
Opis i odkrycie
Usługi sieci Web mają znaczenie tylko wtedy, gdy potencjalni użytkownicy mogą znaleźć informacje wystarczające do ich wykonania. Celem tych specyfikacji i standardów jest określenie zestawu usług wspierających opis i wykrywanie przedsiębiorstw, organizacji i innych dostawców usług internetowych; usługi sieciowe, które udostępniają; oraz interfejsy techniczne, których można używać w celu uzyskania dostępu do tych usług.
UDDI 3.0
WSDL 1.1 (uwaga)
WSDL 1.2 (wersja robocza)
WSDL 2.0 (grupa robocza)
Bezpieczeństwo
Korzystając z tych specyfikacji zabezpieczeń, aplikacje mogą angażować się w bezpieczną komunikację zaprojektowaną do współpracy z ogólną strukturą usług internetowych.
Bezpieczeństwo usług internetowych 1.0
Security Assertion Markup Language (SAML)
Zarządzanie
Zarządzanie usługami sieciowymi jest zdefiniowane jako zestaw możliwości wykrywania istnienia, dostępności, kondycji, wydajności, użycia, a także kontroli i konfiguracji usługi sieciowej w architekturze usług sieci Web. Ponieważ usługi internetowe stają się wszechobecne i mają kluczowe znaczenie dla operacji biznesowych, zarządzanie nimi i ich wdrażanie jest niezbędne dla powodzenia operacji biznesowych.
Zarządzanie rozproszone w usługach sieci Web
W tym samouczku nauczyłeś się korzystać z usług internetowych. Jednak usługa internetowa zawiera również komponenty, takie jak WSDL, UDDI i SOAP, które przyczyniają się do jej uaktywnienia. Następnym krokiem jest nauczenie się WSDL, UDDI i SOAP.
WSDL
WSDL to oparty na XML język opisujący usługi sieciowe i sposób uzyskiwania do nich dostępu.
WSDL opisuje usługę WWW, wraz z formatem komunikatu i szczegółami protokołu dla usługi WWW.
Aby dowiedzieć się więcej o WSDL, odwiedź nasz samouczek dotyczący WSDL .
UDDI
UDDI to oparty na języku XML standard opisywania, publikowania i znajdowania usług internetowych.
Aby dowiedzieć się więcej o UDDI, odwiedź nasz samouczek dotyczący UDDI .
MYDŁO
SOAP to prosty protokół oparty na języku XML, który umożliwia aplikacjom wymianę informacji za pośrednictwem protokołu HTTP.
Aby dowiedzieć się więcej o SOAP, odwiedź nasz samouczek dotyczący protokołu SOAP .