21 Eylül 2015 Pazartesi

Web Servis Nedir ? Ne Değildir ? Kimlere Web Servis Denir ?

Merhaba Arkadaşlar,

Web servisler için birçok tanım yapılabilir ama bence en kapsamlı ve açıklayıcı olanı herhalde şudur.

"Web Servisleri, açık protokoller ile iletişim kurmak için kullanılan xml tabanlı bağımsız ve kendini açıklayıcı uygulama bileşenleridir."

Yukarıdaki tanımı biraz kurcalayacak olursak, açık birden fazla protokol olacak bu protokoller arasında iletişim kurulmak istenecek ve biz bu iletişimi sağlamak için bir web servis yazacağız. Yazacağımız web servis xml tabanlı olacak, platform ve yazılım dili bağımsız olacak, kendi kendini tanımlayabilir yani ne demek istiyor burada demeyeceğimiz kadar açıklayıcı olacak.
Web servis tam da budur işte.

Web servis tanımını yaptığımıza göre, web servisler XML ve HTTP nin kombinasyonudur diyebiliriz. Ne demek şimdi ?
HTTP(Hypertext Transfer Protocol) Client - Server arasında kullanılan en yaygın haberleşme protokolüdür. Özellikle web üzerindeki haberleşmelerde. Ee bizim web servislerde XML(Extensible Markup Languagetabanlı değil miydi ? İşte bu yüzden XML ve HTTP kombinasyonudur diyebilir. XML tabanlı yazılıyor olması web servislerini platform ve programlama dili bağımsız hale getiriyor.
Bir web servis yazdınız diyelim, bu web servise php ile yazılmış bir web sitesinden, swift ile yazılmış bir ios projesinden, C# ile yazılmış bir masaüstü uygulamadan veya aklınıza gelen herhangi bir dil ile yazılmış başka bir uygulamadan erişebilirsiniz, kullanabilirsiniz.



Web servisler için farklı platformlar ve farklı kurallar kullanılabilir. Fakat en yaygın olarak kullanılanları şunlardır;

  1. SOAP(Simple Object Access Protocol)
  2. UDDI(Universal Description, Discovery and Integration) 
  3. WSDL(Web Service Description Language)

Biz burada SOAP web servislerden bahsettik ama RESTful web servislerde bulunmaktadır.
Peki nedir bu ikisi arasındaki farklar derseniz -ki deyiniz lütfen :) -

SOAP Web Servislerinin Avantajları;


  • Daha Güvenli : SOAP web servisler WS Security olarak bilinen kendine özgü güvenlik önlemleri barındırır.
  • Platform ve Programlama Dili Bağımsız : XML tabanlı olmasıına müteakip :) platform ve dil bağımsızdır.


Dezavantajları;


  • Yavaş : SOAP web servisler RESTful web servislere göre daha yavaş çalışma mekanizmasına sahiptirler. Bunun sebebi SOAP web servisler, güvenlik önlemlerinden dolayı ayrıştırılması gereken XML formatını kullanır ve bunu okunabilir şekilde parse etmek zorundadırlar. Bu işlem takip edilmesi gereken birçok prosedür, standart ve kural barındırıyor. Bu sebepten ötürü, SOAP web servisler daha yavaş çalışırlar ve daha fazla bant genişliği gereksinimine ihtiyaç duyarlar.
  • WSDL Bağımlılığı : SOAP web servisler bir servisi keşfedebilmek tanımlayabilmek ve çözümleyebilmek için yalnızca WSDL mekanizmasını kullanırlar. Bu da aslında istemediğimiz bir şekilde bir kurala veya standarta bağımlılık getiriyor.



Restful web servisleri için aynı şekilde inceleme yaptığımızda birinden olmayanın diğerinde olmasını bekliyoruz doğal olarak. :)


RESTful Web Servislerinin Avantajları;


  • Hızlı : RESTful web servisler SOAP web servislere göre daha hızlıdır. Çünkü herhangi bir bağımlılığı ve takip etmesi gereken herhangi bir kural ya da standart yoktur. Bu yüzden daha hızlıdır.
  • Platform ve Programlama Dili Bağımsız : XML tabanlı olmasıına müteakip :) platform ve dil bağımsızdır. SOAP web servisleri ile ortak özellik olarak düşünülebilir.
  • Farklı Formatlara İzin Verir (Bağımsız) : SOAP yalnızca XML veri formatına ve XML veri formatının bazı kurallara göre dönüştürülmesini zorunlu kılıyorken, RESTful web servisler JSON, HTML, TEXT gibi formatlara izin vermektedir. Bu da format bağımsızlığı sağlıyor diyebiliriz.
  • SOAP Kullanabilir :  Bu madde biraz garip gelebilir ama gerçek :) RESTful web servisler SOAP kullanabilirler. Bunun sebebi; RESTful web servisler bir mimaridir. SOAP ise bir protokoldür. Bu yüzden RESTful web servislerine SOAP implement edilerek kullanılabilir.


Dezavantajları;

  • Daha Az Güvenli : RESTful web servisler herhangi bir güvenlik önlemi barındırmamaktadır. Tabi yazılımı gerçekleştiren sizin almış olduğunuz önlemler başka. Burada bahsedilen kendisi herhangi bir önlemi zorunlu kılmamakta ve içerisinde barındırmamaktadır. 


Son olarak ufak bir teminolojiden bahsetsek faydalı olacaktır.
JAX-RS  : RESTful web servisler için kullanılan JAVA API dir.
JAX-WS : SOAP web servisler için kullanılan JAVA API dir.


Son olarak UDDI ve WSDL den bahsederek bitirelim.

UDDI (Universal Description, Discovery and Integration)
Adından da anlaşılacağı üzere, evrensel tanımlama, keşfetme ve entegre etme frameworküdür. Bu anahtar kelimelerle yola çıktığımızda, web servislerini evrensel dilde tanımlayan, interneti kullanarak keşfeden, listeleyen, hangilerinin entegre edilebilir olduğunu belirleyen ve dizinleri depolayan bir frameworktür. SOAP ve WSDL ile birlikte kullanılır.


WSDL(Web Service Description Language)
Yine adından anlaşılacağı üzere, web servislerini tanımlama dilidir. Basit manada XML formatlı bir dökümandır. Web servislerini, methodlarını, özelliklerini ve yerlerini tanımlar. WSDL dökümanlarında bulunması gereken 4 temel bileşen vardır. Bunlar;
<types>       : Servis tarafından kullanılacak veri tiplerini tanımlar.
<message>  : Servis tarafından kullanılacak mesaj içeriğini barındırır.
<binding>   : Servis tarafından kullanılacak port bilgisini barındırır.
<portType> : Servis tarafından kullanılacak method veya operasyonu barındırır.

Örnek bir WSDL dökümanı aşağıdaki gibi tanımlanabilir.

<message name="newTermValues">
  <part name="term" type="xs:string"/>
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="setTerm">
    <input name="newTerm" message="newTermValues"/>
  </operation>
</portType >

Hiç yorum yok:

Yorum Gönder