it-swarm.asia

RESTful mimarisinin artıları ve eksileri

REST artıları ve eksileri ile ilgili olarak gördüğüm en yaygın tartışma SOAP'a göre bu tartışmayı çerçevelemek eğilimindedir. Ben de hiçbir deneyimim yok. Şu anda yokluğumun olduğu bir kararla karşı karşıyayım benim için değerlendirmeyi zorlaştırıyor.Birçok bileşene sahip bir uygulama geliştirmeye başlıyorum - öncelikle sahibinin birkaç siteyi yönetmesine izin veren bir yönetimsel yönü - ve kullanıcının tutulan verilerle etkileşime girmesini sağlayan halka açık bir kullanıcı arayüzü İkinci parçanın herhangi bir yerde barındırılmasına izin vermek ve RESTful mimarisi ile eski ile iletişim kurmak için ya da her iki bileşenin de aynı Host üzerinde yer almasını talep etmenin sonuçlarını değerlendirmem gerekir. RESTful mimarisini geliştirmenin temel sonuçları nelerdir, özellikle aşağıdaki alanlardaki kapasitesi ile ilgili olarak:

1: Güvenlik 2: Performans 3: Arayüz karmaşıklığı

EDIT: Bu sorunun bazı cevapları bakarak - açıklığa kavuşturmak gerekir. SOAP - yerine REST uygulamaların tüm bileşenlerin bir Ana Bilgisayarda bulunduğu uygulamalara karşı bir bakış) karşılaştırması aramıyorum. (Bu cevaplar için teşekkürler) rağmen!)

20
sunwukung

Bu alanlar göz önüne alındığında, kabaca bir genel bakış sunabilirim, ancak sonuçlarınızı sizin için çıkaramıyorum. İki protokolün farklı olduğu iki ana alan vardır:

  • Mesaj biçimi
  • Hizmet keşfi

Mesaj formatını anlamak en kolay yoldur. Hem istek hem de yanıt için SOAP ambalajı oldukça ağırdır. Hem üstbilgi hem de gövde bölümü içeren SOAP zarfı var. Başlık, bir tür tanımlama, yetkilendirme vb. Gerçekleştirmek için istek zincirindeki birkaç filtre tarafından kullanılabilir. Bununla birlikte, XML'nin ayrıştırılması pahalıdır, bu da sisteminizin ölçeklenebilirliğine belirli bir ceza verir. Yığındaki SOAP işleme katmanına ne kadar bağlı olduğu.

Hizmet keşfi, muhtemelen en fazla çekişme yapacağınız yerdir. REST doğası gereği öngörülebilir bitiş noktaları sağlar ve isteğin içeriği basit bir HTTP isteğidir. Bunun yararı, ek bir ek yük olmamasıdır ve son kullanıcılar, sitenizin URL yapısını anladıktan sonra ihtiyaç duydukları şeyi nasıl yapacaklarını tahmin edebilirler. Tabii ki, saf güvenlik bilinçli insanlar bunu bir zayıflık olarak görecekler. Afterall, SOAP ile, uç noktaların ne olduğunu bilmek için bir WSDL tüketmelisiniz. Elbette, SOAP ile mesaj hedefinin tamamı verildi, böylece daha fazla hedefli saldırı yapabilirsiniz.

Verdiğiniz kategorilere göre ayrılmış:

Güvenlik

İkisi de doğal olarak diğerinden daha güvenli değildir. İyi güvenlik ilkeleri kullanın:

  • İletişimleri şifrele
  • İşleme koymadan önce kullanıcıların kimliğini doğruladığınızdan ve yetkilendirdiğinizden emin olun
  • Doğrudan saldırıları önlemek için iyi kodlama alışkanlıkları
  • Ve bu sadece kısa liste.

Belirsizliği hatırlayın! = Güvenlik.

Performans

Basit HTTP protokollerini izleyen istek nedeniyle hem ham performans hem de ölçeklenebilirlik REST konumuna gider. Çoğu SOAP yığını, SOAP yığınının ölçeklenebilirliğini büyük ölçüde artıran SAX ayrıştırma (olay tabanlı ayrıştırma) kullanır, ancak ek yük üzerinde ölçülebilir bir etki vardır. SOAP, XML ayrıştırma ek yüküne ek olarak normal HTTP işleme ek yüküne sahiptir. REST yalnızca HTTP işlem yüküne sahiptir.

Karmaşıklık

Sistemin bakış açısından, REST kazanır. Daha az hareketli parça, daha zayıf bir talep zinciri vb. Vardır. Bu, güvenilir hale getirmenin daha kolay olduğu anlamına gelir.

Programcının bakış açısından, kullandığınız SOAP veya çerçeve buna iyi destek sağlıyorsa IDE kazanabilir. Temel olarak, REST ile ön işleme işlemini (kimlik doğrulama/yetkilendirme/vb.) Gerçekleştirirken, SOAP ile bu işlemlerin çoğu takılabilir bir işlem zinciriyle gerçekleştirilebilir.

