Web Servisleri, SOAP, UDDI, WSDL Nedir?

Web Servisleri, HTTP protokolü ile XML gönderip alarak iki uzak cihaz arasındaki iletişimi sağlayan bir haberleşme yöntemidir.

XML olması sayesinde değişik platformlar ve programlama dilleri arasında haberleşme sağlanabilir.

Web’in yaygınlaşmasından sonra farklı platformarın birbirleriyle haberleşme ihtiyacı artmıştır. Bunun için web uygulamaları geliştirilmiştir. Web sevisleri ile de web uygulamalarımız kendi fonksiyonalitelerini dış dünya ile paylaşabilir hale gelmiştir.

Web servislerinde veriler XML olarak tutulur ve SOAP kullanılarak bir yerden diğerine taşınır. Web servislerinin yapısı itibariyle farklı serverlardaki farklı platformlarda çalışan uygulamalar birbirleri ile haberleşebilirler.

Web Servislerinin 2 farklı kullanım şekli vardır :

  1. Uygulamaların sıkça ihtiyaç duydukları işler vardır. Bunları sürekli tekrar tekrar yapmaktansa servisler tarafından yapılıp uygulamalardan çağrılırlar. Örneğin hava durumunu anlık olarak öğrenen program gibi.
  2. Başka platformda çalışan bir uygulama ile haberleşilerek veri alış verişinde bulunulur.

Web Servisleri, Service Orianted Architecture (SOA)’nın implement edilmiş halidir.

SOA’da iki farklı yazılım birbirleriyle haberleşir. Bu yazılımlardan bir tanesi istemci bir tanesi ise sunucudur. İstemci sunucuya istekte bulunur, sunucu da istemciye cevabı döner.

Sunucular servis açıklamalarını özel bir dizinde tutarlar. İstemciler ise bu dizine sorgu çekerek aradıkları servis, servis sağlayıcısında var mı diye kontrol ederler.

Web Servis platformunda kullanılan standartlar şunlardır :

1-    SOAP : Simple Object Access Protokol

2-   UDDI : Universal Description, Discovery and Integration

3-   WSDL : Web Services Discription Language

SOAP :

HTTP üzerinden uygulamaların bilgi alış verişinin gerçekleşmesini sağlayan XML tabanlı bir protokoldür. Yani web servislere erişmek için kullanılan protokoldür diyebiliriz.

UDDI :

UDDI, web servislerini tanımlamak, interneti kullanarak iş servislerinin hangilerinin kullanılabilir olduğunun listelenmesi için kullanılan platform bağımsız bir frameworktür. Web servisleri hakkındaki bilgilerin depolandığı bir dizindir. İstemci ve sunucu ile SOAP ile haberleşir.

WSDL :

XML formatında yazılmış Web Service’lerin yerlerini, ne iş yaptıklarını yani metotlarını belirleyen bir dildir. 2007 yılında standart hale gelmiştir. 4 ana elemandan oluşur.

  • <types> : Web servis tarafından kullanılan veri tipleri belirlenir.
  • <message> : Web servis tarafından kullanılan mesajlar yazılır.
  • <portType> : Web servis tarafından gerçekleştirilen işlemler yazılır.
  • <binding> : Web servis tarafından kullanılan haberleşme protokolleri yazılır.

Ana Yapı

<definitions>
 
	<types>
	  tip açıklamaları ........
	</types>
 
	<message>
	  mesaj açıklamaları ........
	</message>
 
	<portType>
	  port açıklamaları .......
	</portType>
 
	<binding>
	  binding açıklamaları .......
	</binding>
 
</definitions>

Bir WSDL dokümanı bunların dışında başka elemanlar da içerebilir. Örneğin bir dokümanda birden fazla web servis tanımı yapılabilir.

WSDL İşlem Türleri :

En çok kullanılan yöntem request-response yöntemi olsa da  WSDL’de 4 çeşit işlem tipi vardır.

Tip Açıklama
One-way İşlem istek mesajını gönderir fakat cevap dönmez.
Request-response İşlem istek mesajını gönderir ve cevap döner.
Solicit-response İşlem istek mesajını gönderir ve cevap için bekler.
Notification İşlem istek mesajını gönderir fakat cevap için beklemez.



41964 defa okundu



