Rest, Restful ve Soap kavramları

Web Servis Nedir ?

Web servisler platform bağımsız olmak üzere bir çok uygulama, cihaz ya da nodeun birbiri ile iletişim kurmalarını sağlayan yapılardır.

Rest ve Restful Kavramları

Rest, client-server arasındaki iletişimin HTTP protokolü sayesinde kolay ve hafif bir şekilde yapılmasını sağlayan bir mimaridir. Rest mimarisinde SOAP’da bulunan GetProduct , GetCategory gibi metotlar üzerinden iletişim kurulması yerine tüm bilgiler, URI’ler üzerinden sunulur.

Örn :  http://myserver/api/v1/products/1   gibi web linkleri düşünebiliriz.

Restful web servisleri ise , REST mimarisi temel alınarak geliştirilmiş oldukça hafif, genişletilebilir ve basit servislerdir. Restful servislerin amacı client-server arasındaki veri akışını platform bağımsız olarak gerçekleştirebilmek ve veri akışını en az yükle sağlayabilmektir.

Restful servisleri response tipi olarak JSON, HTML, XML gibi bir çok formatta çalışabilirler. Yapısının az yer kaplaması ve bir çok mobil platformda kullanışlı olmasından dolayı response tipi olarak JSON kullanılmaktadır.

Restful servisleri esnek ve kolay geliştiriebilir bunun yanında dil ve platform bağımsızdırlar. SOAP servislerinin aksine ekstra bir kütüphaneye ihtiyaç duymadan çalışabilirler.

Bir servisin restful olması için temel karakteristik prensipler vardır.

Client-Server yapısı : Client, server tarafındaki veri kaynağı ile ilgili hiç birşey bilmediği gibi, server da client hakkında birşey bilmemelidir. Server sadece kendisine gelen istekler doğrultusunda değer döner. Böylece server daha basit ve scalable olur.

Stateless :  Server tarafında client ile ilgili hiç bir bilginini tutulmamasıdır. Client tarafından gerçekleştirielecek olan her request, serverin response dönebilmesi için geçerli bilgiyi taşır. Client ayrımı ise clientin servera request geçme esnasında göndereceği bir token veya kimlik bilgisi ile gerçekleştirilir.

Cacheable : Tüm HTTP responselar client tarafından cachlenebilir olmalı. Veri tutarlılığını sağlayabilmek için ise server ilgili response bilgisini dönerken, ilgili verirnin cachelebilir olup olmadığını göndermesi gerekir.

Layered System : Clientın server yapısındaki hangi katmana bağlandığını bilmemesidir. Bu bir ara katmanda olabilir, son katmanda. Buradaki amaç ise serverlar arasında load-balancing yaparak ölçeklenebilirliği artırmak ve clientları bazı güvenlik politikalatına da zorlayabilmektedir.

Uniform Interface : Client ile server arasındaki ortak bir arayüzün(interface) olması ile birbirlerinden bağımsız bir şekilde geliştirilibliyor olurlar. Bir servisin RESTful olabilmesi için en önemli prensiplerden birisidir.

Soap Nedir ?

SOAP(en: Simple Access Protocol ,tr: Basit Nesne Erişim Protokolu) en temel anlamda, internet üzerinden küçük miktarda bilgileri yada mesajları aktarma protokoludur. SOAP mesajları XML formatındadırlar ve genellikle HTTP(Hyper Text Transfer Protocol) protokolu(bazende TCP/IP) kullanılarak gönderilirler. SOAP ,XML tabanlı kullanıma mecbur bırakır. Bu konuda esnek değildir.

WSDL(Web Services Description Language):

 SOAP isteklerini oluşturmak için de bir standart gerekmektedir. İşte burada WSDL devreye girmektedir. WSDL gerçekleştirilebilecek bütün SOAP isteklerinin kayıtarını tutan,  XML tabanlı web servisleri tanımlamak ve yerini belirtmek için tanımlanmış dildir. WSDL, W3C standardıdır. Bir anlamda dağıtık programlamada kullanılan IDL’e (Interface Definition Language – Arayüz Tanımlama Dili) benzer. Web servisi tanımı işlemler, giren ve çıkan mesaj formatları, ağ ve port adresleri gibi bilgileri tanımlar. Bir web servisi tanım belgesi aşağıdaki temel elemanları içerir:

  • Types : mesajlarda kullanılacak veri tiplerini belirtir.
  • Message : İletişimde kullanılacak measjları tanımlar.
  • PortType  : Web servisinin içerdiği işlemleri (methods) ve ilgili mesajları tanımlar.
  • Binding  : İşlem ve mesajlarda kullanılacak veri formatlarını tanımlar.
  • Port : Binding ve web adresinden oluşan servis noktasını tanımlar. Web adresi servisin çalıştırılacağı URL’dir.
  • Service : Kullanılan port’lar kümesidir.

Rest ile Soap Arasındaki Farklar

restful-vs-soap

  •  SOAP üzerinde güvenlik(security) sağlamak daha kolay ve hızlı şekilde olabiliyorken, bu durum REST için karmaşık olabiliyor. REST için güvenlik söz konusu olduğunda SOAP’a göre biraz zayıf kalmaktadır.
  • SOAP servisleri RPC(Remote Process Call yani uzaktaki bir prosedürün çağrılması) çalışma yöntemini kullanır, WS-* gibi güvenlik protokollerini içerisinde barındırır, state bilgisini request ve response’larda saklar.
  •  REST ile JSON, XML hatta TEXT ile çalışabiliyorken, SOAP ile XML kullanmalıyız. REST bu sayede daha kullanışlı olabiliyor.
  •  Eğer data boyutları uygulamanız için önem arz ediyorsa REST kullanmak sizin için uygun olacaktır.
  • Uygulamanızın daha hızlı çalışmasını istiyorsanız REST kullanmanız yararınıza olacaktır.
  • REST yaklaşımı HTTP metotlarını kullanarak işlerini görür. GET,POST,PUT,DELETE vs.
  • REST mimarisi SOAP’a göre oldukça esnektir ve hafiftir, taşınan veri miktarı daha azdır, entegrasyonu da daha kolaydır.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir