JSON, REST, SOAP, WSDL ve SOA: Hepsi nasıl birbirine bağlanır?


155

Şu anda bazı sınavlar yapıyorum ve bazı kavramlarla uğraşıyorum. Bunların hepsi notlarımda gerçekten 'bahsedildi' ama hepsinin nasıl birbirine bağlandığını gerçekten anlamadım. Anladığım kadarıyla:

SOA - hizmet tüketicilerinin / sağlayıcılarının iletişim kurmasını sağlayan bir çözüm. (anladığım kadarıyla, bu her şey için şemsiye terimdir)

WSDL - Sağlayıcı hizmetini tanımlayan bir dil.

SOAP - Servisler tarafından mesaj göndermek için kullanılan bir XML protokolü 'sarıcı'. Parametreler sağlamak için WSDL ile birlikte çalışır?

REST - İşlevdeki SOAP'a benzeyen ancak XML'den kaçınan bir tasarım deseni? (bundan gerçekten emin değilim)

JavaScript kullanan bir XML alternatifi? (bundan da emin değilim)

İnternette etrafa bakıldığında, bunların hepsinin ve bunların nasıl birbirine bağlandığının net bir tanımı yok gibi görünüyor.

Yanıtlar:


252

Bir web uygulaması geliştirdiğinizi ve işlevselliği uygulamanın sunumundan ayırmaya karar verdiğinizi düşünün, çünkü daha fazla özgürlük sağlar.

Bir API oluşturursunuz ve başkalarının da kendi ön uçlarını bunun üzerine uygulamasına izin verirsiniz. Burada az önce yaptığınız şey bir SOA metodolojisi uygulamak , yani web servislerini kullanmak.

Web hizmetleri, işlevsel yapı taşlarına platformlardan ve programlama dillerinden bağımsız olarak standart Internet protokolleri üzerinden erişilebilir olmasını sağlar.

Böylece, yararlı bir şeyin işlenmesini ve oluşturulmasını sağlayan arka uç (web hizmeti) ile herhangi bir şey olabilecek ön uç (verileri tüketen) arasında bir değişim mekanizması tasarlarsınız. (Bir web, mobil veya masaüstü uygulaması veya başka bir web hizmeti). Buradaki tek sınırlama, ön uç ve arka ucun "aynı" dili "" "konuşması gerektiğidir.


SOAP ve REST devreye giriyor. Web servisiyle iletişim kurmanın standart yoludur.

SABUN:

SOAP , verileri ileri geri göndermek için dahili olarak XML kullanır. SOAP iletilerinin katı yapısı vardır ve yanıt XML'sinin ayrıştırılması gerekir. WSDL , hangi isteklerin yapılabileceğinin, hangi parametrelerle ve ne döndürüleceğinin bir özelliğidir. API'nizin eksiksiz bir spesifikasyonudur.

DİNLENME:

REST bir tasarım konseptidir.

World Wide Web, REST mimari stiline uygun bir sistemin en büyük uygulamasını temsil eder.

SOAP kadar katı değil. RESTful web servisleri, web servisini aramak için standart URI'leri ve yöntemleri kullanır. Bir URI talep ettiğinizde, daha sonra işlemleri gerçekleştirebileceğiniz bir nesnenin temsilini döndürür (örn. GET, PUT, POST, DELETE). Verileri temsil etmek için XML seçmekle sınırlı değilsiniz, gerçekten herhangi bir şey seçebilirsiniz (JSON dahil)

Flickr'un REST API'sı daha da ileri gider ve görüntüleri de geri döndürmenizi sağlar.


JSON ve XML , işlevsel olarak eşdeğerdir ve ortak seçimlerdir. Protobuflara dayalı GRPC ve API üreticileri ve tüketicileri arasındaki iletişim için kullanılabilen Apache Thrift gibi RPC tabanlı çerçeveler de vardır. Web API'leri tarafından kullanılan en yaygın biçim, her dilde kullanımı ve ayrıştırılması nedeniyle JSON'dur.


36
JSON ve XML arasındaki ilişkiye kadar mükemmel yanıt. Daha dengeli bir sürüm: XML ve JSON, verileri serileştirmenin yoludur. XML daha esnektir ve etrafında tasarlanmış birçok standart vardır, ancak bazıları bunun çok karmaşık ve ayrıntılı olduğunu düşünmektedir. JSON, gayri resmi veri yapıları için kullanımı kolay olan birkaç temel yapıyı kısa yollarla tanımlayan daha basit bir biçimdir; bazı insanlar XML üzerinde var olanları çoğaltmak için standartlar üzerinde çalışıyorlar.
IMSoP

30

WSDL : Web Hizmeti Açıklama Dili anlamına gelir

SOAP'ta (basit nesne erişim protokolü), web hizmetini kullandığınızda ve projenize bir web hizmeti eklediğinizde, istemci uygulamalarınız web hizmeti İşlevleri hakkında bilgi sahibi değildir. Günümüzde bir şekilde eski moda ve her tür farklı istemci için farklı WSDLdosyalar uygulamanız gerekiyor . Örneğin, aynı dosyayı .Netve phpistemciyi kullanamazsınız . WSDLDosya web hizmeti işlevleri hakkında bazı açıklamalar vardır. Bu dosyanın türü XML. SOAPiçin bir alternatiftir REST.

REST : Temsil Devlet Transferi anlamına gelir

Başka bir API hizmeti türüdür, istemciler için kullanımı gerçekten kolaydır. WSDLDosyalar gibi özel dosya uzantılarına sahip olmaları gerekmez . CRUD işlemi farklı HTTP Verbs(Okuma için GET, Oluşturma için POST, Güncelleme için PUT veya PATCH ve istenen belgeyi Silme için DELETE) tarafından uygulanabilir, HTTPProtokole dayanır ve çoğu zaman yanıt JSONveya XMLformattadır. Öte yandan, istemci uygulaması tam olarak ilgili HTTP Verbparametre adları ve türleri aracılığıyla ilgili aramak gerekir . Tanımlama için özel bir dosyaya sahip olmadığı için WSDL, uç noktayı kullanan manuel bir iştir. Ancak bu büyük bir mesele değil çünkü artık farklı IDE'lerin istemci tarafı uygulamasını üretmesi için birçok eklentimiz var.

SOA : Hizmet Odaklı Mimari'nin Standları

Web hizmetleri kavramları ve mimarisi ile tüm programlamayı içerir. Büyük ölçekli bir uygulama uygulamak istediğinizi düşünün. Bir uygulama, mikro hizmetler olarak adlandırılan bazı farklı hizmetlere sahip olabilir ve tüm uygulama mekanizması, gerekli web hizmetini doğru zamanda çağırır. Hem RESTve SOAPweb hizmetleri tür vardır SOA.

JSON :javascript Object Notation

bir nesneyi javascript için serileştirdiğinizde, nesne biçimi türü JSON şeklindedir. insan sınıfına sahip olduğunuzu hayal edin:

class Human{
 string Name;
 string Family;
 int Age;
}

ve bu sınıftan bazı örnekleriniz var:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

h1 nesnesini JSON'a serileştirdiğinizde sonuç:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptbu biçimi eval()işleve göre değerlendirebilir ve bu JSONdizeden ilişkilendirilebilir bir dizi oluşturabilir . Bu, daha önce tarif ettiğim diğer kavramlara kıyasla farklı bir kavram.


Bu yanıt birkaç hata içeriyor (örn. HTML <> HTTP)
Yassin Hajaj

1
@YassinHajaj
Saman Gholami
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.