SOAP'ın günümüzdeki önemi nedir?


51

En son SOAP tabanlı bir servisle karşılaştığımda, 2013 yılında bir finans firmasında staj yapmaktaydım. Kariyerime BT'de başladığım zamandı. Mühendislik dersimden birinde SOAP hakkında bazı çalışma materyalleri olduğunu hatırlıyorum. Bunun dışında, kariyerim boyunca SOAP'ı fazla kullanmadım.

Bunu, son görüşmelerden birinde "SOAP ve REST Arasındaki Fark" sorusu geldiğinden beri soruyorum. Bildiklerimden (ve Google’da bulduklarımdan) SOAP, iş mantığı ile yakından ilgili olan bilgi değişimi için müşteri ile sunucu arasında sıkı bir bağlantıya sahip bir protokoldür. Oysa REST, veri aktarımı için daha esnek durumsuz bir mimaridir.

SOAP ve REST arasındaki bu farktan yanılıyorsam biri beni düzeltebilir mi? Ayrıca, SOAP'ın bugünkü önemi nedir? İnsanlar hala yeni SOAP tabanlı API'ler mi geliştiriyorlar, yoksa şu anda çoğunlukla eski mi?



2
ayrıca bakınız: SOAP'ın Geleceği, REST
gnat

14
@gnat: Buna değer, bu soruların her ikisinde de cevapların hepsi korkunç.
Robert Harvey,

7
Gerçekten bir REST servisi gördün mü? Tek gördüğüm "sonunda HTTP fiillerinin ne anlama geldiğini öğrenen web servisleri". Neden birdenbire HTTP REST'i çağırıyoruz?
Luaan

8
@Luaan: Bu konuda ani bir şey yok; insanlar yıllardır "REST" terimini kötüye kullanıyorlar.
Monica

Yanıtlar:


58

REST gerçekten mimari bir tarz. SOAP bir veri protokolüdür. Ayrım önemlidir; onları doğrudan karşılaştıramazsınız.

REST'in temel amacı , internetteki kaynakları temsil etmek ve onları keşfetmek için mekanizmalar sağlamaktır. Buna karşılık, SOAP bilgisayarlar arasında yapılandırılmış veri iletimi için kullanılır ve gerçekte hepsi budur.

İnternet'teki iki bilgisayar arasında bir istemci / sunucu ilişkisi oluşturmak için aslında REST'e ihtiyacınız olmadığını unutmayın. İhtiyacınız olan tek şey JSON veya XML'i aktaran bir mekanizmadır ve başkalarıyla uyumsuz olmak için istekli olsanız bile buna ihtiyacınız yoktur.

Bununla birlikte, SOAP yeni, halka açık API'lerin lehine düşmüştür, bununla birlikte hala B2B uygulamaları için kullanılmaktadır, çünkü onunla bir "veri sözleşmesi" tanımlayabilirsiniz. JSON web servisleri oldukça hafif ve esnek olma özelliğini taşıyor ve Javascript, JSON'u yerel olarak tanıdığından, tarayıcılar için doğal bir seçim.

Fakat bunların hiçbirinin REST ile ilgisi yok, gerçekten.

İleri Okuma
REST, SOAP'tan daha mı iyidir? (İyi bir makale, yanlış bir şekilde REST protokolü çağırmasına rağmen).
Richardson Olgunluk Modeli


3
JSON web servislerinin katil özelliği, tarayıcıların XML ve SOAP için zayıf desteğe sahip olmaları ve JSON için (neredeyse) yerel desteğe sahip olmaları gerçeği olduğunu söyleyebilirim. SOAP'ın buna çok ihtiyacı var ama eğer bir SOAP servisine karşı AJAX talepleri yapamıyorsanız, o öldü. JavaScript / JSON internetin en küçük ortak payda haline geldi, bu yüzden büyük bir yarar kullanmak değil gerekirdi ve SABUN değil o çok daha iyi.
Luaan

3
@Luaan Tarayıcıların XML desteği yetersiz olduğunu söyleyemem. Aslında, bir XML HttpRequest yapmaktan ve ayrıştırılmış bir DOM'a sahip olan bir özniteliğe erişmekten daha iyisini elde etmek zordur . Bu sadece eğer birinin istediği tipik bir veri yapısıysa ve bir belge değilse, tarayıcıda veya başka bir ortamda olsanız da JSON daha uygun olur.
André Paramés

