SOAP (uprzednio zwany również Simple Object Access Protocol) to prosty protokół wymiany informacji w zdecentralizowanym, rozproszonym środowisku. Wiadomość SOAP to transmisja informacji od nadawcy do odbiorcy. Wiadomości SOAP można ze sobą łączyć we wzorce żądanie/odpowiedź.
Chociaż SOAP jest niezależny od metody transportu, to zazwyczaj jest przesyłany za pomocą protokołu HTTP, aby mógł działać w istniejącej infrastrukturze internetowej. SOAP umożliwia wiązanie i wykorzystanie wykrytych usług Web Services przez zdefiniowanie ścieżki wiadomości w celu ich kierowania. SOAP służy do tworzenia zapytań UDDI o usługi Web Services. Środowisko robocze obsługuje SOAP 1.1.
SOAP to protokół wykorzystujący XML, który definiuje trzy części każdej wiadomości:
Protokół SOAP obsługuje dwa style komunikacji:
Zdalne wywołanie procedury (RPC): Wywołanie operacji skutkujące wynikiem. Zazwyczaj stosowane z kodowaniem SOAP, które nie jest zgodne z WS-I.
Styl dokumentu: Znany też jako styl zorientowane na obsługę dokumentów lub zorientowany na obsługę wiadomości. Styl ten charakteryzuje się niższą warstwę abstrakcji i wymaga więcej programowania.
W środowiskach przetwarzania rozproszonego style kodowania definiują sposób, w jaki wartości danych zdefiniowane w aplikacji mogą być przekształcane na dany format protokołu i odwrotnie. Proces konwersji jest nazywany serializacją i deserializacją.
Specyfikacja SOAP definiuje styl kodowania SOAP:
Kodowanie SOAP: Styl kodowania SOAP umożliwia serializację/deserializację wartości typów danych z modelu danych SOAP. Ten styl kodowania jest zdefiniowany w standardzie SOAP 1.1 i nie jest zgodny z WS-I.
W języku WSDL jest zdefiniowany dosłowny styl kodowania XML:
Dosłowny XML: Określenie dosłowny odnosi się do faktu, że dokument należy czytać w takim stanie, w jakim się znajduje, czyli niekodowany. Dokument jest serializowany jako XMI, co oznacza, że wiadomość XML jest zgodna ze schematem w WSDL. W przypadku kodowania dosłownego każda część wiadomości odnosi się do konkretnej definicji schematu. Kodowanie dosłowne jest zgodne z WS-I.
Zadaniem modelu danych SOAP jest zapewnienie niezależnej od języka abstrakcji dla typów danych stosowanych przez wspólne typy języków programowania. Model ten zawiera następujące elementy:
Wszystkie elementy i identyfikatory składające się na model danych SOAP są zdefiniowane w przestrzeni nazw URI. Standard SOAP definiuje reguły sposobu konstruowania typów danych. Rzeczywiste typy danych muszą zostać zdefiniowane w schemacie XML właściwym dla projektu. Elementy specyfikacji SOAP są zdefiniowane na stronie http://schemas.xmlsoap.org/soap/envelope/ i http://schemas.xmlsoap.org/soap/encoding/
Obecnie dostępne są różne implementacje protokołu SOAP. Na przykład Apache Foundation udostępnia Apache SOAP, czyli implementację, która powstała na bazie projektu IBM ® o nazwie SOAP4J, a także środowiska wykonawcze Apache Axis i IBM WebSphere®.
Odwzorowanie definiuje powiązanie między kwalifikowaną nazwą elementu XML, nazwą klasy Java™ oraz stylem kodowania. Odwzorowanie określa jak, przy danym kodowaniu, przychodzący element XML o pełnej nazwie jest przekształcany na klasę Java i odwrotnie.
Więcej informacji na temat implementacji Apache SOAP można znaleźć na stronie xml.apache.org/soap Więcej informacji na temat protokołu SOAP można znaleźć na stronie www.w3.org/TR/SOAP