Tercihim

HTTP istekleri konusunda çok rahatım ve web'in nasıl çalıştığını biliyorum. Sonuç olarak, REST yaklaşımı benim için daha fazla tercih edilir. Ancak, bazı müşterilerimin bundan rahatsız olduğunu biliyorum. REST vs. SOAP vb. Güvenliği gösteren bazı endüstri makalelerini okudular. Sonuç olarak, her iki yaklaşım da güvenliği garanti etmiyor. Uygulamanın olması gerektiği kadar güvenli olduğundan emin olmak sizin elinizde. Açıkçası, bir sosyal web uygulaması bir banka veya hükümet sistemi kadar güvenlik talep etmez (veya arzu etmez). Pek çok SOAP yığını, güvenlik açısından bir görünüm sağlamak için takabileceğiniz işlemciler içerir, ancak bunları aramak ve yerine koymak hala sizin sorumluluğunuzdadır.

13
Berin Loritsch
  1. Güvenlik: HTTPS kullanın. Bu her ikisi için de geçerlidir.
  2. Performansı: . REST daha az CPU pahalıdır (daha az ayrıştırma, sıralama, açılma). Ayrıca, REST ile önbellek yapmak çok kolay.
  3. Karmaşıklık: REST kurulum açısından çok daha az talep ediyor, sonuçta sadece GET/POST. SOAP, bakımı için daha fazla yönetim gerektirir (wsdl vb.), Ancak IDE'niz destekliyorsa biraz daha kolaydır.

Bence [~ # ~] sabun [~ # ~] REST ve bazı içerik/mime türleri ile aynı şeyi yapabildiğinizde çok şişirilmiş. Ayrıca, SOAP, sarmalayıcıların doğası ve daha genel olması ve HTTP ile sınırlı olmaması nedeniyle çok fazla yük getirir. SOAP, IDE cihazınız düzgün bir şekilde destekliyorsa ve HTTP öğrenmek istemiyorsanız kullanmak için caziptir. Ama benim için REST kullanımı çok daha kolay ve çok daha web dostu.

Günümüzde, kullanılacak çok iyi REST API var. Java'ya giriyorsanız, Jax-RS gerçekten harika. Bazı kişiler için this porno gibidir.

12
Martin Wickman

Ben REST en büyük avantajı RPC mimarileri kırmak olduğunu düşünüyorum. REST süreçleri değil kaynakları ortaya çıkarır. Bu gevşek bağlı bir sistem oluşturmak için izin verir, nerede değişiklikler, gelişmeler ve hatta bir parçanın arızaları diğer parçalar üzerinde sınırlı (olumsuz) etkiye sahiptir.

Ne yazık ki, REST) yaygın bir kötüye kullanımı, iç veri yapılarınızı ortaya çıkarmaktır (en kötü durumda, veritabanınızın bir CRUD, ugh). çok güvenle yapmak zor. 'Doğru' kullanım, ele aldığınız sistemin parçasıyla ilgili yüksek düzeyli nesneleri ortaya çıkarmak ve tutarsızlık durumunda liberal olarak hata durum kodlarını döndürmektir.

REST 'ın sıklıkla göz ardı edilen bir diğer kısmı, çoğu fiilin idempotensidir. Sadece GET değil, aynı zamanda bir veya birkaç kez uygulanırsa PUT ve DELETE tam olarak aynı sonuç olmalıdır ( daha önce silinmişse 404 veya istemciyi aynı şekilde koyarsa 'değişiklik yok'). Bu, sağlam sistemlere ve anlambilimin tam yorumlarının daha az karşılıklı bağımlılığına yol açar.

8
Javier

WS- * standartları gerçekten RAP'yi SOAP/HTTP üzerinden çalıştırmakla ilgilidir. Böylece, CORBA ve J2EE ve seleflerine giren tüm düşünceler çoğunlukla XML'de aynı tür şeyleri yapmaya yöneldi. Bu, tür bildirimleri ve hizmet sözleşmeleri, meta veri değişimi, bildirici güvenlik vb. Açıkçası işletmede bile aşırı kullanılmış.

Sizin gibi bir internet web uygulaması oluşturan insanlar, RESTful mimarisini kullanmaktan kesinlikle daha iyi olurdu. Hemen hemen her platform onu ​​kullanabilir ve hangi spesifikasyonu kullandığınızı ve çok sayıda araca özgü tür dönüşüm tuhaflığı vb.

3
Jeremy

SOAP geçerli REST uygulamalara göre) büyük avantajı SOAP daha kolay bir şekilde kullanılabilir - çoğu RESTful istemcisi gerekir bana arayüzü anlamak ve bir tür bir istemci yazmak .. SOAP için, ben sadece wsdl.exe ona işaret ve benim için sınıf oluşturur.

0
Wyatt Barnett