4
İhtiyacınız olan tek şey, JSON veya XML'i aktaran bir mekanizmadır ve başkalarıyla uyumsuz olmak istemeniz durumunda bile buna ihtiyacınız yoktur. -1: Bir istemciyi ve sunucuyu bağlamak istiyorsanız, her iki tarafın da xml, JSON kullanmak veya herkesle uyumlu olmakla ilgisi olmadığını anlayan keyfi bir protokole ihtiyacınız var. Json veya xml kullanmak bile herkesle ve hatta birisiyle uyumlu olduğunuzu garanti etmez. Json ve xml sadece veri formatlarıdır, başka bir şey değildir.
Paul Wasilewski,

6
@ PaulWasilewski: Evet, ben de öyle dedim. Kelimelere takılma. Herkesin JSON kullanmasının bir nedeni var; bu bir standart. Kullanımı, başkaları tarafından tanınan bir şey kullandığınızı garanti eder.
Robert Harvey,

3
@RobertHarvey, hayır yazdığın şey değil belki de demek istedin. JSON standart yani ne? CSV, Protcol Buffers, BSON ve diğerleri de standardize edilmiştir. Yani herkesin JSON kullanmasının nedeni çok çeşitlidir. Ve herkes JSON kullandığı için JSON kullananlar bile var;)
Paul Wasilewski

29

REST, gücü ve popülaritesinin nedeni olan SOAP'tan çok daha sınırlıdır.

SOAP'da izin verilen işlem kümesi ve izin verilen veri türü kümesi temelde sınırsızdır. SOAP, yerel API'leri ağda herhangi bir sadakatini kaybetmeden göstermek için kullandığınız uzak bir işlem protokolüdür. Bu, SOAP'ı, yol boyunca hiçbir doğruluk kaybetmeden ağ boyunca etkileşime girmek için karmaşık işlem sistemlerinin ihtiyaç duyduğu kurumsal ortamlarda popüler hale getirdi. Bu yetenek kabiliyeti, aynı zamanda SOAP'ın çöküşüdür, çünkü SOAP API'larını, şeyleri anlamlandırmak için WSDL ve SOAP istemci kütüphaneleri formundaki otomatik takımları zorunlu kılması gerektiğini anlamak ve kullanmak çok zahmetli kılar. Dahası, temel sistemin tam zenginliğini açığa çıkarmak, halka açık API'lerde çekici değildir; buradaki API'nızı kırmanıza veya versiyonunuza ayırmanıza gerek kalmadan temel sistemi geliştirmenizi sağlayan soyutlamalar sağlamak istersiniz.

REST + JSON, sadeliği nedeniyle özellikle popülerlik kazandı. API tasarımcının bu sınırlı kelime haznesi içine uyan soyutlamaları dikkatlice tasarlamasını ve gerçekten de iş alanının REST kaynaklarının eşleştirilmesi yoluyla düşünmesini gerektiren sınırlı veri kümeleriyle sınırlı bir dizi işlem tanımlar. Bir REST API'sinin herhangi bir özel alet kullanmadan anlaşılması ve kullanımı kolaydır. API kullanıcılarınızın her seviyede beceri ve bilgiye sahip olabileceği halka açık bir API için bu tam olarak istediğiniz şeydir, bu yüzden web'de gördüğünüz tüm API'lerin REST'e geçiş yapması gerekir. SOAP, hala karmaşık API'leri sistemler arasında paylaşma arzusu ve ihtiyacı olan kurumsal durumlara düşmektedir. Ancak,

Temel olarak, insanların fark ettikleri şey, API tasarımınıza uygulamanız gereken basit ve soyut olması için API tasarımınıza uygulamanız gereken sınırlamalar kümesinin, REST'in SOAP’ları etkili bir şekilde etkisizleştiren, tam olarak REST'in getirdiği kısıtlamalar kümesi olmasıdır. Sizi yalnızca olumsuz yanlarıyla bırakan faydalar. SOAP ile basitleştirilmiş bir API oluşturabilirsin, ama asla REST kadar kolay olamazdı, bu yüzden pratikte herkes sadece REST'i seçer.


4
Dinamik yazım tartışmasına karşı eski güzel statik, yay: D Asla bitmeyen bir savaş.
Luaan

@Luaan ... ve dynamic her zaman veri değişimi için kazanır. youtube.com/watch?v=ROor6_NGIWU
Jared Smith

