Webservis iki farklı uygulamanın veya cihazın WWW (World Wide Web) aracılığı ile iletişim kurabilmelerini sağlayan bir servis türüdür. Webservisler uygulamayı platform bağımsız yapmak için kullanılır.

Webservisler çeşitli uygulamaların birbirleri ile iletişim kurarak veri alışverişi yapmalarına izin verir. VB veya .NET ile geliştirilmiş bir uygulama Java ile yazılmış olan bir webservis ile iletişim kurarak veri alışverişi yapabilir.

Web Servis Rolleri

Web Servis Rolleri

Servis Sağlayıcısı (Service Provider): Servisin internet üzerinde erişilebilir olmasını sağlar.

Servis İstekçisi (Servis Requestor): Bu web servis hizmetinin herhangi bir kullanıcısıdır. İstekte bulunan ağ bağlantısı üzerinden var olan bir servise XML isteği göndererek kullanabilir.

Servis Kayıtçısı (UDDI): Servis kayıtçısı mantıksal olarak merkezleştirilen bir servis rehberidir. Geliştiricilerin yeni servisleri nereye publish edebilecekleri veya var olan bir servise nereden ulaşabileceklerine dair merkezi bir kayıt yeri sağlar. XML tabanlı webservis tanımlama, yayınlama ve bulma standardıdır.

Servis Tanımlayıcı (Service Description): Web servis mesajının alıcısı veya göndereni mutlaka aynı (service description) servis tanımına ulaşmalıdır. Bu nedenle gönderici doğru formatta mesaj gönderebilmek için ve alıcı doğru formatta mesaj alabilmek için service description’a ihtiyaç duyar. Gönderici ve alıcı aynı servis description’a sahip olduğu sürece iletişimi doğru şekilde yapabilir. Bunu WSDL (Web Service Description Language), Web Servis Tanımlayıcı Dil dosyaları ile yaparlar. Bu katman public arayüzü spesifik bir web servis olarak tanımlar.

Bir cihaz veya uygulama verisini diğer cihaz veya uygulamalar ile paylaşırken bunu bazı standartlara uyarak yapması gerekmektedir.

Bu iletişim standartlarından bazıları şunlardır:

  • Extensible Markup Language (XML) bilginin insanlar ve bilgi işlem sistemleri tarafından anlaşılabilir hale getirilmesini sağlar. W3C tarafından hazırlanmış bir standarttır. Farklı sistemler arasında veri alışverişini sağlayan bir formattır.
  • Universal Describe Discovery Integration (UDDI), Evrensel Tanım, Keşif ve Entegrasyon demektir. UDDI webservislerin dağıtık kayıtlarını ayrıntılı bir şekilde tanımlamaktır.
  • Soap Simple Object Access Protocol (SOAP), Basit Nesne Erişim Protokolü demektir ve Xml tabanlı cihazlar arası veri paylaşımı için bir mesajlaşma protokolüdür.

SOAP yapısı şu şekildedir:

  1. Envelope: SOAP yapısının temel kısmı diyebliriz. Header, Body ve Fault alanları bu tag’in içerisinde yer alır.
  2. Header: Başlık kısmı isminden de anlaşılacağı üzere bir başlık bilgisi, meta-data bilgisi eklenmek istenildiğinde kullanılabilir. Kullanımı zorunlu değildir.
  3. Body: İstek gönderilirken ve sunucudan cevap alınırken body kısmı kullanılır. Body kısmı mutlaka olmalıdır. Burada veri gönderilir ve dönen cevaplar XML formatında yazdırmak için kullanılır.
  4. Fault: Bu kısım gönderilen istek nedeniyle servis tarafında bir hata mesajı almak için kullanılır. İstek sonucu dönen hata bu kısımda görüntülenir.
Hesap Makinesi Web Servisi

Yukarıda bir hesap makinası web servisinin toplama işlemi metodu görülmektedir. Envelope tag’inin içerisinde Header kısmı görüldüğü üzere boş bulunmaktadır. Zorunlu bir alan olmadığı için bu kısma herhangi bir veri girilmemiş. Body kısmında ise görüleceği üzere gönderilecek olan değer alanları tanımlanmış. Burada iki tam sayı ile toplama yapma işlemi gerçekleştirilmekte ve tam sayı dışında ondalık sayı gibi bir değer girildiğinde servisden bir hata mesajı dönmektedir. Gönderilen istek sonucu dönen hata sağ kısımda Envelope> Body > Fault taginin içerisinde görülmektedir. Aşağıda bulunan görselde ise yapılan işlem başarılı bir şekilde gerçekleşmiş ve Body tag’i içerisinde addResult tag’i içerisinden yazdırılmıştır.

Hesap Makinesi Web Servisi 2

Burada istek gönderdiğimiz web servisimiz tarayıcıda açıldığında şu şekilde gözükmektedir. Burada Add metodu içerisinde isimleri intA ve intB olan iki adet integer değer aldığını görmekteyiz. İstek sonucu dönecek değerin ise AddResponse alanı içerisinde AddResult adı ile integer bir değer döndürmekte olduğunu görmekteyiz.

Tarayıcı Üzerinden Hesap Makinesi Web Servisinin Açılması

Webservis nedir ve yapısı nasıldır? konularını genel olarak anlatmaya çalıştım. Araştırma yaparken kullandığım ve bu konuda daha detaylı bilgiye ulaşmak isteyenler için linkleri aşağıya bırakıyorum.

Kaynak1: Tutorialspoint linki web servis ile ilgili detaylı ve anlaşılır bilgiye ulaşabileceğiniz bir kaynak.

Kaynak2: W3.org linki web servis ile ilgili detaylı ve yoğun bilgiye ulaşabileceğiniz bir kaynak.

Kaynak3: Hesap Makinesi Web Servisi yazımda SOAP yapısını anlatmak için kullandığım açık kaynak bir web servis. Siz de bu web servisi kullanarak, servis çalışma yapısını uygulamalı bir şekilde öğrenebilirsiniz.

Mühendislik kategorisindeki diğer yazılarımıza da okumanızı tavsiye ederiz!