SOAP
Simple Object Access Protocol
- Okunuşu
- sop
Kısaca
SOAP, her isteği ve yanıtı genellikle resmi bir WSDL sözleşmesiyle tanımlanan katı bir zarfa saran, XML tabanlı bir web servisi mesajlaşma protokolüdür.
SOAP nedir?
SOAP, uygulamalar arasında çoğunlukla HTTP üzerinden yapılandırılmış mesajlar alışverişi için kullanılan bir protokoldür. Her mesaj, güvenlik token'ları gibi meta veriler için isteğe bağlı bir Header ve asıl istek ya da yanıtı tutan bir Body içeren bir Envelope taşıyan XML belgesidir. 2000'lerin başında W3C tarafından standartlaştırıldı ve REST ile JSON yeni API'lerin çoğunu devralmadan önce kurumsal web servislerinin belkemiği oldu.
Bir SOAP servisi genellikle bir WSDL (Web Services Description Language) dosyasıyla tanımlanır; bu, XML Schema ile tanımlanmış işlemleri, girdi ve çıktılarını ve veri tiplerini listeleyen bir XML sözleşmesidir. Araçlar WSDL'yi okuyup istemci kodu üretir; böylece servisi çağırmak yerel bir metodu çağırmak gibi hissettirir ve bu da SOAP'u bir RPC biçimi yapar. WS-* standartları olarak bilinen bir uzantı ailesi, mesajları imzalamak ve şifrelemek için WS-Security, garantili teslimat için WS-ReliableMessaging gibi özellikler ekler; hatalar ise standart bir Fault öğesi içinde döner.
SOAP, gerekli bir formu içeren resmi bir zarfla gönderilen resmi bir taahhütlü mektup gibidir: hızlı bir kısa mesajdan daha ağır ve yavaş, ancak kesin, doğrulanabilir ve yanlış okunması zordur. Bankacılıkta, sigortacılıkta, telekomünikasyonda, sağlıkta, kamuda ve ödeme sistemlerinde, ayrıca katı sözleşmelere ve yerleşik güvenlik standartlarına değer verilen eski kurumsal yazılımlarla entegrasyonlarda hâlâ yaygındır.
Olağan karşılaştırma SOAP ile REST arasındadır. SOAP, sabit bir XML mesaj biçimi ve resmi bir sözleşmesi olan bir protokoldür ve genellikle her çağrıyı tek bir endpoint'e POST olarak gönderir. REST ise kaynaklar için URL'leri, standart HTTP metotlarını ve durum kodlarını ve çoğunlukla JSON olmak üzere herhangi bir veri biçimini kullanan bir mimari stildir. REST daha hafiftir ve tarayıcılardan çağrılması daha kolaydır; SOAP ise daha katı tiplendirme ve standartlaştırılmış mesaj düzeyinde güvenlik sunar. Özgün adına rağmen SOAP özellikle basit ya da nesne tabanlı değildir ve 1.2 sürümünden beri ad resmi olarak artık bir kısaltma sayılmaz.
Önemli noktalar
- SOAP mesajları; bir zarf, isteğe bağlı bir başlık ve bir gövde içeren XML belgeleridir.
- Bir WSDL dosyası, servisin işlemlerini ve veri tiplerini resmi olarak tanımlar.
- WS-* standartları mesaj düzeyinde güvenlik ve güvenilir teslimat ekler.
- SOAP bankacılıkta, kamuda, telekomünikasyonda ve kurumsal entegrasyonlarda hâlâ yaygındır.
- SOAP katı bir protokoldür; REST ise genellikle JSON kullanan daha hafif bir mimari stildir.
Örnek
<!-- Usually sent with HTTP POST to a single service URL -->
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:acc="http://example.com/accounts">
<soap:Header>
<!-- Metadata such as authentication tokens goes here -->
</soap:Header>
<soap:Body>
<acc:GetBalance>
<acc:AccountId>12345</acc:AccountId>
</acc:GetBalance>
</soap:Body>
</soap:Envelope>Sık sorulan sorular
SOAP ile REST arasındaki fark nedir?
SOAP, her zaman XML zarfları ve genellikle bir WSDL sözleşmesi kullanan resmi bir protokoldür. REST ise kaynak URL'leri ve standart HTTP metotları üzerine kurulu, tipik olarak JSON alışverişi yapan bir mimari stildir; bu da çoğu web API'si için onu daha basit ve hafif yapar.
SOAP hâlâ kullanılıyor mu?
Evet. Birçok banka, ödeme ağı, kamu kurumu ve büyük kurumsal sistem SOAP servislerini hâlâ çalıştırıyor ve bunlara bağımlı. Ancak yeni herkese açık API'lerin çoğu REST, GraphQL veya gRPC kullanıyor.
WSDL dosyası nedir?
WSDL (Web Services Description Language) dosyası, bir SOAP servisini tanımlayan XML belgesidir: işlemlerini, mesaj biçimlerini, veri tiplerini ve ağ adresini. Araçlar onu istemci kodunu otomatik üretmek için kullanır.
Sık karşılaştırılanlar
İlgili sayfalar
- REST APIBackend ve API'ler, s. 38REST API, verileri URL'lerle tanımlanan kaynaklar olarak sunan ve istemcilerin onları standart HTTP metotlarıyla okuyup değiştirmesini sağlayan web API'sidir.
- RPCBackend ve API'ler, s. 39RPC, bir programın başka bir makinede çalışan fonksiyonu yerel bir fonksiyonmuş gibi çağırdığı ve aradaki ağı gizleyen bir iletişim stilidir.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- SerileştirmeBackend ve API'ler, s. 42Serileştirme, bellekteki veri yapılarını JSON ya da bayt gibi bir biçime dönüştürme işlemidir; böylece veriler saklanabilir veya ağ üzerinden gönderilebilir.
- Web SunucusuBackend ve API'ler, s. 46Web sunucusu, tarayıcılardan ve diğer istemcilerden gelen HTTP isteklerini alıp sayfa, dosya ya da veriyle yanıt veren yazılım veya onu çalıştıran makinedir.
- XMLBackend ve API'ler, s. 48XML (Extensible Markup Language), kendi tanımladığınız iç içe etiketlerle yapılandırılmış veriyi tutan, insanın ve makinenin okuyabildiği metin biçimidir.
- Servis Odaklı MimariYazılım Mimarisi, s. 36Servis odaklı mimari, kurumsal yazılımı birbiriyle standart sözleşmelerle iletişim kuran, yeniden kullanılabilir ve ağdan erişilebilir servislerden kurar.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin