SOAP vs. REST API

GİRİŞ

Web servislerinde yeni olan geliştiricilerin seçim yapmadan önce bilmesi gereken bazı terimler bulunmakta. Bunlardan en çok karşılaşılan, daha geleneksel ve standartlara dayalı SOAP ile ona kıyasla daha yeni olan REST teknolojilerini, bilinmesi gereken artıları ve eksileriyle anlatmaya çalışacağım.

TANIM

SOAP(Simple Object Access Protocol – Basit Nesne Erişim Protokolu) , bilgileri yada mesajları aktaran işlemler yürütür. Method hazırlama, cevap ve hata mesajlarından oluşur. Bu bilgiler ve standartlar WSDL (Web Service definition Language) dosyası aracılığı ile sağlanır. SOAP mesaj yapısında Envelope, Body (payload kısmını içerir), Header ve Fault bölümleri bulunur. Döndürdüğü veri tipi XML formatındadır.

REST (Representational State Transfer), web protokolleri ve teknolojilerini kullanarak transfer sağlayan mimari bir yapıdır. REST prensiplerini (Uniform interface, Client–server, Stateless, Cacheable, Layered system, Code on demand) sağlayan sistemler, RESTful API olarak adlandırılır. İşlemler resource ile yapılır. REST servisler URI (Uniform Resource Identifier) ile ilgili metoda HTTP üzerinden istekte bulunur. İstenen veri türünde değer döndürülebilir.

SOAP REST FARKLARI

  • SOAP XML veri tipini destekler, REST; JSON, XML, TXT, HTML gibi istenen veri türüyle işlem yapabilir. SOAP bu konuda REST’e göre esnek değildir.
  • JSON veri tipiyle veri taşınması ve tutulması XML’den daha iyidir, çünkü veriyi daha küçük boyutlarda saklayabilir. REST, JSON veri tipiyle işlem yapabildiği için, veri tutma ve taşıma konusunda SOAP’den daha hızlıdır.
  • SOAP için WSDL ile tanımlama yapmak gerekir, REST için böyle bir zorunluluk bulunmaz. WADL<Web Application Description Language> REST için kullanılan, WSDL’e benzer bir yapı fakat kullanma zorunluluğu yoktur.
  • SOAP için birçok geliştirme aracı mevcuttur, REST için geliştirme araçlarına ihtiyaç duyulmaz, tasarlaması daha kolaydır.
  • SOAP; XML-Scheme kullanırken REST; URI-Scheme kullanı, metotlar için URI’ler tanımlanır.
  • REST HTTP metotlarını (GET, POST, PUT, DELETE) kullanır. SOAP Bir çok veri paylaşım protokollerini kullanılabilir. HTTP , SMTP , FTP vb.
  • Test ve hata ayıklama aşaması REST için daha kolaydır. Çünkü HTTP hatalarını döndürür ve bunlar bir araca ihtiyaç duyulmadan görülebilir. SOAP için hata ayıklama araçları gerekebilir.
  • REST basit HTTP GET metodunu kullandığı için Cache leme işlemi daha kolay. SOAP ile Cache leme yapabilmek için karmaşık XML requestleri yapılmalıdır.
  • İkisi de HTTPS (Güvenli HTTP) destekler, SOAP için WS-SECURITY adlı bir eklenti mevcuttur.
  • Güvenlik açısından SOAP REST’e göre daha gelişmiştir.
  • Dokümantasyon bakımından SOAP REST’e göre daha gelişmiştir.
  • Verimlilik, ölçeklenebilirlik ve kullanıcı tarafından algılanan performans açılarından bakıldığında REST, SOAP ‘tan daha iyidir.

HANGİSİ TERCİH EDİLMELİ?

Hangisinin seçileceği tamamen gereksinimin ne olduğuna bağlıdır. Örneğin, SOAP karmaşık API olan uygulamalar için, güvenlik seviyesinin gerekli olduğu formatlar için daha iyi bir seçim olabilir. Boyutu daha düşük veri ve dolayısıyla daha hızlı veri akışı gerçekleştirebilmek için, bant genişliğini ve kaynakları sınırlamaması için ise REST tercih edilebilir.