2012 yenilenmiş (ikinci ödül) sorusunu cevaplamak ve bugünün sonuçlarını gözden geçirmek (diğer cevaplar).
SABUN, artıları ve eksileri
SOAP 1.2 hakkında, "REST" ile karşılaştırıldığında avantajları ve dezavantajları ... Peki, 2007'den beri
REST Web hizmetlerini WSDL ile ve SOAP protokolünü kullanarak tanımlayabilirsiniz ... Yani, biraz daha sıkı çalışırsanız, tüm W3C standartları web hizmetleri protokol yığını REST olabilir !
Bu iyi bir başlangıç noktasıdır, çünkü tüm felsefi ve metodolojik tartışmaların geçici olarak önlendiği bir senaryo hayal edebiliriz. Benzer hizmetlerde teknik olarak "SOAP-REST" ile "SOAP-REST" karşılaştırılabilir,
SOAP-REST (= "REST-SOAP"): L.Mandel tarafından gösterildiği gibi , WSDL2 bir REST web hizmetini tanımlayabilir ve örneklenen XML'nin SOAP içine alınabileceğini varsayarsak tüm uygulama "SOAP-REST" olacaktır. .
SOAP-REST : SOAP olamaz herhangi bir REST web hizmeti ... Yani, iyi bilinen REST örneklerinin "% 90" ıdır. Bazıları XML kullanmaz (bunun yerine tipik AJAX REST'ler JSON kullanır), bazıları ise SOAP üstbilgileri veya kuralları olmadan başka bir XML yapısı kullanır. Not: Kayıt dışılığı önlemek için, karşılaştırmalarda REST seviye 2 olduğunu varsayabiliriz .
Tabii ki, daha kavramsal olarak karşılaştırmak için, farklı modelleme yaklaşımları olarak "NON-REST-SOAP" ile "NAP-SOAP-REST" karşılaştırınız. Yani, bu web hizmetleri sınıflandırmasını tamamlamak:
REST-SOAP : REST olamaz herhangi bir SOAP web hizmeti ... Yani, iyi bilinen SOAP örneklerinin "% 90" ıdır.
DİNLENMEYEN-NEITHER-SABUN : evet, "web hizmetleri modellemesi" evreni başka şeyleri de içerir (ör. XML-RPC ).
REST koşullarında SOAP
Karşılaştırılabilir şeylerin karşılaştırılması: SOAP-REST ile SOAP-REST .
Artıları
Bazı terimleri açıklamak,
Sözleşme istikrarı : her türlü sözleşme için ("yazılı sözleşmeler" olarak),
By standars kullanımı : tüm seviyeler W3C yığını karşılıklı uyumludur. Diğer yandan REST, bir W3C veya ISO standardı değildir ve hizmet çevre birimleri hakkında normatize ayrıntıları yoktur. Yani, ben , @DaveWoldrich (20 oy), @cynicalman (5), @Exitos (0) daha önce söylediğim gibi, STANDARTLAR İÇİN GEREKLİ olan bir bağlamda, SABUNA ihtiyacınız var.
By en iyi uygulamaların kullanımı : bir "Ayrıntılı yönüyle" W3C yığını uygulamaları, ilgili insan / yasal / juridic anlaşmaları çevirir.
Sağlamlık : SOAP yapısı ve başlıklarının güvenliği. Metada iletişimi (tam XML ifadesi ile) ve doğrulama ile herhangi bir değişikliğe veya gürültüye karşı bir "sigorta poliçeniz" vardır.
SOAP, "iletişim başarısızlıklarıyla ilgili işlemsel güvenilirlikle (...) ilgilenir. SOAP, yeniden deneme mantığı üzerinde daha fazla kontrole sahiptir ve bu nedenle uçtan uca güvenilirlik ve servis garantileri sağlayabilir", E. Terman .
Profesyonelleri popülerliğe göre sıralamak,
Daha iyi araçlar (~ 70 oy): SOAP şu anda daha iyi araçlar avantajına sahiptir, çünkü 2007 ve hala 2012, çünkü iyi tanımlanmış ve yaygın olarak kabul gören bir standarttır. Bakınız @MarkCidade (27 oy), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Standartlara uygunluk (25 oy): I , @DaveWoldrich (20 oy), @cynicalman (5), @Exitos (0) daha önce söylediğimiz gibi STANDARTLAR İÇİN GEREKLİ olan bir bağlamda, SABUNA ihtiyacınız var.
Sağlamlık : SOAP başlıklarının sigortası, @JohnSaunders (8 oy).
EKSİLERİ
SOAP yapılandırması daha karmaşıktır (300'den fazla oy): buradaki tüm cevaplar ve "SOAP vs REST" ile ilgili kaynaklar, SOAP'ın fazlalık ve karmaşıklığı ile bir dereceye kadar hoşnutsuzluk gösterir. Bu, resmi doğrulama (aşağıya bakınız) ve sağlamlık (yukarıya bakınız) gereksinimlerinin doğal bir sonucudur . "SABİT OLMAYAN SABUN" (ve XML-RPC, SOAP oluşturucu ) daha basit ve gayri resmi olabilir.
"Yalnızca XML" kısıtlaması, küçük hizmetler (~ 50 oy) kullanırken bir performans engelidir : bkz. Json.org/xml ve bu soru veya diğeri . Bu nokta @toluju (41) ve diğerleri tarafından gösterilir.
Not: JSON bir IETF standardı değildir , ancak web yazılımı topluluğu için fiili bir standart düşünebiliriz .
SOAP ile modelleme hizmetleri
Şimdi, biz ekleyebilir SABUN-OLMAYAN DİNLENME ile OLMAYAN SABUN-DİNLENME karşılaştırmalar ve açıklamak kullanım SOAP iyi olduğunda :
Standartlara ve istikrarlı sözleşmelere duyulan ihtiyaç (bkz. "PROS" bölümü). Not: @saille tarafından açıklanan tipik bir "standartlar için B2B gereksinimi" ne bakın .
Alet ihtiyacı (bkz. "PROS" bölümü). Not: standartlar ve resmi doğrulamaların varlığı (aşağıya bakınız), araç otomasyonu için önemli konulardır.
Paralel ağır işleme (aşağıdaki "Bağlam / Vakıflar" bölümüne bakın): daha büyük ve / veya daha yavaş süreçlerle, biraz daha karmaşık SOAP karmaşıklığı ne olursa olsun, güvenilirlik ve istikrar en iyi yatırımlardır.
Daha fazla güvenliğe ihtiyacınız var : HTTPS'den daha fazlası gerektiğinde ve gerçekten koruma için ek özelliklere ihtiyacınız olduğunda, SOAP daha iyi bir seçimdir ( bkz. @Bell , 32 oy). "İletiyi istek / yanıttan daha karmaşık bir yol boyunca veya HTTP içermeyen bir aktarım üzerinden gönderme", S. Seely . XML, XML Şifrelemesi , XML İmzası ve XML Kanonikleştirmesi için standartlar sunan temel bir sorundur ve yalnızca SOAP ile bu mekanizmaları WS-Security olarak kabul edilmiş bir standartta bir iletiye gömebilirsiniz .
Daha fazla esnekliğe ihtiyacınız var (daha az kısıtlama): SOAP, bir URI ile tam yazışma gerektirmez; nedd HTTP ile sınırlı değil; 4 fiil ile sınırlandırılmasına gerek yoktur. @TravisHeseman'ın (9 oy) dediği gibi, "gelişigüzel sayıda istemci teknolojisi ve kullanımı için esnek" bir şey istiyorsanız, SOAP kullanın.
PS: XML'nin JSON (ve ark.) 'Dan daha evrensel / anlamlı olduğunu unutmayın.
Resmi doğrulama ihtiyacı : W3C yığının resmi yöntemler kullandığını ve REST'in daha resmi olmadığını anlamak önemlidir . WSDL ( biçimsel dil ) hizmet açıklamanız, web hizmetleri arabirimlerinizin resmi bir özelliğidir ve SOAP, olası tüm WSDL reçetelerini kabul eden sağlam bir protokoldür.
BAĞLAM
Tarihi
Eğilimleri değerlendirmek için tarihsel perspektif gereklidir. Bu konu için 10 veya 15 yıllık bir bakış açısı ...
W3C standardizasyonundan önce bazı anarşi vardır. Farklı çerçevelerle birlikte çalışabilir hizmetler uygulamak zordu ve şirketler arasında birlikte çalışabilir bir şey uygulamak için daha zor, maliyetli ve zaman alıcıydı. W3C yığını standartları hafif, karmaşık web hizmetlerinin setlerinin karşılıklı operasyon için bir kuzey olmuştur.
AJAX uygulamak gibi günlük görevler için, SOAP ağırdır ... Yani, basit yaklaşımlara ihtiyaç yeni bir teori çerçevesi seçmek gerekir ... Ve Google, Amazon gibi büyük "Web yazılım oyuncuları", Yahoo ve arkadaşları, en iyi alternatif olan REST yaklaşımı seçtiler. Bu bağlamda REST kavramı bir "rakip çerçeve" olarak geldi ve bugün (2012'ler), bu alternatif programcılar için fiili bir standarttır .
temeller
Paralel Hesaplama bağlamında , web hizmetleri paralel alt görevler sağlar; ve SOAP gibi protokoller iyi senkronizasyon ve iletişim sağlar. "Herhangi bir görev" değil: web hizmetleri
kaba ve utanç verici paralellik olarak sınıflandırılabilir .
Görev büyüdükçe, daha az önemli "karmaşıklık tartışması" haline gelir ve iletişimin sağlamlığı ve sözleşmelerin sağlamlığı daha önemli hale gelir.