Bosh sahifa Wiki SOAP

SOAP

SOAP — strukturali xabarlarni network orqali almashish uchun XML asosida yaratilgan messaging protocol. To‘liq nomi Simple Object Access Protocol tarixiy nomidan kelib chiqqan, ammo zamonaviy specification’da u shunchaki SOAP deb yuritiladi.

SOAP HTTP bilan keng ishlatiladi, lekin transportdan mustaqil modelga ega. U enterprise integration, bank, davlat va legacy service’larda uchraydi.

Envelope

Har SOAP message Envelope root elementiga ega.

Soddalashtirilgan ko‘rinish:

<soap:Envelope>
  <soap:Header>
    ...
  </soap:Header>
  <soap:Body>
    ...
  </soap:Body>
</soap:Envelope>

Envelope message chegarasi va namespace’ni belgilaydi.

Header optional metadata va processing instructionlarni saqlaydi.

Masalan:

Header element qaysi node tomonidan qayta ishlanishini belgilashi mumkin.

Body

Body asosiy application payloadni saqlaydi.

Request operation va parameterlar XML elementlari ko‘rinishida beriladi.

Response natija yoki faultni o‘z ichiga oladi.

Schema type va namespace bilan boshqariladi.

XML namespace

SOAP turli standard va application elementlarini namespace orqali ajratadi.

Namespace URI element nomining ma’nosini belgilaydi.

Prefix faqat document ichidagi qisqa nom.

Bir xil local name turli namespace’da boshqa tushuncha bo‘lishi mumkin.

WSDL

WSDL web service contractini XML formatda tasvirlaydi.

U:

haqida ma’lumot beradi.

Tool WSDLdan client proxy va server skeleton yaratishi mumkin.

XML Schema

XSD request va response elementlarining type va structure’ini belgilaydi.

Masalan:

  • string;
  • decimal;
  • date;
  • complex type;
  • required element;
  • occurrence.

Schema validation noto‘g‘ri message’ni rad etishga yordam beradi.

Binding

WSDL abstract operationni aniq transport va message formatiga bog‘laydi.

SOAP binding:

  • document yoki rpc style;
  • literal yoki tarixiy encoding;
  • HTTP action;
  • endpoint

kabi xususiyatlarni belgilashi mumkin.

Document/literal usuli interoperability uchun keng tarqalgan.

SOAP over HTTP

SOAP message ko‘pincha HTTP POST body’da yuboriladi.

Content-Type SOAP versiyasiga bog‘liq.

HTTP status bilan SOAP Fault semantikasi birga ishlashi mumkin.

Ba’zi service HTTP 500 ichida SOAP Fault qaytaradi.

SOAP Fault

Xato standart Fault structure’da beriladi.

U:

  • code;
  • reason;
  • detail;
  • node yoki rolega oid ma’lumot

saqlashi mumkin.

Raw stack trace va secret detail tashqi clientga chiqarilmaydi.

WS-Addressing

WS-Addressing message destination, action, reply va message IDga oid headerlarni standartlashtiradi.

Bu transportdan mustaqil routing va asynchronous patternlarga yordam beradi.

Oddiy HTTP endpoint uchun barcha holatda zarur emas.

WS-Security

WS-Security SOAP message darajasida:

kabi imkoniyatlarni belgilaydi.

Transport TLS bilan himoyalangan bo‘lsa ham message bir nechta intermediary orqali o‘tganda message-level security talab qilinishi mumkin.

Digital signature

SOAP body yoki headerning aniq qismlari imzolanishi mumkin.

XML Signature canonicalization va reference qoidalariga ega.

Noto‘g‘ri validation signature wrapping hujumiga olib kelishi mumkin.

Application aynan imzolangan elementni qayta ishlashi kerak.

Encryption

XML Encryption message’ning ma’lum elementlarini shifrlash imkonini beradi.

Bu end-to-end yoki qisman maxfiylik beradi.

Key management va recipient certificate lifecycle muhim.

State va transaction

Enterprise SOAP stacklarda distributed transaction, reliable messaging va policyga oid WS-* standardlari mavjud.

Bu murakkab business integration uchun kuchli imkoniyat beradi.

Evaziga interoperability va configuration murakkablashadi.

SOAP va REST

SOAP protocol va XML message contractiga ega.

REST HTTP resource va method semantikasiga tayangan architectural style.

SOAP:

  • formal WSDL;
  • message-level security;
  • enterprise standardlar;
  • typed XML.

REST ko‘pincha sodda JSON va HTTP API bilan ishlaydi.

SOAP va RPC

SOAP operation-oriented message bilan RPC uslubida ishlashi mumkin.

Lekin document-style SOAP business document almashinuviga ham mos.

SOAP transport, envelope va extension modelini beradi.

Security

SOAP parser:

xavflariga tayyor bo‘ladi.

External entity o‘chiriladi, size va depth limit qo‘llanadi.

Contract-first

SOAP service’da avval WSDL va XSD contract yozilib, keyin client hamda server code yaratilishi mumkin. Bu contract-first yondashuv turli til va vendorlar orasida interoperabilityni yaxshilaydi. Contract o‘zgarishi version va compatibility bilan boshqariladi.

MTOM

Katta binary data’ni XML ichida base64 sifatida yuborish hajmni oshiradi. MTOM binary qismni optimized attachment ko‘rinishida uzatishga yordam beradi. Message signature va transport integrationi to‘g‘ri sozlanadi.

Intermediary

SOAP header bir nechta intermediary node tomonidan qayta ishlanishi mumkin. mustUnderstandga oid semantika majburiy header e’tiborsiz qolmasligini ta’minlaydi. Noto‘g‘ri node security headerni tashlab yubormasligi kerak.

Versionlash

SOAP 1.1 va SOAP 1.2 envelope namespace hamda HTTP bindingda farqlanadi. Client va server qaysi versiyani qabul qilishini aniq belgilaydi. Noto‘g‘ri Content-Type yoki namespace protocol faultga olib kelishi mumkin.

Namespace versioni

Yangi contract uchun alohida namespace ishlatilishi mumkin. Bu eski va yangi message formatlarini bir muddat parallel qo‘llashga yordam beradi.

Bog‘liq tushunchalar

SOAP, XML, WSDL, XML Schema, SOAP Envelope, SOAP Fault, WS-Security, WS-Addressing, Web service, RPC