| Termin | Definicja |
|---|---|
| SOAP | SOAP to protokół wymiany danych oparty na XML, wykorzystywany w niektórych starszych integracjach. SOAP jako protokół wymiany komunikatów XMLSOAP, czyli Simple Object Access Protocol, jest standardem służącym do przekazywania uporządkowanych komunikatów pomiędzy aplikacjami. W praktyce umożliwia wywoływanie operacji udostępnionych przez jeden program z poziomu innego programu, nawet gdy oba systemy zostały stworzone w różnych językach programowania albo działają na odmiennych platformach. Najważniejszym elementem komunikacji jest dokument XML o określonej strukturze, dzięki któremu dane mogą zostać opisane w sposób jednoznaczny i możliwy do przetworzenia przez system odbiorcy. SOAP nie jest zwykłym formatem przesyłania danych. Definiuje model komunikatu, zasady obsługi błędów oraz sposób przekazywania dodatkowych informacji związanych z żądaniem. Komunikat składa się z koperty, nagłówka oraz treści. Koperta wskazuje, że przesyłany dokument ma strukturę SOAP. Nagłówek może zawierać dane dotyczące uwierzytelnienia, transakcji, śledzenia żądania albo dodatkowych reguł przetwarzania. Treść zawiera właściwe wywołanie operacji lub odpowiedź zwróconą przez system. W wielu wdrożeniach komunikaty SOAP przesyłane są za pomocą protokołu HTTP lub HTTPS, ale sam standard nie ogranicza się wyłącznie do tych mechanizmów. Istotne jest rozdzielenie formatu wiadomości od sposobu jej transportu. Dzięki temu można ustalić osobno, jak powinny wyglądać dane, jak ma być zgłaszany błąd oraz jak komunikat zostanie dostarczony do odbiorcy. Takie podejście sprzyjało tworzeniu rozbudowanych integracji między systemami finansowymi, administracyjnymi, logistycznymi i biznesowymi. SOAP a REST, XML i JSON w praktyceSOAP bywa porównywany z REST, choć nie są to pojęcia tego samego rodzaju. SOAP jest formalnie zdefiniowanym protokołem komunikacyjnym, natomiast REST stanowi styl projektowania usług wykorzystujących zasoby, operacje i standardowe metody protokołu HTTP. W rozwiązaniach REST często stosuje się JSON, ponieważ jest zwięzły, łatwy do odczytania i wygodny w aplikacjach internetowych. SOAP korzysta przede wszystkim z XML, który zajmuje więcej miejsca, lecz pozwala precyzyjnie opisać strukturę dokumentu, typy danych i zależności między elementami. Przewagą SOAP może być rozbudowany ekosystem standardów dodatkowych. W zależności od projektu można używać mechanizmów opisujących usługę, zabezpieczających komunikację, potwierdzających dostarczenie wiadomości lub wspierających obsługę transakcji. Z tego powodu SOAP nadal występuje w integracjach, w których liczy się formalny kontrakt, ścisła walidacja danych i przewidywalna obsługa wyjątków. W prostym interfejsie aplikacji internetowej taki poziom formalizacji może jednak zwiększać złożoność implementacji. W rozwiązaniach opartych na REST odpowiedź może być niewielkim dokumentem JSON, natomiast w SOAP nawet proste żądanie jest umieszczane w pełnej kopercie XML. Przekłada się to na większy rozmiar komunikatów, większe zużycie pamięci oraz bardziej wymagające analizowanie treści. Nie oznacza to automatycznie, że jeden sposób jest zawsze lepszy. Dobór zależy od istniejącej infrastruktury, wymagań dotyczących zgodności, bezpieczeństwa, sposobu wersjonowania oraz możliwości systemów, które mają się ze sobą porozumiewać. Warto odróżnić SOAP od samego XML. XML jest językiem znaczników do zapisywania danych, a SOAP określa, jak zbudować komunikat i jak rozumieć jego poszczególne części. Dokument XML może być używany w wielu innych zastosowaniach, natomiast komunikat SOAP powinien zachowywać reguły zdefiniowane przez odpowiedni standard oraz kontrakt usługi. SOAP i typowe problemy z komunikacjąJednym z częstszych problemów jest niezgodność struktury komunikatu z definicją usługi. Nawet drobna różnica w nazwie elementu, przestrzeni nazw, kolejności pól albo formacie daty może spowodować odrzucenie żądania. System może oczekiwać wartości zapisanej według konkretnego schematu XML, a otrzymać tekst o podobnym znaczeniu, lecz niezgodny formalnie z kontraktem. Z tego powodu analizuje się nie tylko samą treść żądania, lecz także nagłówki, kodowanie znaków i sposób przekazania dokumentu. Problemy mogą dotyczyć również uwierzytelniania. Niektóre usługi oczekują danych w nagłówku SOAP, inne korzystają z mechanizmu transportowego, a jeszcze inne wymagają podpisu cyfrowego albo zaszyfrowania wybranych części wiadomości. Błąd konfiguracji może objawiać się komunikatem o braku uprawnień, nieprawidłowym podpisie lub odrzuceniu całej koperty. W takich sytuacjach pomocne jest porównanie poprawnego przykładowego żądania z komunikatem rzeczywiście wysyłanym przez aplikację. Osobną grupę stanowią błędy transportowe i czasowe. Połączenie może zostać przerwane, odpowiedź może nadejść po przekroczeniu limitu oczekiwania albo system może zwrócić komunikat o chwilowej niedostępności. Należy wtedy ustalić, czy operacja została wykonana, lecz odpowiedź nie dotarła do nadawcy. Ponowienie żądania bez sprawdzenia tej kwestii może doprowadzić do podwójnego zapisu, ponownego zlecenia albo niespójności danych. Warto także kontrolować logi aplikacji. Powinny wskazywać czas wysłania komunikatu, identyfikator żądania, rezultat operacji i skrócony opis błędu. Do logów nie powinny trafiać hasła, tokeny, pełne numery dokumentów ani inne informacje, których ujawnienie mogłoby naruszyć prywatność. W przypadku trudnej awarii przydatne bywa zapisanie przykładowego komunikatu po usunięciu danych wrażliwych oraz informacji o wersji używanego klienta. SOAP w codziennej diagnostyce i praktyczne wskazówkiPrzy diagnozowaniu problemów z usługą SOAP warto rozpocząć od sprawdzenia kontraktu. Może on być opisany w dokumencie WSDL, który przedstawia dostępne operacje, wymagane parametry, typy danych, format odpowiedzi i możliwe błędy. Porównanie aktualnego kontraktu z dokumentacją używaną podczas tworzenia aplikacji pozwala wykryć sytuację, w której po stronie odbiorcy wprowadzono zmianę, a klient nadal korzysta ze starszej definicji. Następnie sprawdza się komunikację na kilku poziomach. Najpierw należy potwierdzić, czy nazwa hosta jest poprawnie rozpoznawana i czy połączenie może zostać ustanowione. Później analizuje się certyfikat, protokół szyfrowania, nagłówki HTTP oraz kod odpowiedzi. Dopiero po wykluczeniu problemu z transportem warto koncentrować się na składni XML, wartościach pól i regułach biznesowych. Taki porządek ogranicza ryzyko szukania błędu w treści dokumentu, gdy przyczyna leży w konfiguracji połączenia. Pomocne jest testowanie małym, kontrolowanym żądaniem. Powinno zawierać tylko wymagane pola, poprawne dane przykładowe i identyfikator pozwalający powiązać żądanie z odpowiedzią. Jeżeli minimalny komunikat działa, kolejne elementy można dodawać stopniowo. Pozwala to ustalić, który fragment powoduje odrzucenie. Przydatne jest także porównywanie odpowiedzi pozytywnej i negatywnej, zwracając uwagę na kod błędu, opis wyjątku i ewentualne informacje umieszczone w nagłówku. Nie należy bezrefleksyjnie zwiększać limitu czasu oczekiwania. Dłuższy limit może ukryć problem z niedostępną usługą, przeciążeniem albo błędnym zapytaniem. Lepszym rozwiązaniem jest ustalenie, jak długo operacja powinna trwać, jakie błędy można bezpiecznie ponowić i kiedy potrzebna jest ręczna weryfikacja. W systemach przetwarzających dokumenty szczególne znaczenie ma idempotencja, czyli możliwość ponownego wykonania operacji bez niepożądanych skutków. Kiedy zgłosić problem z SOAP do serwisuDo serwisu warto zgłosić się wtedy, gdy komunikacja SOAP przestała działać po zmianie komputera, instalacji systemu, aktualizacji oprogramowania lub wymianie urządzenia sieciowego. Wcześniej można przygotować nazwę aplikacji, opis momentu wystąpienia problemu, treść komunikatu błędu oraz informację, czy awaria dotyczy wszystkich operacji, czy tylko jednego rodzaju żądania. Takie dane ułatwiają odróżnienie usterki sprzętowej od błędu konfiguracji lub problemu po stronie zewnętrznej usługi. Jeżeli aplikacja zamyka się podczas wysyłania dokumentu, komputer traci połączenie, pojawiają się losowe przerwy w komunikacji albo system nie zapisuje odpowiedzi, warto sprawdzić urządzenie na miejscu. W Warszawskim Pogotowiu Komputerowym 24/7 można przeprowadzić diagnostykę sprzętu wykorzystywanego do pracy z aplikacjami i połączeniami sieciowymi. Przed przekazaniem urządzenia zaleca się wykonanie kopii ważnych danych oraz usunięcie lub zabezpieczenie haseł zapisanych w programach. Diagnostyka powinna obejmować stan systemu operacyjnego, sterowniki, konfigurację sieci, działanie zapory, certyfikaty oraz zachowanie konkretnej aplikacji. Sam błąd SOAP nie zawsze wskazuje na fizyczną usterkę komputera, ale jego powtarzalność po zmianach sprzętowych lub systemowych może być cenną wskazówką. Rzetelne rozpoznanie pozwala ustalić, czy wystarczy korekta ustawień, ponowna instalacja składnika, aktualizacja programu, naprawa połączenia czy dalsza konsultacja z dostawcą usługi. |