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.
1. 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.
- Resource’ların net bir şekilde belirlenmesi : Uniform bir interface’de her resource net bir şekilde belirlenmiş ve ayrıştırılmış olmalıdır.
- Resource’ların manipulasyonu : Client net şekilde belirlenmiş resourceları uniform interface ve responseları kullanarak manipule edebilrmelidir.
- Yeterli tanımlayıcı mesajlar : Her resource temsili, mesajın nasıl işleneceğini açıklamaya yetecek kadar bilgi taşımalıdır. Ayrıca clientin kaynak üzerinde gerçekleştirebileceği ek eylemlere ilişkin bilgileri de sağlamalıdı
- Dinamik URI kullanımı : Client genel olarak URI’nin başlangıcını bilmeli kalan kısımları da farklı resourcelar için dinamik olarak yönetebilmelidir.
- Bir resource için bir urı : Sistemdeki bir resource’ın yalnızca bir mantıksal URI’si olmalı.
Bir geliştirici API’lerinizden birine aşina olduğunda diğer API’ler için de benzer bir yaklaşım izleyebilmelidir.
2. Stateless : Server tarafında client ile ilgili hiç bir bilginini tutulmamasıdır. Client tarafından gerçekleştirilecek 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.
3. 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. Client yalnızca resource URI’lerini bilmelidir. Server sadece kendisine gelen istekler doğrultusunda değer döner. Böylece server daha basit ve scalable olur. Client ve server gelişirken client ve server arasındaki interface/sözleşmenin bozulmadığından emin olmalıyız.
4. Cacheable : Veri tutarlılığını sağlayabilmek için ise server ilgili response bilgisini dönerken, ilgili verirnin cachelebilir olup olmadığını göndermesi gerekir. Yanıt cache’e alınabilirse, client uygulaması yanıt verilerini daha sonra eşdeğer istekler için ve belirli bir süre için yeniden kullanma hakkına sahip olur.
5. 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.
REST, API’leri A sunucusuna deploy ettiğiniz ve data storage işlemini B sunucusunda deploy ettiğiniz ve örneğin C Sunucusunda isteklerin authentication doğrulamasını yaptığınız katmanlı bir sistem mimarisi kullanmanıza olanak tanır. Bir client normalde yol boyunca doğrudan uç sunucuya mı yoksa bir aracıya mı bağlı olduğunu söyleyemez.
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.
Veri tipi tanımlar........
İletilecek olan verileri (mesajları) tanımlar....
Web servis işlevlerini tanımlar......
Web servise ait protokol ve çıktı biçimini tanımlar....
Rest ile Soap Arasındaki Farklar
- 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.
2 Responses
http://cagataykiziltan.net/rest-restful-soap/
[…] standartlarıyla ilgili detaylı yazıma buradan Rest Standartları […]