Nasıl huzurlu ve SOAP Web Hizmetleri uygulamada farklılık yok?

5 Cevap java

I am implementing web services for a PHP application and am trying to understand what both standard web services and RESTful web services have to offer. My intent is to write wrapper code to abstract away the web service details so that developers can just "instantiate remote objects" and use them. Here are my thoughts, perhaps some of you could add your experience and expand this:

RESTful Web Servcies

temelde sadece "XML talep üzerine beslenir", yani örn. Bu şekilde sunucu uygulamasını sorgulamak böylece bir istemci uygulaması için sarıcı kod yazabilirsiniz:

$users = Users::getUsers("state = 'CO'");
  • Bu da bir XML feed bir uzak URL oluşturacak alacağı
  • $ Kullanıcılara tam kullanıcı nesneleri bir koleksiyon haline, ya da olabilir
  • XML, ya da sol
  • vb bir dizi, dönüştü
  • sorgu komut dosyası ("devlet = 'CO'") sunucu tarafında SQL tercüme olurdu
  • Dinlendirici Web Hizmetleri genel olarak salt okunur müşteri görünümünde, POST kullanın veya örneğin, sunucu üzerinde değişiklik yapmak için GET olabilir kod yazabilirsiniz rağmen örneğin, güvenlik için şifreli bir belirteç geçen:

    $ Users = Kullanıcılar :: adduser ($ encryptedTrustToken, 'jim', $ encryptedPassword, 'James', 'Taylor');

ve bu sunucu uygulaması üzerinde yeni bir kullanıcı oluşturmak istiyorum.

Standard Web Services

Sonunda standart Web Servcies temelde aynı şeyi yapmak. Sahip oldukları tek avantajı istemci WSDL aracılığıyla ayrıntıları keşfetmek olabilir. Ben bir geliştirici, örneğini düzenlemek ve uzaktan nesneleri kaydetmenize olanak verir sarıcı kod yazmak istiyorum ama bunun dışında, ben hala sarıcı kodu uygulamak gerekir. SABUN bu yapabilirim, benim için herhangi yapmaz:

$soap = new nusoap_client('http://localhost/test/webservice_user.php?wsdl', true);
$user = $soap->getProxy(); 
$lastName = $user->lastName();

ama düzenlemek ve kaydetmek istiyorsanız:

$user->setLastName('Jones');
$user->save();

Sonra reaksiyona sokulması gibi gerek sunucu tarafında devletin tüm idare, SOAP her istemci için sunucu tarafında bu nesneyi tutmak için görünmüyor.

Belki (NuSOAP) kullanıyorum PHP SOAP uygulamasında sınırlamalar vardır. Belki Java ve. NET uygulamaları daha fazlasını yapın.

Bu bulutlar bazı temizlemek için görüşlerinizi işitme keyfine varacaksınız.

5 Cevap

Farklı modeller ... DİNLENME olan data-centric, SOAP olduğu-gibi operation-centric. yani SOAP ile sağduyulu işlemleri "SubmitOrder", vb sahip olma eğilimindedir; ancak REST ile size genellikle veri sorgulama nasıl hakkında çok daha fazla sıvı vardır.

SABUN da (bazen gerekli olan) çok daha fazla karmaşıklık ile ilişkili olma eğilimindedir - DİNLENME geri POX vb, ve YAGNI.


. NET açısından, "wsdl.exe" gibi araçları size bir SOAP hizmeti (ya da bir WCF hizmeti için "svcutil.exe") temsil eden bir tam istemci tarafı vekil kütüphane verecektir:

var someResult = proxy.SubmitOrder(...);

. NET ile REST, ben ADO.NET Data Services en belirgin oyuncu sanırım. Burada takım (datasvcutil.exe) size LINQ desteği ile tam istemci veri-bağlam verecektir. LINQ olduğunu. Karmaşık sorguları oluşturan NET'in nispeten yeni bir yoldur. Yani (güçlü / statik tip kontrolü ve intellisense) gibi bir şey:

var qry = from user in ctx.Users
          where user.State == 'CO'
          select user;

(Bu ADO.NET Data Services için uygun DİNLENME sözdizimi / tercüme edilecektir)

Ben Marc Gravell sözü ne yankılanan ediyorum. Insanlar REST hakkında bana sormak (ve genellikle SOAP ve SOA hakkında bir fikrim yok) zaman odaklı kaynak / veri olduğu gibi, ben onları = ROA DİNLENME anlatacağım, farklı bir paradigma ve bu nedenle farklı tasarım endişeleri vardır.

Seni doğru okuyorum eğer senin durumunda, size sarıcı kod yazarken kaçınmak istiyorsanız ve (ve tamamen geliştiricilerin gizli onlara sahip) uzaktan nesneleri ve onların özelliklerini saklayabileceğiniz bir çözüm gerekir. Ben gerçekten iyi bir çözüm önermek değil .. Umm, bu ya hiç gereksinimlerini karşılamak için yakın geliyor bana bildirin:

  1. EJB3 / JPA
  2. CouchDB (REST / json)

Ben yanlış soru yorumlanır ettik varsa bana da haber ver.

Biz XML-RPC ve SOAP karşılaştırırsanız, ikincisi size basit veri türleri ile ilgili olacak, ancak eski, ele daha iyi veri türlerini verecektir ama etki alanı nesneleri onları dönüştürmek için bir katman veya adaptör yazmak zorunda olacak.

yc

Sabun bir standartlar grubu tarafından kutsanmış XML şemaları kararlaştırılan sadece bir dizi olduğunu. It gücü birlikte işlerlik için tasarlanmış olduğunu ve birçok kurumsal sınıf özellikleri destekler. Herhangi bir platformda sabun aradığınız işlemleri vermeyecektir. Sen tasarlamak gerekir & bu özellikleri almak için hizmet sözleşmesi uygular.

Eğer ne Sabun veya DİNLENME için özellikle iyi uzak nesneleri istediğiniz gibi geliyor. Belki XML-RPC bakarak daha iyi olurdu.

Önemli farklılıklar temelde aletleri kapsar.

Yüksek son soap yığınlarının çoğu, DTO'ın / Belgeler ve RPC ile hemen hemen yalnızca çalışıyoruz nerede, geliştirici SOAP altyapı geniş toplu kefen.

([Vb DOM, haritalar, DTO sıralanırken,] formatları müzakere [XML, JSON, HTTP POST], sonuçları ayrıştırma) geliştirici HTTP üzerinden DİNLENME sizin üzerinize bu yükü daha fazla koyar.

Açıkçası, bu ayrıntı ile uğraşan kolaylaştırmak için mantık katmanı yazabilirsiniz. Ve bazı DİNLENME çerçeveler bu kolaylaştırmak için gelmiş, ancak bu tür servisleri kullanmak veya tüketmek istediğinizde anda, hala TODO listesinde bir görev.

Benim görüşüm uzak devlet istiyorsanız, web hizmetleri bahsetmiyoruz olmasıdır. Ben uzaktan devlet başa herhangi bir çağdaş model hakkında bilmiyorum. Ben uzaktan devlet gerekirse (takip etmek din olmadan) kendi üzerinde olduğunu düşünüyorum. Sadece buradan oraya xml atmak ve teoriyi umursamıyorum.

Ben uzak bir devlet kötü olduğunu eklemek gerekir. Eğer bunu önlemek.