🧼 SOAP. ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€



SOAP (Simple Object Access Protocol) – ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° XML ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ стандарт. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ REST, SOAP Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ транспортныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΏΠΎΠΌΠΈΠΌΠΎ HTTP, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SMTP ΠΈ FTP. А Π΅Ρ‰Ρ‘ SOAP Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΡ€ΠΎΠΌΠ΅ XML. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Π² систСмах, Π³Π΄Π΅ Π½ΡƒΠΆΠ½Π° Тёсткая стандартизация, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² legacy.



ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SOAP ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ HTTP Π² качСствС транспорта (SOAP over HTTP). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ HTTP, Π½ΠΎ ΠΏΠΎ этому ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ пСрСдаётся Π½Π΅ просто стандартноС сообщСниС HTTP, Π° Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΠΊ с письмом, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ это письмо написано ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SOAP. БообщСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ POST-запросами.



Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° XML-сообщСния



>
Envelope β€” ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт сообщСниС ΠΈ пространство ΠΈΠΌΠ΅Π½, использованноС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.



> Header β€” содСрТит Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ сообщСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: информация ΠΎ бСзопасности ΠΈΠ»ΠΈ ΠΎ сСтСвой ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.



> Body β€” содСрТит сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ прилоТСния.



> Fault β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сообщСний.



ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π² SOAP-сообщСнии Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ <Ρ‚Π΅Π³Π°ΠΌΠΈ>. Они ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ. Π’Π΅Π³ΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ <ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅> (ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) ΠΈ </Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅>.



Как ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π΅Π³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? А это ΠΊΠ°ΠΊ Ρ€Π°Π· описываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ – Π² Ρ„Π°ΠΉΠ»Π΅ WSDL.



WSDL (Web Services Description Language) β€” язык описания Π²Π΅Π±-сСрвисов ΠΈ доступа ΠΊ Π½ΠΈΠΌ, основанный Π½Π° языкС XML. Π’ SOAP для описания своСго сСрвиса Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строгиС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° WSDL. И ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈ сСрвСр Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅ этим Ρ„Π°ΠΉΠ»ΠΎΠΌ: Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запрос, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ эндпоинт Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.



Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π΅Π±-сСрвиса SOAP Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° конСчная Ρ‚ΠΎΡ‡ΠΊΠ° (endpoint). Π­Ρ‚Π° конСчная Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. КакиС Ρƒ сСрвиса Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ описываСтся Π² WSDL-Ρ„Π°ΠΉΠ»Π΅.



βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° SOAP

1. НаличиС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ стандарта

2. НаличиС встроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок



❌ НСдостатки SOAP

1. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π²Π²ΠΈΠ΄Ρƒ нСобходимости ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ строгого стандарта ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»

2. Низкая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·-Π·Π° ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… сообщСний



ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SOAP



Π’ настоящСС врСмя SOAP примСняСтся Π² систСмах, Π³Π΄Π΅ трСбуСтся Тёсткая стандартизация ΠΈ соблюдСниС строгих ΠΏΡ€Π°Π²ΠΈΠ» бСзопасности. НапримСр, госструктуры, Π±Π°Π½ΠΊΠΈΠ½Π³, финансы, Π·Π΄Ρ€Π°Π²ΠΎΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.



Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ SOAP тСряСт ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ примСняСтся Π² legacy-систСмах.



πŸ“ŽΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

1. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SOAP ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ систСм: ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈ Π²Π΅Π±ΠΈΠ½Π°Ρ€

2. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ SOAP Π½Π° русском ΠΎΡ‚ w3.org

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ API: ВзаимодСйствиС с API ЯндСкс Π”ΠΈΡ€Π΅ΠΊΡ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ SOAP

4. REST vs SOAP, gRPC ΠΈ GraphQL: стили мСТсистСмной ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ API

5. SOAP API β€” обзорная ΠΌΠΈΠ½ΠΈ-ΡΡ‚Π°Ρ‚ΡŒΡ

6. Π’Π΅Π±ΠΈΠ½Π°Ρ€: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SOAP, WSDL, XSD / Π£Ρ€ΠΎΠΊ 28 / ВСстировщик с нуля



#ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ #api