Makale Özeti

Xml Web Servislerine giriş.

Makale

XML Web Servisleri - 4

Konular:
• XML Web Servislerini Anlamak
• XML Web Servisleri Oluşturmak
• XML Web Servislerine İstemci Olmak
 

Xml Web Servislerine İstemci Olmak

 

Bir Xml Web Servisi oluşturduktan ve yayınladıktan sonra XML Web Servisinin adresini bilen ve XML Web Servisinin bulunduğu ağ ortamına erişimi olan her uygulama XML Web Servisinize istemci olabilir. XML Web Servisine istemci olan uygulama Web Servis İstemcisi diye bilinir.

 

Bir Web Servis İstemcisi bir bileşen, bir ASP.NET uygulaması, bir Windows uygulaması veya başka bir Web Servisi olabilir.

 

Bir XML Web Servisine istemci uygulamadan erişebilmek için aşağıdaki adımları uygulamanız gerekmektedir.

 

  • İstemci uygulamada istediğiniz XML Web Servisini bularak ona referans verin. (Project menüsünden Add Web Reference menü seçeneği ile)
  • Xml Web Servisi için bir aracı (proxy) sınıf oluşturun.
  • XML Web Servisi için oluşturduğunuz aracı sınıftan bir nesne türetin.
  • Oluşturulan bu nesnenin metodlarını kullanarak XML Web Servisi metodlarına erişin. Aracı sınıf isteklerinizi Web Servisine iletecek oradan dönen sonuçları dönecektir.

 

 

Web Referansı Eklemek

 

Bir XML Web Servisini kullanabilmek için ilk önce Web Servisinin konumu belirlemeniz gerekmektedir. Diğer bir programcı tarafında oluşturulmuş olan bir Web Servisini kullanabilmek için o XML Web Servisinin adresini bilmeniz gerekmektedir. Eğer bir Web Servisini arayarak bulacaksanız UDDI servislerini kullanarak istediğiniz hizmeti veren bir Web Servisi arayabilirsiniz. Visual Studio.NET ile projenizde kullanacağınız her Xml Web Servisi için Web Referansı eklemeniz gerekmektedir. Referans verdiğinizde XML Web Servisi için bir aracı sınıf oluşturulur. Bir web referansı kullandığınız XML Web Servisinin yerel bir sunum örneğidir.

 

Projenize web referansı eklemek için Add Web Reference dialog kutusu kullanılır. Bu diyalog kutus ile yerel bilgisayarınızdaki Web Servisleri, UDDI servislerini tarayabilir ve adresini bildiğiniz bir web servisine referans ekleyebilirsiniz. Add Web Reference diyalog kutusu XML Web Servisinin açıklama dosyasına istek yapar. Ve minik bir web tarayıcısında bu dosyayı gösterir.

 

 

 

Aracı (Proxy) Sınıfın Oluşturulması

 

 

Web Reference Name kutusuna uygun bir isim girdikten sonra Add Reference düğmesine tıklayarak bir web referans oluşturulur. Artık verilen Web Reference Name ismi içerisinde yer alan sınıf isimleri kullanılarak web servis kullanılır.

 

Oluşturulan aracı sınıfın her metodu çağrıldığında isteği XML Web Servisine aktaracak bir yapıya sahiptir. İstekleri XML Web Servisine iletir dönen sonuçları ise aracı sınıf olarak döndürür.

 

Visual Studio.NET aracı sınıfı oluşturmak için XML Web Servisinin WSDL dokümanını kullanılır. Add Reference düğmesine tıklandığında WSDL dokümanını indirir ve bu yapıya uygun biçimde aracı sınıfı oluşturur.

 

Eğer XML Web Servisine ağ ortamı üzerinden bağlanma şansınız yok ise elinizde sadece WSDL tanımlama dokümanı var ise yine aracı sını oluşturabilirsiniz. WSDL dokümanını kullanarak aracı sınıf oluşturmak için .NET Framework araçlarından WSDL.exe uygulaması kullanılır.

 

WSDL.exe uygulamasının konumu C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\WSDL.Exe gibi bir konumdur. Bilgisayarınızın ayarlarına göre uygulamanın yeri değişebilir.

 

Bu uygulamaya kısa yoldan ulaşmak için Başlat> All Programs (Programs)> Microsoft Visual Studio.NET 2003> Visual Studio.NET Tools> Visual Studio .NET 2003 Command Prompt menüsünden Visual Studio .NET 2003 Command Prompt linki açılır, açılan komut satırına WSDL.exe yazılarak WSDL.exe nin yardım bilgileri görüntülenir.

 

 

