Web Service Nedir?

API, ardından REST ve SOAP API ile başladığımız yazı serisine Web Service ile devam edeceğim. Ancak, öncesinde bazı temel konulardan bahsetmekte fayda var.

AA

TCP (Transmission Control Protocol)

Uygulamaların veri alışverişinde bulunabileceği bir network görüşmesinin nasıl kurulacağını ve yürütüleceğini tanımlayan bir standarttır. HTTP, HTTPS, SMTP, FTP, SFTP gibi veri iletim protokolleri TCP yapısı üzerinden çalışmaktadırlar. TCP, veri paketlerinin taşınmasında IP üzerinden işler. Bu süreci genel hatlarıyla ifade etmek gerekirse;

  • Hedef ile bir bağlantı oluşturulur,
  • Oluşturulan bağlantı üzerinden paketler aktarılır,
  • Paket transferi tamamlandığında bağlantı sonlandırılır.

HTTP (HyperText Transfer Protocol)

Sunucu (server) ile tarayıcı (browser) arasındaki ortak dildir. Bir web tarayıcısı ile görüntülenmek istenen alan adına istek (request) gönderilir, bu isteğe alan adı ile ilişkilendirilen sunucu 80 portu üzerinden, içeriğinde Header ve Body gibi bilgiler barındıran bir cevap (response) döner. Request işlemi doğrudan key ve value (query params) gönderilerek de gerçekleştirilebilir.

Postman UI / Header

Bu isteğe cevap olarak, HTTP 1.1 ve HTTP 1.2 gibi protokol, durum (status) ve sunucu bilgileri döner.

Web Service (Web Servisi)

Veri trafiğinin platform / cihaz bağımsız bir şekilde sağlandığını düşünün.

Gözünüzün önüne Facebook Messenger ve Twitter akışını getirebilirsiniz. Mesajlaşma esnasında web arayüzünün yanı sıra telefonunuzdaki uygulama ve saatiniz başta olmak üzere ilgili uygulamaya erişim sağlayan tüm platformlarda mesajlarınız anlık olarak güncellenmektedir. Aynı şey Twitter akışında da geçerlidir. Telefonunuzdan gönderdiğiniz bir tweet erişim sağladığınız cihazdan, uygulamadan ve/veya platformdan bağımsız olarak profilinizde görüntülenir. İşte bu noktada, web service için “İnternet veya özel ağlar (intranet) üzerinden kullanılabilen, dağıtık mimarili uygulamalar için düşünülmüş, platform bağımsız API” tanımını yapabiliriz.

Web Service

Unutmadan, bir kullanıcının HTTP üzerinden bir web servisini kullanması RPC şeklinde ifade edilir.

Web Service Çeşitleri

Temel anlamda, REST ve SOAP olmak üzere 2 çeşit web service olduğunu söyleyebiliriz. Detaylar için daha önce yayınladığım REST ve SOAP API Nedir? başlıklı yazıma hızlıca bir göz atabilirsiniz. Kısa bir özet yapmak gerekirse, REST ile pek çok türde veri biçimini (JSON, TXT, XML, HTML vb.) alıp gönderebilirken, SOAP ile sadece XML formatında işlemler yürütebiliriz. URI – URL – URN ve SPA yazılarında bahsi geçen dinamik URI işlemlerini hatırlayın; alanadi.com/book/{id}. İşte bu pratik yapı sayesinde, REST ile daha pratik işlemler gerçekleştirebilmekteyiz. İlgili diğer karşılaştırma notları, HTTP metotları ve durum kodları için kaynak yazıyı inceleyebilirsiniz.

Web servisleri elbette çeşitlilik de göstermektedir. OMG1, CORBA2, DCOM3 ve Java RMI4 bu anlamda benzerlik gösteren yapılardan bazılarıdır.

SOAP Servisler

SOAP servisler de yine TCP protokolü üzerinden işlemler yürütüler. Mesaj method hazırlama, cevap ve hata mesajından oluşur. Bu bilgilerin ve istenen standartların sunulduğu WSDL dosyası klavuz görevi görmektedir. Bu dosya bir uygulamanın bir web servisinin nasıl çağırılması gerektiği, arayüz, hangi protokollerin ve kodlama standartlarının kullanıldığı gibi bilgiler içerir. 2007 yılında bir standart haline gelmiştir.

SOAP mesaj yapısı XML yazım kurallarına uygun olarak şu bölümlerden oluşur:

  • Envelope, servis istek ve cevaplarının bilgilerini içerir. XML Root elemanı zorunluluktur. İçeriğinde Hader, Body ve Fault alanlarını barındırır.
  • Header, meta-data gibi bilgiler iletmeye yarar.
  • Body, istekte ve cevapta mesaj adı ve parametreleri barındırır.
  • Fault, istek sonucu bir hata var ise hata mesajını / durumu içerir.
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
  <soap:Fault>
  ...
  </soap:Fault>
</soap:Body>
</soap:Envelope>

REST Servisler

İşlemler resource ile yapılır. URI yazısında resource’a dair bilgiler iletmiştim. REST servisler URI ile ilgili metota HTTP üzerinden istekte bulunur. GET, POST, PUT, DELETE gibi HTTP metotları ile işlemler gerçekleştirilebilmektedir. SOAP gibi bir WDSL gerektirmez. REST servisler SOAP’a göre daha esnek ve hızlıdır.

Web Servis Platformlarında Kullanılan Diğer Standartlar

Diğer standartlarla ilgili de kısaca not düşmek gerekirse;

  • DISCO, sunucuda erişilebilir olan tüm web servislerinin organizasyonunu sağlar.
  • UDDI, web servisi bilgilerini tanımlama, yayınlama ve bulma işlemlerini tanımlayan bir standarttır.

Web Service Kullanımı

Tanımları yaptığımıza göre, neden web service kullanmamız gerektiğine dair de bir kaç kelam etmek uygun olacaktır.

  1. Haberleşen cihazlar, uygulamalar birbirlerinden bağımsız olsalar da iletişim halindedirler.
  2. Platform bağımsızdır. UNIX sistemindeki bir uygulama .NET ile geliştirilmiş bir uygulama ile kolaylıkla iletişim kurabilir.
  3. Uygulamaların fonksiyonları kullanıma açılabilir.
  4. Güvenli, pratik ve esnektir.