Czym jest inteligentna usługa internetowa. Co to jest usługa internetowa. Ile jest różnych rodzajów usług internetowych
Serwis internetowy, serwis internetowy (ang. web service) – system oprogramowania identyfikowany przez adres internetowy ze znormalizowanymi interfejsami.
Usługi sieciowe mogą komunikować się ze sobą oraz z aplikacjami innych firm za pośrednictwem wiadomości opartych na określonych protokołach =
- XML-RPC
- itp.
Usługa sieciowa to jednostka modułowości w przypadku korzystania z architektury aplikacji zorientowanej na usługi.
W życiu codziennym usługi sieciowe nazywane są usługami świadczonymi w Internecie.
W tym użyciu termin musi zostać wyjaśniony., czy to wyszukiwanie, poczta internetowa, przechowywanie dokumentów, plików, zakładek itp.
Z tych usług internetowych można korzystać niezależnie od tego, gdzie uzyskujesz dostęp do Internetu, komputera lub przeglądarki.
Architektura
Jak pokazano na rysunku, istnieją trzy instancje, które współdziałają w ramach usługi sieciowej. Przetłumaczmy ich nazwy jako klient, wykonawca i katalog (zleceniodawca usługi, dostawca usług i broker usług).
Po opracowaniu usługi dostawca rejestruje ją w katalogu, w którym potencjalni klienci mogą ją znaleźć. Klient, po znalezieniu odpowiedniej usługi w katalogu, importuje stamtąd swoją specyfikację WSDL i zgodnie z nią rozwija własną usługę. oprogramowanie. WSDL opisuje format próśb i odpowiedzi, które są wymieniane między klientem a wykonawcą w trakcie pracy.. W celu zapewnienia interoperacyjności stosuje się następujące normy:
- Rozszerzalny język znaczników do przechowywania i przekazywania danych strukturalnych;
- protokół przesyłania wiadomości oparty na XML;
- : język opisu zewnętrznego interfejsu usług internetowych oparty na XML;
- Uniwersalny interfejs do rozpoznawania, opisu i integracji (Universal Discovery, Description and Integration).
Katalog usług internetowych i informacje o firmach, które udostępniają usługi sieciowe publicznie lub określonym firmom. Chociaż UDDI istnieje jednak tylko w małych sieciach własnościowych i nie znalazło jeszcze szerokiej dystrybucji w otwartym Internecie.
Metody rozwoju
Istnieją narzędzia do automatyzacji tworzenia usług internetowych, które oddzielają na dwie główne grupy.
Przy opracowywaniu od dołu do góry najpierw pisane są klasy implementujące, a od nich kod źródłowy Generowane są pliki WSDL dokumentujące usługę. Wadą tej metody jest podatność klas Java na częste zmiany. Podejście odgórne najpierw przygotowuje WSDL i generuje szkielet klasy Java, która implementuje z niego usługę. Ta ścieżka jest uważana za trudniejszą, ale prowadzi do czystszych i lepiej chronionych rozwiązań. Dopóki nie zmienia się format komunikatów wymienianych między klientem a wykonawcą, zmiany w każdym z nich nie zakłócają interakcji. Ta technika jest czasami określana jako „najpierw umowa”, ponieważ punktem wyjścia jest WSDL („umowa” między klientem a wykonawcą).
Zalety
- Usługi internetowe zapewniają interakcja systemy oprogramowania niezależnie od platformy. Na przykład klient Windows-C# może komunikować się z serwerem Java działającym w systemie Linux.
- Usługi sieciowe oparte są na otwartych standardach i protokołach. Poprzez użycie XML osiągnięto łatwość tworzenia i debugowania usług internetowych.
- Korzystanie z protokołu internetowego zapewnia Interakcja HTTP systemów oprogramowania przez zaporę sieciową. Jest to znacząca przewaga nad technologiami takimi jak CORBA, DCOM czy Java RMI. Z drugiej strony usługi internetowe nie jest ściśle powiązany z HTTP - można użyć innych protokołów.
Wady
- Mniejsza wydajność i większy ruch w sieci w porównaniu do technologii RMI, CORBA, DCOM ze względu na wykorzystanie wiadomości tekstowych XML. Jednak niektóre serwery internetowe można skonfigurować tak, aby kompresowały ruch sieciowy.
- Aspekty bezpieczeństwa. Odpowiedzialne usługi sieciowe powinny używać szyfrowania, prawdopodobnie wymagającego uwierzytelnienia użytkownika. To, czy protokół HTTPS jest wystarczający, czy preferowane są rozwiązania, takie jak podpis XML, szyfrowanie XML lub SAML, należy do dewelopera.
Przykłady
Interakcja między liniami lotniczymi a biurami podróży. Ci pierwsi dostarczają przydatnych informacji za pośrednictwem serwisów internetowych, z których drudzy szukają najlepszych ofert dla swoich klientów.
Google w latach 2002-2009 dostarczał usługę sieciową, która umożliwiała klientom wyszukiwanie w Internecie niezbędnych informacji w taki sam sposób, jak robią to zwykli użytkownicy. Pod względem wygody jest to nieporównywalne na przykład z automatycznym analizowaniem tekstu HTML stron Google.
Amazon.com posiada serwis internetowy świadczący różne usługi internetowe (coś „jako usługa” – przetwarzanie w chmurze)
Tytuł tematu to naprawdę pytanie, ponieważ Sama nie wiem co to jest i po raz pierwszy spróbuję z tym pracować w ramach tego artykułu. Jedyne, co mogę zagwarantować, to to, że poniższy kod zadziała, jednak moje frazy będą tylko przypuszczeniami i domysłami na temat tego, jak ja to wszystko rozumiem. Więc chodźmy...
Wstęp
Musimy zacząć od tego, do czego została stworzona koncepcja usług internetowych. Zanim pojawiła się ta koncepcja, na świecie istniały już technologie, które pozwalały aplikacjom na interakcję na odległość, gdzie jeden program mógł wywołać jakąś metodę w innym programie, który można następnie uruchomić na komputerze znajdującym się w innym mieście, a nawet kraju. Wszystko to w skrócie RPC (Remote Procedure Calling - zdalne wywołanie procedury). Przykładami są technologie CORBA, a dla Javy - RMI (Remote Method Invoking - zdalne wywoływanie metod). I wszystko wydaje się w nich dobrze, szczególnie w CORBA, bo można z nim pracować w dowolnym języku programowania, ale czegoś jeszcze brakowało. Uważam, że wadą CORBA jest to, że działa ona samodzielnie protokoły sieciowe zamiast zwykłego HTTP, który przejdzie przez dowolną zaporę. Ideą serwisu internetowego było stworzenie takiego RPC, który byłby wpychany do pakietów HTTP. Tak rozpoczął się rozwój standardu. Jakie są podstawowe pojęcia tego standardu:- MYDŁO. Przed wywołaniem procedury zdalnej należy opisać to wywołanie w pliku XML w formacie SOAP. SOAP to tylko jeden z wielu znaczników XML używanych w usługach internetowych. Wszystko, co chcemy gdzieś wysłać przez HTTP, najpierw zamieniamy w opis XML SOAP, a następnie umieszczamy w pakiecie HTTP i wysyłamy do innego komputera w sieci przez TCP/IP.
- WSDL. Istnieje usługa internetowa, tj. program, którego metody można wywoływać zdalnie. Ale standard wymaga, aby do tego programu był dołączony opis, który mówi, że „tak, nie pomyliłeś się - to tak naprawdę usługa internetowa i możesz z niej wywoływać takie a takie metody”. Ten opis jest reprezentowany przez inny plik XML, który ma inny format, a mianowicie WSDL. Tych. WSDL to tylko plik XML opisujący usługę sieciową i nic więcej.
Ogólne podejście
Usługi internetowe zawsze mają klienta i serwer. Serwer jest naszą usługą sieciową i jest czasami nazywany punktem końcowym (takim jak punkt końcowy, do którego docierają komunikaty SOAP od klienta). Musimy wykonać następujące czynności:- Opisz interfejs naszego serwisu internetowego
- Zaimplementuj ten interfejs
- Uruchom nasz serwis internetowy
- Napisz do klienta i zadzwoń zdalnie pożądana metoda Serwis internetowy
serwer
Zacznijmy IDEA i stwórzmy nowy projekt Utwórz nowy projekt. Podaj nazwę helloweserwis i naciśnij przycisk Następny, a następnie przycisk koniec. W folderze src utwórz pakiet pl.javarush.ws. W tym pakiecie stworzymy interfejs HelloWebService: package ru. jawarush. ws; // to są adnotacje, czyli sposób na zaznaczenie naszych zajęć i metod, // w odniesieniu do technologii usług internetowych importować javax. św. WebMetoda; importować javax. św. Serwis internetowy; importować javax. św. mydło. SOAPWiązanie; // mówimy, że nasz interfejs będzie działał jako usługa internetowa@Serwis internetowy // powiedz, że usługa sieciowa będzie używana do wywoływania metod@SOAPBinding(style = SOAPBinding.Style.RPC) interfejs publiczny HelloWebService( // powiedz, że ta metoda może być wywołana zdalnie@WebMethod public String getHelloString(String name) ; ) W tym kodzie klasy WebService i WebMethod są tak zwanymi adnotacjami i nie robią nic poza oznaczeniem naszego interfejsu i jego metody jako usługi sieciowej. To samo dotyczy klasy SOAPBinding. Jedyna różnica polega na tym, że SOAPBinding to adnotacja z parametrami. W tym przypadku parametr style jest używany z wartością wskazującą, że usługa sieciowa będzie działać nie poprzez komunikaty dokumentów, ale jako klasyczne RPC, tj. wywołać metodę. Zaimplementujmy naszą logikę interfejsu i utwórzmy klasę HelloWebServiceImpl w naszym pakiecie. Przy okazji zaznaczam, że klasa kończąca się na Impl to konwencja w Javie, zgodnie z którą implementacja interfejsów jest tak oznaczona (Impl - od słowa implementacja, czyli implementacja). Nie jest to wymagane i możesz dowolnie nazwać klasę, ale wymagają tego dobre maniery: package ru. jawarush. ws; // taka sama adnotacja jak przy opisie interfejsu, importować javax. św. Serwis internetowy; // ale tutaj jest używany z parametrem endpointInterface, // wskazując pełne imię i nazwisko klasa interfejsu naszego serwisu internetowego@WebService(endpointInterface= "pl.javarush.ws.HelloWebService") public class HelloWebServiceImpl implementuje HelloWebService ( @Override public String getHelloString (String name) ( // po prostu zwróć pozdrowienia return "Cześć, " + imię + "!" ; ) ) Uruchommy nasz serwis WWW jako samodzielny serwer, czyli bez udziału jakichkolwiek serwerów Tomcat i aplikacji (to temat na osobną dyskusję). W tym celu w strukturze projektu w folderze src stwórzmy pakiet ru.javarush.endpoint , a w nim utworzymy klasę HelloWebServicePublisher z metodą main: package ru. jawarush. punkt końcowy; // klasa do uruchomienia serwera WWW z usługami sieciowymi importować javax. xml. ws. punkt końcowy; // klasa naszego serwisu internetowego import pl. jawarush. ws. hellowebserviceimpl; public class HelloWebServicePublisher( public static void main(String... args)( // uruchom serwer WWW na porcie 1986 // i pod adresem podanym w pierwszym argumencie, // uruchom usługę sieciową przekazaną w drugim argumencie punkt końcowy. publikować( „http://localhost:1986/wss/witaj”, nowy HelloWebServiceImpl () ); ) ) Teraz uruchom tę klasę, klikając Shift+F10. Nic nie pojawi się w konsoli, ale serwer działa. Możesz to sprawdzić, wpisując w przeglądarce http://localhost:1986/wss/hello?wsdl. Otwarta strona z jednej strony udowadnia, że mamy serwer WWW (http://) działający na porcie 1986 na naszym komputerze (localhost), az drugiej strony pokazuje opis WSDL naszego serwisu WWW. Jeśli zatrzymasz aplikację, opis stanie się niedostępny, podobnie jak sama usługa internetowa, więc nie zrobimy tego, ale przejdziemy do pisania klienta.Klient
W folderze projektu src stwórzmy pakiet ru.javarush.client , a w nim klasę HelloWebServiceClient z główną metodą: package ru. jawarush. klient; // potrzebne, aby pobrać opis wsdl i przejść przez niego // dotrzyj do samego serwisu internetowego importuj javę. internet. adres URL; // taki wyjątek wystąpi podczas pracy z obiektem URL importuj javę. internet. Nieprawidłowy wyjątek adresu URL; // klasy do parsowania xml z opisem wsdl // i sięgnij po service tag importować javax. xml. przestrzeń nazw. Qnazwa; importować javax. xml. ws. usługa; // interfejs naszego serwisu internetowego (potrzebujemy więcej) import pl. jawarush. ws. helloserwis; public class HelloWebServiceClient( public static void main(String args) wyrzuca MalformedURLException( // utwórz link do opisu wsdl adres URL= nowy adres URL ( „http://localhost:1986/wss/hello?wsdl”) ; // Patrzymy na parametry następnego konstruktora w pierwszym tagu opisu WSDL - definicje // spójrz na pierwszy argument w atrybucie targetNamespace // Drugi argument zajrzyj do atrybutu nazwy QName qname = new QName ("http://ws.javarush.ru/" , "HelloWebServiceImplService" ); // Teraz możemy dotrzeć do service tagu w opisie wsdl, Serwis serwisowy = Serwis. utwórz (url, qname) ; // a następnie do zagnieżdżonego w nim tagu portu, aby // uzyskaj referencję do zdalnego od nas obiektu usługi sieciowej HelloWebService witam = usługa. getPort(HelloWebService.class) ; // Hurra! Teraz możesz wywołać metodę zdalną System. na zewnątrz. println(witaj. getHelloString("JavaRush" ) ) ; ) ) Podałem maksimum komentarzy do kodu w listingu. Nie mam nic do dodania, więc uruchom (Shift + F10). Powinniśmy zobaczyć w konsoli tekst: Hello, JavaRush! Jeśli go nie widziałeś, prawdopodobnie zapomniałeś uruchomić usługę sieciową.Wniosek
Ten wątek przedstawiony krótka dygresja do usług internetowych. Po raz kolejny wiele z tego, co napisałem, to moje przypuszczenia dotyczące tego, jak to działa, dlatego nie należy mi ufać zbytnio. Byłbym wdzięczny, gdyby kompetentni ludzie Poprawię mnie, bo wtedy się czegoś nauczę. UPD.Przeanalizowaliśmy Pojęcia ogólne wykorzystanie mechanizmu « Sieć-usługi". Odświeżmy trochę wiedzy.
Usługi sieciowe służą do wymiany danych między serwerem a klientem; format XML służy do „pakowania” danych w celu wzajemnego zrozumienia między obydwoma uczestnikami komunikacji.
ROZDZIAŁI
PRZYKŁAD WDROŻENIASIEĆ-SERWIS W SYSTEMIE „1C: PRZEDSIĘBIORSTWO”
ZADANIE: Niezbędne jest stworzenie serwisu internetowego, dzięki któremu klienci mogą określić wszystkie niezbędne informacje dla swoich aplikacji.
Zadanie ma charakter demonstracyjny i służy jedynie jako przykład do zrozumienia i poznania mechanizmusieć-usługi.
ROZWIĄZANIE:
Krok 1. Stwórzmy nowy baza informacji bez konfiguracji, aby opracować nową konfigurację.
Krok 2 Dodajmy do konfiguracji kilka nowych obiektów
Katalog „Klienci”;
Dokument „Wniosek”;
Wyliczenie „Statusy wniosków”.
Krok 3 Stwórzmy nowy pakiet XDTO.
Dlaczego i dlaczego tworzymy pakiet XDTO? Więcej o korzystaniu z mechanizmu XDTO można przeczytać w „Rozdziale 16. Podręcznik programisty” oraz.
Zwróćmy pokrótce tylko, że mechanizm XDTO jest uniwersalny sposób reprezentacje danych do interakcji z różnymi zewnętrznymi źródłami danych i systemami oprogramowania.
W naszym przypadku tworzony jest pakiet XDTO w celu opisania wartości zwracanej przez usługę sieciową.
Rozwiń gałąź „Ogólne” → „Pakiety XDTO” → Dodaj…
Podaj nazwę pakietu XDTO " DokumentyDane” i jego przestrzeń nazw http://localhost/request lub http://192.168.1.76/request (dla ułatwienia zrozumienia i procesu uczenia się wskazujemy lokalny adres IP komputera, na którym zainstalowany jest serwer WWW (obsługiwane serwery WWW: IIS lub Apache)). Każda usługa sieci Web może być jednoznacznie identyfikowana przez jej nazwę i identyfikator URI przestrzeni nazw, do której należy.
Nasz pakiet zawiera dwa rodzaje obiektów XDTO:
1) Klient- do przeniesienia danych elementu katalogu "Klienci".
- Nazwa ;
2) dokument- do przeniesienia danych z dokumentu „Wniosek”
Ten typ obiektu XDTO będzie zawierał następujące właściwości:
- Klient- Typ klienta z przestrzeni nazw http://192.168.1.76/request; jest referencją do obiektu XDTO, który zdefiniowaliśmy powyżej;
- Status- typ ciągu z przestrzeni nazw http://www.w3.org/2001/XMLSchema;
- Liczba- typ ciągu z przestrzeni nazw http://www.w3.org/2001/XMLSchema.
Krok 4 Dodaj nową usługę sieciową do konfiguracji
Rozwiń gałąź „Ogólne” → „Usługi internetowe” → Dodaj ...
W przypadku usługi sieci Web określ następujące wartości właściwości:
Nazwa - DokumentyDane
Przestrzenie nazw URI — http://192.168.1.76/zapytanie
Pakiety XDTO - DokumentyDanelubhttp://192.168.1.76/zapytanie
Nazwa pliku publikacji — request.1cws
Krok 5 Dla utworzonego serwisu internetowego definiujemy operację „ otrzymać dane»
Wartości właściwości operacji:
Typ zwrotu - Dokument (http://192.168.1.76/wniosek)
Prawdopodobnie pusta wartość - Prawdziwe
Nazwa procedury - otrzymać dane.
Krok 6 Operacja otrzymać dane zdefiniuj parametr Klient za pomocą następujące wartości nieruchomości:
Typ wartości - typ strunowy z przestrzeni nazw http://www.w3.org/2001/XMLSchema;
Kierunek transferu - Wejście.
Krok 7 Otwórzmy moduł utworzonej usługi sieciowej i umieśćmy w nim funkcję Get(), która zostanie wykonana w momencie wywołania tej usługi sieciowej.
Function GetData(Customer) // Pobierz typy obiektów XDTO ClientType = FactoryXDTO.Type("http://192.168.1.76/request", "Customer"); RequestType = FactoryXDTO.Type("http://192.168.1.76/request", "Dokument"); // Pobierz klienta ClientReference = Directorys.Clients.FindByName(Customer); Jeśli nie wartośćFilled(ClientReference) to zwróć niezdefiniowane; EndIf; Żądanie = Nowe żądanie; Request.Text = "SELECT FIRST 1 | Ticket.Reference, | REPRESENTATION(Ticket.Status) AS Status, | Ticket.Number |FROM | Document.Ticket AS Ticket |WHERE | Ticket.Client = &Klient"; Request.SetParameter("Klient", Referencja klienta); QueryResult = Query.Execute(); Jeśli QueryResult.Empty() to zwróć niezdefiniowane; EndIf; Wybór = QueryResult.Select(); Wybór.Dalej(); Dokument = Selection.Reference.GetObject(); // Utwórz obiekt biletu XDTO Ticket = FactoryXDTO.Create(TicketType); Numer aplikacji = Wybór. Numer; Klient = FabrykaXDTO.Utwórz(TypKlienta); Klient.Nazwa = KlientReferencja.Nazwa; Aplikacja.Klient = Klient; Aplikacja.Status = Wybór.Status; // Żądanie zwrotu Żądanie zwrotu; Funkcje końcowe
Krok 8 Opublikujmy utworzoną usługę sieciową na serwerze sieciowym.
Pozycja menu konfiguratora: "Administracja" → "Publikowanie na serwerze WWW".
Na karcie „Usługi internetowe” ustaw flagę „Publikuj usługi internetowe”, a także zaznacz pole obok naszej nowej usługi sieciowej.
ROZDZIAŁII
PRZYKŁAD ODNIESIENIA DOSIEĆ- 1C: USŁUGA DLA PRZEDSIĘBIORSTW Z APLIKACJI STRON TRZECICH
Głównym celem mechanizmu usług internetowych w 1C:Enterprise jest przesyłanie niezbędnych danych do aplikacji innych firm.
Rozważmy przykład tworzenia aplikacji w Delphi wywołującej nasz serwis internetowy z pierwszej części tego artykułu.
Krok 1. Stwórzmy nowy projekt i umieśćmy kilka kontrolek na formularzu
Pole tekstowe - służy do wyświetlania informacji otrzymanych z serwisu internetowego;
Dwa przyciski - czyszczenie pola tekstowego i dostęp do serwisu WWW;
Pole wejściowe to parametr przekazywany do usługi sieciowej.
Krok 2 Importowanie pliku WSDL
W rezultacie otrzymujemy nowy moduł żądanie(zdefiniowaliśmy taką nazwę bezpośrednio w 1C). Ten moduł zawiera wszystkie niezbędne informacje dotyczące serwisu internetowego.
Krok 3 Napisz obsługę połączeń usługi sieciowej
Zmienna DocumentDataPortType jest już zdefiniowana w module żądanie
Krok 4 Uruchom aplikację i sprawdź.
ROZDZIAŁIII
PRZYKŁAD ODNIESIENIA DOSIEĆ-SERWIS W SYSTEMIE „1C: PRZEDSIĘBIORSTWO”
Krok 1. Stwórzmy nowy przetwarzanie zewnętrzne o nazwie „Usługa_WEB”
Krok 2 Do przetwarzania definiujemy nowy formularz
Krok 3 Podaj kilka szczegółów formularza
Klient - wpisz "Ciąg"
ClientReturn - wpisz "String"
NumberReturn - wpisz "String"
StatusReturn - typ „String”.
Szczegóły wyświetlimy na formularzu.
Krok 4 Dodajmy polecenie formularza " Aby uzyskać dane»
Określ obsługę poleceń
Procedura &OnClient GetData(Command) GetDataOnServer(Client); Koniec procedury Procedura GetDataOnServer(Client) // Utwórz serwer proxy WS na podstawie łącza i wykonaj operację Get() Definition = New WSDefinitions("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl") ; Proxy = New WSProxy (Definicja, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); RequestData = Proxy.GetData(klient); If OrderData = Undefined Then ClientReturn = "Undefined"; StatusReturn = "Nieokreślony"; ReturnNumber = "Niezdefiniowany"; Zwrócić; EndIf; CustomerReturn = ŻądanieDane.Klient.Nazwa; StatusReturn = RequestData.Status; NumerZwracany = DaneŻądania.Numer; Koniec procedury
1C:Enterprise może korzystać z usług internetowych dostarczanych przez innych dostawców na dwa sposoby:
Używając statyczny linki utworzone w drzewie konfiguracyjnym;
"plus": wysoka prędkość pracy;
"minus": ponowne zaimportowanie opisu WSDL za pomocą konfiguratora i zapisanie zmienionej konfiguracji.
Używając dynamiczny linki tworzone za pomocą wbudowanego języka
(odpowiednio „minusy” statycznych dla dynamicznych to „plusy”)
ROZDZIAŁIV
DEBUGOWANIE USŁUG INTERNETOWYCH W SYSTEMIE 1C:ENTERPRISE
Aby uzyskać lokalną usługę internetową, potrzebujesz:
Krok 1. Załóż klienta, na którym uruchamiany jest system 1C webservicecfg.xml z następującą treścią
Krok 2 Do pliku domyślna. vrd publikuj konfigurację dodaj wiersz
Krok 3 W konfiguratorze wybierz pozycję menu
„Debugowanie” → „Połączenie” → „ Połączenie automatyczne» → «Usługi internetowe na serwerze»
Krok 4 Kliknij przycisk „OK”
W przypadku wersji serwerowej musisz również uruchomić serwer 1c w trybie debugowania za pomocą klawisza /odpluskwić
Praktyczne wykorzystanie usług internetowych w IBM Lotus Domino 7
Czym są usługi internetowe i dlaczego są ważne?
Seria treści:
Ta treść jest częścią # serii artykułów: Praktyczne wykorzystanie usług internetowych w IBM Lotus Domino 7
https://www..jsp?series_title_by=Praktyczne+używanie+usług internetowych+w+ibm+lotus+domino+7
Czekajcie na nowe artykuły z tej serii.
Być może natknąłeś się na odniesienia do usług internetowych w artykułach technicznych, opisach produktów, a nawet rozmowach ze współpracownikami. Najwyraźniej ktoś potrzebuje usług sieci Web i jest to ważne, jednak po zapoznaniu się z definicjami takimi jak „gramatyka XML do definiowania zestawów punktów końcowych do przesyłania wiadomości” zdecydowałeś, że nie należy dotykać tak skomplikowanych rzeczy.
Na szczęście usługi internetowe można wyjaśnić w sposób zrozumiały dla wszystkich, bez wnikania w szczegóły, jak to wszystko działa. Powinieneś spróbować zrozumieć, czym są usługi internetowe, ponieważ zakres ich aplikacji (i powiązanych z nimi architektury zorientowanej na usługi, SOA) w świecie IT stale się rozszerza.
Serwisy internetowe można traktować jako samochód: nie musisz wiedzieć na poziomie technicznym, jak działają tłoki, wałki rozrządu i wtryskiwacze paliwa - możesz kupić samochód, jeździć nim i rozmawiać o samochodach z przyjaciółmi (chyba, że oczywiście są mechanikami) . Tak samo jest z usługami internetowymi, jako informatyk musisz tylko zrozumieć, czym one są i jak działają, aby zrozumieć, dlaczego ich potrzebujesz.
Obecnie znacznie łatwiej jest pracować z usługami sieciowymi bez dotykania ukrytych technologii niskiego poziomu, ponieważ dostawcy oprogramowania i społeczność open source zrobili wiele w ciągu ostatnich kilku lat, aby oddzielić interfejs usług sieci Web od zadań. niski poziom. Umożliwi to pracę poprzez proste łączenie komponentów bez konieczności zagłębiania się w długą dokumentację dotyczącą formatowania wiadomości XML.
Ta seria artykułów pomoże programistom Domino zrozumieć i korzystać z usług WWW w IBM Lotus Domino V7.0. Ten artykuł wprowadzający zawiera wystarczająco dużo przydatna informacja i jest przydatny dla każdego, kto chce zrozumieć, czym są usługi sieci Web. Technologie zastosowane w Lotus Domino V7.0 ułatwiają programistom tworzenie i korzystanie z usług sieci Web. Omówimy to szczegółowo później.
Najpierw zrozummy, czym jest usługa sieciowa.
Co to jest usługa internetowa?
Mówiąc najprościej, usługa internetowa pozwala programy komputerowe komunikować się w ustandaryzowany sposób.
Komunikacja między trzema lub więcej maszynami
Chociaż przykłady opierają się na transakcjach w jednym lub dwóch komputerach, usługi sieci Web mogą być również używane do komunikacji między wieloma komputerami. Na przykład transakcje mogą być przekazywane lub przechowywane przez urządzenie pośredniczące, a wywołanie usługi sieci Web na jednym serwerze może wywołać wywołanie usługi na innym.
Na końcu tego artykułu, kiedy przyjrzymy się prawdziwej architekturze SOA, omówimy interakcję usług sieci Web na wielu komputerach, ponieważ tak zawsze działa SOA.
Usługa sieci Web jest elementem abstrakcyjnym, tak jak abstrakcyjna jest koncepcja ludzkiej konwersacji. W dialogu biorą udział dwie lub więcej osób mówiących językiem, który znają. Ich język definiuje słowa, których używają i jak te słowa tworzą zdania. Zwykle dialog ma strukturę pytanie-odpowiedź, gdy ktoś zadaje pytanie lub wypowiada się, a rozmówca na nie odpowiada. Ludzie mogą być w pobliżu, rozmawiać przez telefon, wysyłać do siebie wiadomości pocztą lub czatować.
W każdym razie dialog ma złożoną strukturę i może odbywać się na różne sposoby, w zależności od liczby komunikujących się osób, języka komunikacji używanego w technologiach komunikacyjnych, oczywiście, jeśli w ogóle są używane.
Struktura komunikacji z wykorzystaniem usług internetowych zawiera wiele elementów, o których poruszymy w tym artykule. Jednak idea pozostaje taka sama, jak w przypadku zwykłego dialogu – programy komunikują się za pomocą znanego im języka, czasami przez sieć. Programy mogą znajdować się na tym samym komputerze lub być hostowane na różnych maszynach w różnych częściach świata, połączonych przez Internet za pomocą routerów i serwerów. Dobrą wiadomością jest to, że programy i komputery nie muszą być takie same. Dzięki usługom internetowym dwie osoby mogą się komunikować Programy Microsoft.NET na jednym laptopie i Program Java na kanadyjskim serwerze iSeries z systemem C++ na komputerze z systemem Linux z Chin.
Komunikacja usług internetowych wykorzystuje następujące standardowe technologie:
- XML. Język (format danych) używany przez składniki usług sieci Web.
- Protokół SOAP. Komunikaty XML wymieniane między programami
- Biblioteka opisów usług sieci Web (WSDL). Plik XML definiujący format wiadomości SOAP i sposób ich wysyłania
Do komunikacji między usługami sieci Web można również użyć standardowej technologii znanej jako Universal Description, Discovery and Integration (UDDI). Omówimy to w dalszej części artykułu, ale ponieważ UDDI jest opcjonalne, wiele usług sieci Web z niego nie korzysta.
Trochę terminologii: publikowanie i korzystanie z usług internetowych
Zanim zaczniemy wyjaśniać nasze terminy, przyjrzyjmy się terminologii związanej z usługami sieciowymi.
Kiedy mówimy o publikowaniu usługi sieciowej, mamy na myśli program, który publikuje plik WSDL i umożliwia innym programom korzystanie z odpowiedniej usługi. Programy, które publikują usługi sieci Web, nazywane są dostawcami.
Kiedy mówimy o korzystaniu z usługi sieciowej, mamy na myśli program, który wywołuje usługę sieciową na innym komputerze. Użytkownicy usług internetowych nazywani są klientami.
XML: język ojczysty
XML jest używany do komunikacji między komponentami usługi sieci Web. Wiadomości przesyłane pomiędzy aplikacjami, a także pliki definiujące usługę sieciową są w formacie XML. Rysunek 1 przedstawia strukturę prosty plik XML.
Rysunek 1. Podstawowa struktura XML
Jak widać, niektóre informacje w pliku (takie jak imię, nazwisko) są otoczone znacznikami ujętymi w trójkątne nawiasy. Imię Jan jest pokazane jako
Istnieje wiele korzyści z pisania usług WWW w XML, w tym:
- Struktura i gramatyka XML jest podobna do innych języków programowania, więc nie ma potrzeby, aby programy współpracujące z usługami sieci Web przeprowadzały analizę strukturalną. Pliki XML bezpośrednio.
- Pliki XML są plikami tekstowymi i mogą być odczytane przez człowieka (innymi słowy, jeśli znasz język XML, możesz otworzyć plik XML w Edytor tekstu i zrozumieć jego treść). Może to pomóc w debugowaniu.
- XML pozwala na użycie dowolnego standardowego kodowania w wiadomościach, dzięki czemu możesz pisać wiadomości w języku angielskim, rosyjskim lub japońskim.
- XML pozwala na użycie tak zwanej przestrzeni nazw, w której można wstępnie zdefiniować żądaną strukturę elementu pliku o określonej nazwie. Na przykład można zdefiniować element Price, który zawsze musi być liczbą zmiennoprzecinkową, lub PersonName, która zawiera dwa podelementy ciągu, FirstName i LastName.
Ponadto, jeśli to konieczne, przestrzenie nazw pozwalają wielu elementom o tej samej nazwie mieć różne definicje. Na przykład element StockPrice w jednej przestrzeni nazw może zawierać symbol giełdowy i cenę, podczas gdy w innej przestrzeni nazw może składać się z symbolu giełdowego, ceny, dziennego minimum i maksimum oraz 12-miesięcznego maksimum.
Jedyne wady XML, jeśli rzeczywiście są wadami, to:
- Język XML jest sztywny, więc każde nieprawidłowe formatowanie wiadomości XML spowoduje, że analiza całej wiadomości zakończy się niepowodzeniem (nawet jeśli problem jest łatwy do zinterpretowania lub przeoczenia). Jeśli jednak używasz standardowej biblioteki do generowania plików XML (co robisz podczas tworzenia usług sieci Web), sama biblioteka sprawdza poprawność formatowania.
- Wiadomość XML jest przechowywana w normalnym plik tekstowy, a zatem zajmuje więcej miejsca niż jego odpowiednik w innym formacie (takim jak format podzielony, binarny lub „własny”).
Ale te kwestie są nieistotne w porównaniu z zaletami formatu XML.
SOAP: wysłane wiadomości
Wiesz, że komunikacja usług internetowych odbywa się w Format XML To jednak rozwiązuje tylko połowę problemu. Aplikacje mogą analizować wiadomość, ale skąd wiedzą, co zrobić z przeanalizowanym wynikiem?
Instrukcja opisująca reguły formatowania komunikatów XML dla usług sieci Web nosi nazwę SOAP. Definiuje strukturę wiadomości, dzięki czemu programy wiedzą, jak wysyłać i interpretować dane. Podstawową strukturę komunikatu SOAP pokazano na rysunku 2.
Rysunek 2. Podstawowa struktura komunikatu SOAP
W XML wyglądałoby to mniej więcej tak:
W przypadku podstawowym masz pakiet SOAP zawierający treść SOAP i treść zawierającą dane do przesłania. Czasami istnieje również opcjonalny nagłówek SOAP (wewnątrz pakietu przed treścią) zawierający dodatkowe informacje.
Instrukcje dotyczące mydła
Chociaż format SOAP jest standardem i zawiera te same instrukcje, należy pamiętać, że różni producenci mogą implementować te instrukcje w nieco odmienny sposób. Na przykład struktura przestrzeni nazw i XML w komunikacie SOAP generowanym przez Apache Axis może bardzo różnić się od struktury generowanej przez Microsoft .NET. Jednak dobrze napisany klient lub serwer może przetwarzać każdy komunikat, który jest dobrze napisany zgodnie z instrukcjami SOAP.
Ponadto istnieją pewne istotne różnice między instrukcjami WSDL 1.1 i WSDL 2.0. Chociaż instrukcja 2.0 jest wciąż w końcowej fazie pisania tego tekstu, wkrótce zacznie zastępować wersję 1.1.
jeśli nigdy wcześniej nie natknąłeś się na plik WSDL i próbujesz go otworzyć i przeczytać, trudno będzie Ci wyodrębnić stamtąd wszystkie informacje, ponieważ struktura takiego pliku może być dość złożona. Wszystkie informacje o metodzie (nazwa, parametry, protokół itp.) są rozproszone w różnych sekcjach pliku i muszą być zebrane przez aplikację kliencką w celu skonstruowania komunikatu SOAP. Części pliku WSDL i sposób ich współdziałania nie zostaną opisane w tym artykule.
W tym momencie technologia znów przychodzi na ratunek. Jako programista nie musisz czytać, analizować i rozumieć zawartości pliku WSDL. Narzędzia uzyskają te informacje za Ciebie, więc musisz tylko dowiedzieć się, co wysłać do serwisu i gdzie umieścić wyniki. ty nie tylko możesz korzystaj z bibliotek i narzędzi, ale też na pewno będziesz. Istnieje wiele wyjątków, utrudnień i złożoności wszystkich składników usług sieci Web, dlatego należy się im przyjrzeć za pomocą Usługa sieciowa, a nie jej demontaż, po czym następuje szczegółowe badanie każdego komponentu.
Protokoły: jak wysyłane są wiadomości
Nie poruszyliśmy jeszcze pytania, w jaki sposób wszystkie te wiadomości są przesyłane przez SOAP?
Są one zazwyczaj przesyłane przez sieć (i/lub Internet) za pomocą protokołu HTTP, podobnie jak strony są przesyłane z serwera do przeglądarki. HTTP nie zawsze jest używany (jego głównym konkurentem jest SMTP, ale jest daleko w tyle). Protokół używany przez usługę WWW jest zdefiniowany w pliku WSDL.
Zazwyczaj w pliku WSDL protokół używany do wysyłania komunikatu SOAP jest zdefiniowany jako HTTP. Klient SOAP wysyła komunikaty zgodnie z określonym protokołem.
Inne warunki dotyczące usług internetowych, z którymi możesz się spotkać
Omówiliśmy już podstawowe terminy, ale możesz usłyszeć kilka innych, gdy mówisz o usługach sieci Web.
Słabe więzi
Programy korzystające z usług sieci Web są zwykle luźno powiązane z usługami, co oznacza, że usługi niezbędne do uruchomienia programu nie są z nimi bezpośrednio związane, podobnie jak program nie jest związany z usługami. Program może z łatwością korzystać z dowolnych usług, których potrzebuje, a oni czekają na telefon z programu - z dowolnego programu, który potrzebuje ich odpowiedzi.
Prawdziwym przykładem słabych więzi jest lunch z przyjaciółmi. Kilku znajomych w jakiś sposób zgadza się między sobą (osobiście, telefonicznie, poprzez e-mail itp.). Do restauracji każdy dostaje się sam, a po kolacji każdy płaci za własne jedzenie. Niezależnie od tego, jak przebiegł lunch, efekt końcowy jest taki sam - był to przyjazny lunch.
Ale prowadzenie samochodu to akcja z bliższymi połączeniami. Masz ustalony zestaw narzędzi, za pomocą których możesz osiągnąć z góry określone cele. Wychodząc z garażu włączasz bieg wsteczny i naciskasz na gaz. Skręcając w lewo, skręcasz kierownicą w lewo. Nie masz możliwości robienia tego samego na różne sposoby, ponieważ cały system jest bardzo precyzyjny i skoordynowany, a każdy z jego elementów jest połączony z innymi.
UDDI
UDDI to standard tworzenia katalogu usług internetowych dostarczanych przez dowolną liczbę programów. To trochę jak książka telefoniczna dla dostawców usług internetowych. Klienci mogą wyszukiwać potrzebne im informacje w rejestrze UDDI, a rejestr zwraca dane potrzebne do nawiązania połączenia z usługą.
Chociaż UDDI jest dość ważnym standardem definiowania usług internetowych, jego znaczenie jest znacznie pomniejszone przez fakt, że jest opcjonalnym elementem usług internetowych, a gdy ma się wybór, czy chce go używać, czy nie, wielu decyduje się go nie używać.
Większość zorganizowanych środowisk korporacyjnych z wieloma wewnętrznymi usługami sieci Web posiada rejestry UDDI. Wspaniale jest mieć korporacyjną witrynę UDDI, która zawiera informacje o usługach sieci Web dostępnych w Twojej firmie. Łącząc wszystkie usługi, UDDI umożliwia bezproblemową i bezproblemową zmianę dostawców. Jeśli klienci wyszukują usługi za pośrednictwem UDDI, wywołania SOAP są automatycznie wysyłane do nowego dostawcy.
Jednak ten składnik nie jest wymagany w architekturze usług sieci Web.
Bezpieczeństwo usług internetowych
Czytając o SOAP i WSDL można zauważyć, że temat bezpieczeństwa nie jest poruszany. W jaki sposób odbywa się uwierzytelnianie podczas wywoływania usług, jeśli dostawca pracuje z poufnymi informacjami? W końcu jasne jest, że nie wszystkie usługi sieciowe są dostępne dla ogółu społeczeństwa, prawda?
To ważne pytanie, na które nie jest łatwo jednoznacznie odpowiedzieć. Istnieją różne schematy, z których możesz skorzystać w zależności od sytuacji, na przykład:
- Czy wiadomości SOAP mogą być w postaci zwykłego tekstu, czy muszą być zaszyfrowane?
- Czy proste uwierzytelnianie loginem i hasłem wystarczy, czy powinno być silne i oparte na znacznikach?
- Jeśli używane są tokeny, czy muszą być podpisane i jaki jest prawidłowy sposób włączenia ich do komunikatu SOAP?
- Ale co, jeśli klient nie wysyła komunikatów SOAP bezpośrednio, ale przez jakąś strukturę pośrednią, taką jak kolejka komunikatów lub przez inną usługę sieci Web?
Ponadto wiadomości nie zawsze mogą korzystać z protokołu HTTP, więc nie można po prostu korzystać z zabezpieczeń usług sieci Web oprócz istniejących zabezpieczeń HTTP.
Istnieje kilka wytycznych dotyczących tych i innych aspektów bezpieczeństwa usług sieci Web: WS-Security, WS-Policy, WS-Trust i WS-Privacy. Niektórzy producenci oprogramowania i komitety pracują nad tymi zagadnieniami od kilku lat. Chociaż nie wszystkie implementacje usług sieci Web obsługują wszystkie instrukcje dotyczące zabezpieczeń, istniejące standardy zabezpieczeń zazwyczaj implementują co najmniej kilka podstawowych ścieżek zabezpieczeń.
Oprogramowanie pośredniczące i magistrala usług dla przedsiębiorstw
Istnieje inny, dość obszerny zestaw standardów dla usług sieci Web, połączony w jeden dość duży pakiet, powszechnie nazywany instrukcjami WS-*. Razem obejmują one wiele problemów projektowych, które pojawiają się podczas łączenia wielu usług sieci Web w jedno środowisko. Standardy WS-* dotyczą takich zagadnień jak:
- Bezpieczeństwo
- Niezawodność
- Wymiana wiadomości
- Transakcje
- Jakość usługi
Ta liczba standardów jest konieczna, ponieważ komunikacja między klientem usługi sieci Web a serwerem w środowisku produkcyjnym może być znacznie bardziej złożona niż proste żądanie/odpowiedź. Na przykład, jak upewnić się, że wiadomość dotrze do dostawcy iz powrotem do klienta? Co się stanie, jeśli żądanie SOAP składa się z wielu części? W jaki sposób zarządzasz procesami, w których usługi sieci Web uzyskują dostęp do innych usług sieci Web? Co się stanie, jeśli program wyśle sekwencję żądań z wymaganiami dotyczącymi czasu odpowiedzi?
Dla dużych dostawców oprogramowania praca z tymi standardami stwarza zarówno wyzwania, jak i możliwości. Kilku dostawców sprzedaje całe pakiety oprogramowania pośredniczącego usług sieci Web, często określane jako Enterprise Service Bus lub ESB, które obejmują wszystkie lub przynajmniej niektóre z powyższych zadań jednocześnie. Te ESB są również cenne, ponieważ mogą łączyć ze sobą wiele usług internetowych w tej samej organizacji i zapewniać ich funkcjonalność, rejestrować ich działania i przechowywać wiadomości w kolejkach.
architektura zorientowana na usługi
I wreszcie architektura zorientowana na usługi. W większości przypadków jest to po prostu połączenie wszystkich powyższych: luźno powiązanych usług internetowych od różnych dostawców, współdziałających zgodnie z przyjętymi standardami (być może z udziałem ESB) i łączonych przez różne programy, które pobierają dane z usług i wykorzystują je w różnych sposoby.
Ponieważ SOA jest architekturą oprogramowania, w jej budowanie jest dużo koordynacji i planowania. To nie tylko kilka połączonych usług; jest to organizacja, w jaki sposób usługi są zestawiane i publikowane, jakie narzędzia do zarządzania i oprogramowanie pośredniczące są używane oraz w jaki sposób usługi i cały system są monitorowane i zarządzane.
Jeśli spojrzysz bardziej globalnie, to SOA jest również rodzajem myślenia. Zmusza nas do myślenia nie o samodzielnych dużych programach, ale postrzeganiu wszystkiego jako możliwych komponentów, które można opublikować i wykorzystać w produkcji. Zamiast bogatych aplikacji myślisz o konkretnych i dobrze zdefiniowanych usługach - czym są usługi sieciowe.
Dlaczego to jest ważne?
Do tej pory wiesz już co nieco na temat działania usług sieci Web — klient odczytuje plik WSDL dostawcy, formatuje i odpowiednio wysyła komunikat SOAP, aw odpowiedzi otrzymuje kolejny komunikat SOAP. Dlaczego więc jest to takie ważne? O co chodzi?
Część znaczenia usług polega na tym, że zapewniają one standardowy sposób komunikowania się programów, niezależnie od języków, w których są napisane lub platform, na których działają. Wcześniej musieliśmy pracować z formatami danych, które są unikalne dla różnych programów, lub z funkcjami na poziomie API, z którymi programy w innych językach nie mogły działać. Z Wykorzystanie XML we wszystkich standardach usług internetowych oznacza, że wszystkie usługi są dostępne i jasno zdefiniowane.
W rzeczywistości pozwala to zupełnie różnym programom na łatwą komunikację ze sobą w języku, który wszyscy rozumieją. Jedna z głównych trudności w pracy z różne technologie od różnych producentów, zawsze trzeba było to wszystko wymusić różne programy komunikować się ze sobą i wymieniać dane. Teraz, gdy wszystkie Twoje aplikacje mogą dostarczać i/lub korzystać z usług sieci Web, komunikacja między nimi jest niezwykle łatwa.
Kolejną zaletą usług internetowych jest to, że klienci i dostawcy mogą znajdować się na różnych komputerach, używając różnych urządzeń i narzędzia programowe i nie przeszkadza w komunikacji. Programy mogą być używane przez inne programy na tym samym komputerze lub z innych komputerów, ale przy użyciu określonego formatu przesyłania danych. Usługi sieci Web wymagają jedynie połączenia sieciowego i obsługi XML.
Kiedy wszystkie te czynniki są rozpatrywane razem, wynik jest znaczący. Ponieważ mamy standardowe lekarstwo do komunikacji między aplikacjami przez sieć możemy budować nasze programy w inny sposób. Zamiast pisać monolityczne programy, w których koło jest za każdym razem wymyślane na nowo, możemy pisać programy składające się z modułów.
Na przykład zamiast duży program, który zbiera informacje o kilku procesach, zamienia je w wykresy i pokazuje je użytkownikom, możemy stworzyć dashboard, który będzie wyświetlał dane otrzymane z kilku serwisów WWW. Skompilowane dane są odbierane z jednej lub więcej usług, a wynikowe wykresy są tworzone przez inną usługę sieci Web, która pobiera dane i tworzy pewien rodzaj wykresu.
Deska rozdzielcza jest przekształcana z dużego programu w prosty interfejs. Gdy chcemy dodać nowe komponenty, po prostu odwołujemy się do dodatkowe usługi. Jeśli potrzebujemy innego wykresu, zwracamy się do innej usługi wykresów. Jeśli potrzebujemy bardziej interaktywnego dashboardu, z możliwością uczenia się lub sortowania, wówczas dashboard może przekazywać komunikaty od użytkownika do odpowiedniej usługi. Możemy nawet całkowicie zmienić wywoływane usługi bez zauważenia przez użytkowników (do czasu zmiany pliku WSDL), a panel pozostanie taki sam.
Jako informatyk możesz opracować front-end, rozwój usług lub oba te elementy. Zrozumienie, jak to wszystko działa razem (lub przynajmniej wiedza o tym, co to jest) jest ważne dla pracy nad takim projektem.
Dobrze, że istnieje wiele narzędzi ułatwiających dostarczanie i korzystanie z usług sieci Web, które mogą wykonać za Ciebie wiele ciężkiej pracy. W dalszej części tego artykułu omówimy, jak łatwo dostarczać usługi WWW klientom lub systemom przy użyciu IBM Lotus Domino V7.0.
Idea usług internetowych została opracowana przez takich gigantów branży komputerowej jak Sun, Oracle, HP, Microsoft czy IBM. Ten pomysł nie jest niczym nowym, ale to duży krok naprzód w ułatwianiu dostępu do programów w sieci. W oparciu o standardowe formaty komunikacji usługi internetowe mogą ogólnie zmienić nasze rozumienie tego, jak powinniśmy tworzyć strony internetowe.
Co to jest usługa internetowa?
Dzięki usługom sieciowym funkcje dowolnego programu mogą być udostępniane przez Internet. Dzięki temu programy takie jak PHP, ASP, skrypty JSP, JavaBeans, obiekty COM i wszystkie inne nasze ulubione narzędzia programistyczne mogą teraz uzyskać dostęp do jakiegoś programu działającego na innym serwerze (tj. usługi internetowej) i korzystać z otrzymanej od niej odpowiedzi na jej stronie internetowej lub aplikacji .
Powiedzmy, że jeśli muszę wykonać jakieś zadanie programistyczne i jestem zbyt zajęty (lub nie mam rozumu, aby samemu wymyślić koło na nowo), mogę skorzystać z usług serwisu internetowego, do którego moja witryna będzie miała dostęp przez Internet. Przekazując żądanie z parametrami do usługi sieciowej, oczekuję odpowiedzi, która będzie zawierała wynik mojego żądania.
Każdy, kto kiedykolwiek pracował w ostatnie czasy Z gorąca poczta, napotkał już pewne usługi sieciowe: system uwierzytelniania użytkowników Passport jest jedną z usług wchodzących w skład inicjatywy Microsoft .NET. podczas gdy jest dostępny za darmo, dzięki czemu twórcy witryn mogą łatwo wdrożyć uwierzytelnianie użytkowników w swojej witrynie.
Podstawy
Zasady stojące za usługami internetowymi są zaskakująco proste. I nie wnoszą nic nowego do świata przetwarzania rozproszonego i Internetu:
- osoba odpowiedzialna za serwis internetowy określa format zapytań do swojego serwisu internetowego i jego odpowiedzi;
- dowolny komputer w sieci wysyła żądanie do usługi internetowej
- serwis przetwarza żądanie, wykonuje jakąś akcję, a następnie wysyła odpowiedź
Czynnością tą może być np. wyświetlenie notowań giełdowych, wyświetlenie ceny konkretnego produktu, zapisanie wpisu w kalendarzu spotkań, tłumaczenie tekstu z jednego języka na inny lub sprawdzenie numeru karty kredytowej.
Standardy u podstaw
Powodem, dla którego wszyscy nagle zainteresowaliśmy się usługami sieciowymi, jest to, że opierają się one na standardach, otwartych protokołach wymiany i przesyłania danych.
Wcześniej wiele firm opracowało własne, zastrzeżone standardy i formaty. A teraz do pracy wystarczy znać prosty XML (eXtensible Markup Language), który jest przesyłany przez stary, znany protokół HTTP. Oznacza to, że informacje o tym, jak działają usługi sieciowe, są dostępne dla każdego, a twórcy stron internetowych, którzy z zawodu znają te technologie, mogą już dziś zacząć bawić się usługami sieciowymi.
Różnica między usługami sieciowymi a innymi technologiami, z którymi zetknęli się programiści (na przykład DCOM, potoki nazwane — potoki nazwane, RMI) polega na tym, że usługi sieciowe są oparte na otwartych standardach, są łatwe do nauczenia, a standardy te są powszechnie obsługiwane w wszystkie platformy Unix i Windows.
Simple Object Access Protocol (SOAP) to standardowy protokół opracowany przez W3C. Definiuje format żądań do usług internetowych.
Wiadomości pomiędzy serwisem internetowym a jego użytkownikiem są pakowane w koperty SOAP (koperty SOAP). Wiadomości zawierają albo prośbę o wykonanie jakiejś akcji, albo odpowiedź - wynik wykonania tej akcji. Koperta i jej zawartość są zakodowane w formacie XML i są dość łatwe do zrozumienia. Oto jak wygląda proste żądanie SOAP, które jest wysyłane przez HTTP do usługi sieciowej:
xmlns:m="http://www.somesite.com/postcode">
Kluczowe elementy koperty SOAP są łatwe do rozpoznania: są to dwa parametry (
A odpowiedź będzie wyglądać tak:
xmlns:m="http://www.somesite.com/postcode">
Ta wiadomość jest jeszcze łatwiejsza do rozszyfrowania. Element
Teraz o UDDI
Nawet przy prostocie protokołu SOAP, usługi sieciowe byłyby niewielkie, gdybyśmy nie mieli możliwości ich znalezienia. Na szczęście IBM, Microsoft i Ariba podjęły inicjatywę i stworzyły projekt Universal Description, Discovery and Integration (UDDI), który, jak mają nadzieję, stanie się wspólnym katalogiem wszystkich usług sieciowych w sieci.
System UDDI umożliwia firmom udostępnienie swoich usług internetowych opinii publicznej. Ten katalog działa jako książka telefoniczna dla wszystkich usług internetowych. Rejestracja w katalogu UDDI jest bezpłatna, a twórcy projektu mają nadzieję, że katalog ten będzie zawierał opisy wszystkich usług w sieci, tak że aby znaleźć żądaną usługę sieciową, wystarczy odwołać się tylko do jednej Katalog UDDI.
Jak to wszystko działa
Jak więc znaleźć odpowiednią usługę internetową?
Wyobraźmy sobie, że jestem twórcą strony internetowej i mój klient poprosił mnie o dodanie do strony Nowa cecha: Musisz dodać weryfikację kodu pocztowego w formularzu rejestracyjnym.
Aby przeprowadzić tę kontrolę, musiałbym stworzyć bazę danych wszystkich kodów pocztowych wszystkich 30 krajów, w których nasza firma prowadzi działalność, a następnie sprawdzić, czy kod pocztowy odpowiada miastu podanemu w rejestracji podczas rejestracji. Ale nie mam tych danych i myślę, że na ich zebranie trzeba będzie wydać sporą sumę pieniędzy.
Zamiast kupować bazę danych, pisać własny kod, upewniać się, że wszystkie dane są spójne i poprawne oraz debugować skrypty, po prostu przechodzę do katalogu UDDI i szukam usługi sieciowej, która mogłaby wykonać zadanie za mnie. Kiedy wchodzę na stronę www.uddi.org, przeprowadzam wyszukiwanie i znajduję świetną usługę XYZ Corp.
Dokładnie przeglądam definicję formatu usługi internetowej (definicja jest napisana w WSDL (Web Services Description Language), upewniam się, że usługa robi dokładnie to, czego potrzebuję. Następnie pytam kolegów o reputację XYZ Corp., dowiaduję się, że jest solidny, a następnie kontaktuję się z XYZ Corp. w sprawie ceny, jeśli cena dostępu do usługi mieści się w moim budżecie, piszę prostą stronę JSP dla mojej witryny, która wywołuje usługę internetową XYZ Corp, i och, witryna ma kod pocztowy do natychmiastowego sprawdzenia.
Warto poświęcić czas
Nawet jeśli nie masz nic wspólnego z programowaniem lub technologiami tworzenia stron internetowych, warto dowiedzieć się więcej o usługach internetowych. Wyobraź sobie, jak rozmawiasz z klientem o nowej stronie, omawiając wszystkie funkcje nowego projektu. Wszystko idzie świetnie: budżet spełnia oczekiwania klienta, podobał mu się zarys planu terenu, podobały mu się przykłady interfejsu. Wydaje się, że wszystko działa.
I nagle przypominają sobie jakąś bardzo złożoną funkcję. Na samo wspomnienie o tym, twarz twojego twórcy stron internetowych robi się zielona i zaczyna się dusić z kaszlu. To programista dający sygnał, że rozwój tej funkcji będzie wymagał dużo czasu i pieniędzy lub jest po prostu niewykonalny przy takim budżecie.
Porzuć strach! Mogę się założyć, że w sieci istnieje już usługa internetowa, która jest gotowa zapewnić Ci wymaganą funkcję, a koszt korzystania z tej usługi internetowej będzie znacznie niższy niż koszt samodzielnego opracowania jej analogu. W ten sposób oszczędzisz programistom niepotrzebnych bólów głowy, a klientowi marnowanie pieniędzy, poświęcając tylko kilka minut na przeglądanie katalogu UDDI.
Rozwój usług
Oczywiście programiści nie muszą zadowalać się usługami internetowymi stworzonymi przez innych. Korzystając z jednego z poniższych zestawów narzędzi, możesz stworzyć własny serwis internetowy i świadczyć jego usługi innym mieszkańcom sieci.
Wybór narzędzi do tworzenia usług internetowych jest szeroki. Zawiera zestawy narzędzi takich firm, jak Sun (Open Net), Microsoft (.NET), (e-usługi) i IBM (Web Services). Istnieją również zestawy narzędzi typu open source kody źródłowe(frameworki open source). Na przykład projekt Mono stara się zastąpić zestaw narzędzi Microsoft .NET, zapewniając system kompilacji (kompilatory), wykonywanie kodu (środowisko uruchomieniowe) i biblioteki (biblioteki) w celu uruchamiania tych samych usług internetowych na wszystkich platformach, w tym w systemie Unix.
Pomimo różnorodności serwerów i narzędzi do tworzenia usług internetowych, wszystkie obsługują ten sam protokół SOAP, język XML i system UDDI.
Minusy
Zanim całkowicie porzucę karierę programisty i poświęcę się korzystaniu z usług internetowych, muszę zadać sobie pytanie: „To zdjęcie jest za różowe. Co z nim nie tak?”. Niestety za ogromny potencjał usług internetowych trzeba zapłacić:
- Używanie XML jako formatu przesyłania danych powoduje, że Twoje wiadomości są bardzo duże: same znaczniki XML zajmują dużo miejsca, a to nakłada na nas pewne obciążenie przy tworzeniu, przesyłaniu i interpretacji wiadomości.
- Ponieważ używamy komputery zdalne w celu wykonywania niektórych funkcji polegamy całkowicie na Internecie, który tworzy zbyt wiele zawodnych połączeń w łańcuchu między naszym serwerem internetowym a usługą internetową.
- Obecnie niewiele firm tworzy usługi internetowe i niewiele firm z nich korzysta. Debugowanie i ulepszanie systemu usług internetowych nadal zajmuje dużo czasu.
- System licencjonowania i pobierania opłat za korzystanie z usług internetowych nie został jeszcze przyjęty przez programistów. W związku z tym, że serwisów internetowych jest wciąż zbyt mało, większość firm stara się wywrzeć dobre wrażenie na swoich potencjalnych klientach, celowo obniżając koszt usług i oferując korzystne warunki licencyjne. Minie jeszcze trochę czasu, zanim zostanie wyjaśniony rzeczywisty koszt usług sieciowych.
Gdy usługi sieciowe zajmą ich miejsce i staną się dostępne dla wszystkich, staną się nieocenioną pomocą dla twórców stron internetowych. Dadzą nam elastyczny dostęp do pełnej mocy wszystkich komputerów w sieci. Nadszedł czas, aby ci, którzy tworzą strony internetowe, zainteresowali się usługami internetowymi i dowiedzieli się więcej o tym, co mogą z nich uzyskać.