12 Yorum “ “Web Servisleri, SOAP, UDDI, WSDL Nedir?”

  1. emre diyor ki:

    Simple Oriented Architecture’yi ilk defa duydum doğrusu, bir yazım hatası olabilir mi? Service Oriented Architecture’yi katettiniz diye anlıyorum.

  2. emrah diyor ki:

    Solicit-response İşlem istek mesajını gönderir ve cevap için bekler. bu konu hakkında biraz ayrıntılı bilgi vermeniz mümkün mü?

    • Erkin Pehlivan diyor ki:

      Bu yöntemde sunucunun istemciye yaptığı istek (output) ve istemcinin sunucuya döndüğü cevap (input) elemanları vardır.
      Örnek :
      —- Solicit-response —-
      <operation name=”metotIsmi”>
      <output message=”tns:onayla”/>
      <input message=”tns:onaylaResponse”/>
      </operation>

      output ve input sırasıya message etiketiyle şunun gibi tanımlanabilir :

      <message name=”onayla”></message>

      <message name=”onaylaResponse”>
      <part name=”status” type=”xsd:boolean”/>
      </message>

      İstek istemciye ulaşırsa true, ulaşmazsa false döner.
      Sunucu da dönen cevaba göre message nesnesi yaratır.

  3. aylin diyor ki:

    Merhabalar paylaşımlarınız için teşekkür ederim.Ben de wsdl’e 3 parametre gönderiyorum.Bunlardan 2 si string birisi stop tipinde bir array.Bunun için bir stop sınıfı oluşturdum.Bu sınıfın parametrelerinden birkaçı float birkaçı byte[] tipinde.Bunun için kvmSerializable kullanıyorum.Örneğin float tipindeki datayı kullanabilmek için aşağıdaki özelleştirilmiş sınıfı kullanıyorum.Ama byte[] için ne yapmam gerekir bilemiyorum.Yardımcı olursanız çok sevinirim.İyi çalışmalar.
    public class MarshalFloat implements Marshal
    {
    public Object readInstance(XmlPullParser parser, String namespace, String name,
    PropertyInfo expected) throws IOException, XmlPullParserException {
    return Float.parseFloat(parser.nextText());
    }
    public void register(SoapSerializationEnvelope cm) {
    cm.addMapping(cm.xsd, “float”, Float.class, this);
    }
    public void writeInstance(XmlSerializer writer, Object obj) throws IOException {
    writer.text(obj.toString());
    }
    }

  4. Onur Işık diyor ki:

    Merhabalar, bu konu ile ilgili bir sorunum var kodları aşağıdaki gibi yazdığımda herşey çalışıyor sorun yok ama sonuç yanlış dönüyor,rica etsem bilen bir arkadaş yardımcı olabilir mi?

    import net.webservicex.WeatherForecasts;

    public class WeatherForecast {

    public static void main(String[] args) {
    try{
    String zip = "60000";
    System.out.println("Min Temp : " + getWeatherByZipCode(zip));
    System.out.println("Max Temp : " + getWeatherByZipCode(zip).getDetails().getWeatherData().get(0).getMaxTemperatureC());

    }catch(Exception x){
    System.out.println("Bağlantı Kurulamadı");
    x.getMessage();
    }
    }

    private static WeatherForecasts getWeatherByZipCode(java.lang.String zipCode) {
    net.webservicex.WeatherForecast service = new net.webservicex.WeatherForecast();
    net.webservicex.WeatherForecastSoap port = service.getWeatherForecastSoap();
    return port.getWeatherByZipCode(zipCode);
    }
    }

  5. Tuğçe diyor ki:

    Ben soap ile bir web sitesinden veri çekmek istiyorum ama daha önce hiç web servis yazmadım.İlk olarak hangi adımları izlemeliyim acaba,yardımcı olur musunuz ?

    • Erkin Pehlivan diyor ki:

      Veri çekebilmeniz için önce bir servisin olması lazım. Yani yazılmış bir web service ve sizin isteği yapacağınız bir istemci projenizin olması gerekiyor.
      "Bir web sitesinden SOAP ile veri çekmek? " bu cümleyi anlayamadım.

  6. fatih diyor ki:

    merhaba bu konu hakkında bir sorum var, peki ben bu veb servisi veritabanından okuduğum bilgileri herhangi bir plcye yazmak için ne yapmam geriyor

  7. Nur diyor ki:

    Merhaba, soap kodlarını api kodlarına nasıl dönüştürebilirim ?

  8. Daody diyor ki:

    Merhaba.Öncellikle bu bilgiler için teşekkür ederim.Size bir sorum olacak.Web servislerin özellikleri nelerdir?

Yorum Yazmak İstiyorum

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

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>