WSDL.exe uygulamasının bazı parametreleri

 

/language : Uygulamanın oluşturacağı aracı sınıfın dili. Alabileceği değerler.VB, CS, JS ’dir. Kısa azılımı /l:

/out : Oluşturulacak aracı sınıf kaynak kod dosyasının nereye oluşturulacağın belirler. Kısa yazılımı /o.

 

WSDL.exe çağrısından sonra parametrele yazılır ardından en son olarak WSDL tanım dosyasının yer aldığı disk yolu yada internet adresi yolu verilir.

 

Aşağıdaki parametreler ile WSDL.exe uygulaması http://localhost/webservice2/service1.asmx adresindeki web servisi için Visual Basic dilinde C:\Service1.vb konumunda bir aracı sınıf oluşur.

 

WSDL.exe /language:VB /out:c:\service1.vb http://localhost/webservice2/service1.asmx

 

Aşağıdaki WSDL.exe uygulaması çağrısıda anı işlemleri yapar. Tek farkı WSDL dosyasını webden değil disk üzerinden C:\Service1.wsdl adresinden alıyor olması.

 

WSDL.exe /language:VB /out:c:\service1.vb C:\Service1.wsdl

 

Aracı Sınıftan bir nesne türetmek

 

Oluşturulan aracı sınıf nesnesi kendi namespace hiyerarşisi içerisindedir. Bu yüzden aracı sınıflara erişken namespace hiyeraşisini göz önünde bulundurmak gerekmektedir. Namespace hiyerarşisini ya tam hiyeraşi referansı verdikten yada gerekli namespace’leri import ettikten sonra new anahtar kelimesi ile aracı sınıftan bir nesne türetilir.

 

Bir Web Servisine aracı nesne kullanarak erişmek

 

Aracı sınıf gelen metod çağrılarını XML Web Servisine dönmektedir. Xml Web Servisinden dönen değerleri de kendisi geri dönemektedir.

 

Aracı sınıftan türemiş bir nesne oluşturduktan sonra kolayca metolarına erişebilirsiniz. Ayrıca Visual Studio.NET IntelliSense desteği ile program yazmak  çok daha kolay olacaktır.

 

 

 

 

Bir Web Servisini Kullanmak için

 

Aşağıda kod bloğunda gözüktüğü gibi bir XML Web Servisini yayınladığınız varsayalım.

 

Imports System.Web.Services

<WebService(Namespace:="http://tempuri.org/")> _

Public Class hesapci

    Inherits System.Web.Services.WebService

 

    <WebMethod()> Public Function Topla(ByVal sayi1 As Integer, _

        ByVal sayi2 As Integer) As Integer

        Topla = sayi1 + sayi2

    End Function

    <WebMethod()> Public Function cikart(ByVal sayi1 As Integer, _

        ByVal sayi2 As Integer) As Integer

        cikart = sayi1 - sayi2

    End Function

    <WebMethod()> Public Function carp(ByVal sayi1 As Integer, _

        ByVal sayi2 As Integer) As Integer

        carp = sayi1 * sayi2

    End Function

    <WebMethod()> Public Function bol(ByVal sayi1 As Integer, _

        ByVal sayi2 As Integer) As Integer

        bol = sayi1 / sayi2

    End Function

End Class

 

Yukarıdaki şekilde bir web servisi oluşturuldu yayına kodu.

Özet Olarak
 

Adım Adım Bir Web Servisine İstemci Olmak

 

1.       XML Web Servisini kullanacak uygulamada Project menüsünden Add Web Reference seçeneği ile Add Web Reference diyalog kutusunu açıp Reference ekleyin.

2.       Açılan ekrandaki adres çubuğuna kullanmak istediğiniz XML Web Servisinin adrerisini girin.

3.       Go butonu tıklararak Xml Web servisinin yardım sayfasına ulaşın.

4.       Aynı diyalog kutusu üzerindeki XML Web Servisi için Web Reference Name özelliğini ayarlayıp Add Reference düğmesine tıklayın.

 

 

Xml Web Servisleriniz oluşturduktan ve yayınladıktan sonra XML Web Servisinin bulunduğu ağ ortamına erişimi olan her uygulama web servisine istemci olabilir.

 

Daha sonra web servisine referans vermek ve oluşan aracı sınıftan nesne türetip bu aracı nesne üzerinden xml web servisi ile alış verişi sağlayabiliriz.

 

Cengiz HAN
Microsoft ASP.NET MVP
msn (ve email) : cengiz@cengizhan.com
(eğer online isem çekinmeden mesaj atabilirsiniz.)
e-mail : cengizh@yazgelistir.com