6
@JaredSmith Kesinlikle katılmıyorum. Sözleşmelerin takip edilmesi gerekiyor, bu nedenle her iki uç noktanın da verileri doğru haritalandırması gerekiyor, eğer bunu hataya açık dokümantasyon sayfaları yerine meta veri yayınlama yoluyla yapabilirseniz neden yapmazsınız?
drake7707

1
Pratik REST bir protokoldür; Tez ve din “mimari tarz” dır. Bu cevap, pratik dinlendirmeyi pratik sabunla doğru şekilde karşılaştırır.
bmargulies

1
Cevabınız zaten REST anlamadığınızı ve yorum yaptığınızın altını çiziyor.
Paul Wasilewski

5

REST ve SOAP'ı karşılaştıramazsınız. REST mimari bir üslup iken, SOAP bir protokoldür.

Ne yazık ki, REST konuşma dili haline getirildi, RESTful HTTP servisi ile eşanlamlı hale geldi, bu REST tarz mimarisinin HTTP (uygulama) protokolü ile gerçekleştirilmesi anlamına geliyor.

REST, aşağıdaki prensiplere (kısıtlamalar ve unsurlar) dayanmaktadır (parantez içinde RESTful HTTP'de gerçekleşme) [1] .

  • Vatansızlık (HTTP vatansız bir protokoldür)
  • Kaynak (URI'ler tarafından tanımlandı)
  • Düzgün Arayüz (HTTP Yöntemleri)
  • Temsil (MIME TİPİ)
  • HATEOS (Köprüler)
  • Önbellek (HTTP Önbelleği)

Diğer taraftan birçok kişi SOAP söyleyerek demek W3C web hizmeti mimarisinin bir parçası olan WSDL ve SOAP dayanan bir web hizmeti [2] .

  • SOAP bilgi alışverişinde protokol olarak kullanılır (temel olarak yöntem adı, parametreler, dönüş değerleri, veri türleri, ...).
  • WSDL, web servisini tanımlamak için bir arayüz tanım dili.

SOAP * 'ın günümüzdeki önemi nedir?

SOAP bir W3C standardıdır ve W3C web servislerinde bilgi alışverişi formatı olarak kullanılır. Bu web hizmetleri - özellikle 2008 civarında (+ - 3 yıl) SOA'ların (hizmet odaklı mimariler) yazılması sırasında (ve - ne yazık ki) halen işletme uygulamalarında uygulanmaktadır.

Bunun birkaç nedeni var. O zaman RESTful HTTP iyi tanınmıyordu ve yanlış anlaşılıyordu. Ne yazık ki, hala yanlış anlaşılan diğer cevaplara bir göz atın

„[...] REST, SOAP [...] 'dan çok daha sınırlı.

EST REST'in temel amacı, internetteki kaynakları temsil etmektir [...]. “

Ek olarak, SOAP (ve WSDL), bir Web Hizmetini uygulamak için daha da fazla standart sağlayan W3C web servis protokolü yığınının bir parçasıdır.

İnsanlar hala yeni SOAP tabanlı API'ler mi geliştiriyorlar, yoksa şu anda çoğunlukla eski mi?

Öyleyse evet, hala var ve gelecekte SOAP kullanan sistemler de mevcut olacak (en azından kurumsal sistemlerde, çoğunlukla kapıların arkasında). Ancak çoğunluk bugünlerde bir çeşit "REST" yapmaya çalışıyor.

SOAP ve REST arasındaki bu farktan yanılıyorsam biri beni düzeltebilir mi?

REST’in veri aktarımı için daha esnek durumsuz bir mimari olduğunu söylemek iyi bir açıklama değildir. Basitçe konuşulursa REST, belirli kısıtlamaları ve unsurları içeren bir mimari tarzdır. Oysa SOAP bir bilgi değişim protokolüdür.

Daha önce de yazdığım gibi bunları karşılaştıramazsınız. Ancak bir RESTful HTTP Web Hizmetini bir SOAP / WSDL Web Hizmetiyle karşılaştırabilirsiniz.


"Ancak bir RESTful HTTP Web Hizmetini bir SOAP / WSDL Web Hizmeti ile karşılaştırabilirsiniz." Fakat OP'nin sorduğu şey bu. Buna henüz kimse cevap verdi mi?
RoboJ1M
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.