C# Net Kullanarak Xml Web Service Oluşturmak( Net Xml Web Service Using C # to create)

25. April 2009

Read this article in your language IT | EN | DE | ES

 

 

XML Web Servisleri 1

 Konular:asp.net,

• XML Web Servislerini Anlamak

• XML Web Servisleri Olturmak

• XML Web Servislerine İstemci Olmak

XML Web Servislerini Anlamak

Xml Web Servisleri yazılan program kodunu çalıştıran bileşenlerdir. Sıradan bileşenlerden farkı bu işlevi farklı bilgisayarlara da sunmasıdır. XML Web Servislerine farklı bir bilgisayar ve fark bir platformdan istemci olunabilir.

Yani XML Web Servisleri fark platformalar arasında ortak olarak kullılanbilen bileşenlerdir. XML Web Servisleri ile fark platformlar arasında veri aktamada belli standartlar sayesinden oldua kolaylaşmaktadır.

XML Web Servisleri standart olan protokoller üzerinde çalışır. Bunlar, HTTP, XML, SOAP standartlardır. XML Web

Servisleri adından da anlaşıldığı gibi mesaj alış verişi için XML standardını kullanır. 

XML in bir standart olma ve herhangi bir platforma bağlı olmama sayesinde XML Web Servisleri fark platformların konmasını, veri alış verişini sağlar. Bu sayede uygulam geliştirme aşamasında programcılar fark sistemleri kullanan uygulamalar yazarken standartla kullanarak işlerini daha kolay bir şekilde yapabilirler.

 XML Web Servisleri HTTP protokolü üzerinden mesaj alış verişin yaptığı için internet üzerinden bir XML Web Servisine erişim yapılabilmektedir. Ek olarak bir intranetde de XML Web Servisi uygulamasu yapılabilir. Önemli olan XML Web Servisinin HTTP protokolü ile yani bir web sunucusu ile sunuluyor olmasıdır. Tabiki .NET Framework üzerinde programlanmış olan bir XML Web Servisinin sunulabilmesi için Internet Information Services (IIS) ve .NET Framework gerekmektedir.

 XML Web Servislerinin Alt Yapısı

 XML Web Servislerinin sağladığı faydalardan birisi XML Web Servisine istemci olacak ve o servisi kullanacak olan uygulamanın o servisin sadece adresini bilmesi yeterlidir. Bu şekilde servise eriştikten sonra XML Web Servisinin metodla çalıştırılabilir.

XML Web Servisleri Dizinleri

Yayında bulunan ve kaydedilm servisleri listeleyen merkezi noktalar, dizinler vardır. Bu dizinler sayesinde arama yapıp istediğiniz bir XML Web Servisine ulaşabilirsiniz. Bu dizinlerin XML Web Servislerini listelemesini belirleyen tamalamalara Universal Description, Discovery and Integration (UDDI) denir.

Çeşitli XML Web Servisleri dizinleri mevcuttur. Bunlardan bir tanesi Microsoft’un XML Web Servisi dizini olan, http://uddi.microsoft.com sitesidir. Bu dizinlerde istediğiniz şekilde XML Web Servisi arama yapabileceğiniz gibi XML Web Servislerinizide bu dizinlere kaydedebilirsiniz.

XML Web Servisleri Bulunması

Bu işlem ile istemciler XML Web Servislerini tamlayan (WSDL) dokümanların konumlarını alırlar. Bu adım ile istemciler XML Web Servislerinin konumları ile ilgili bilgi sahibi olurlar.

XML Web Servisleri Tanımlaması

Xml Web Servisi Tamlama XML Web Servisinin biçimi hakkında bilgileri içeren bir XML dokümanıdır. Bu doküman ile XML Web Servisi üzerinde yapılabilecek olan işlemler istemciye bildirilir.

XML Web Servisinin İşleyişi

 1. Eğer kullanılacak XML Web Servisinin adresi bilinmiyorsa bir UDDI dizini yardımı ile bir XML Web Servisi bulunur.

 2. Discovery dosyasına (.disco) yapılan istek ile web servisinin tamalama dosyasına yönlenilir.

 3. Web Servisinin açıklama dosya olan WSDL dosyasına istek yapılır. Servis biçimi öğrenilir.

 4. Artık XML Web Servisinin metodla çalıştırılmaya hazır olarak istemcinin hizmetindedir. XML Web Servisinin metodla çalıştırılır.

 Bir istemci UDDI aracılığı ile bir XML Web Servisine eriştiğinde UDDI servisi istemciye XML Web Servisinin discovery dosya olan .disco uzantılı dosyanın adresini döner. Bu .disco dosya XML Web Servisini tanımlayan kaynaklara link içerir.

 <?xml version="1.0" ?>

<disco:discovery xmlns:disco="http://schemas.xmlsoap.org/disco" xmlns:wsdl="http://schemas.xmlsoap.org/disco/wsdl">

<wsdl:contractRef ref="http://www.siteniz.com/Hesapci.asmx?WSDL"/>

</disco:discovery>

 İstemci .disco dokümanındaki bilgileri kullanarak sunucudan XML Web Servisi açıklama dosyasına istek yapar. Bu dosya WSDL dosyadır. WSDL (Web Services Description Language) XML tabanlı bir dosyadır ve istemcinin XML Wev Servisinin işlevlerini öğrenip etkileşime geçebilmesini sağlar.

Bir istemci XML Web Servisinin metodları çalıştırması için gerekli olan işlemler şunlardır.

1. İstemci yazılım istemci tarafında kalmak üzere bir nıf yapısı oluşturur. Bu sınıf XML Web Servisinin WSDL dosyanda tamlanan yapısına uygundur. Yani XML Web Servisinde hizmete açılan sınıfın yapısı ile ay yapıdadır. Buna aracı (proxy) nesne denir.

2. İstemci sunucu sıfın bir metodunu çağırır.

3. İstemcideki XML Web Servisi altyapısı metod çağrısını ve metodun parametrelerini SOAP mesajı olarak serialize eder. Ve bu mesajı XML Web Servisine yönlendirir.

4. Sunucudaki XML Web Servisi altyapısı gelen SOAP mesajını deserialize eder, nesnenin sunucu üzerinde bir örneğini oluşturur ve çağrı yapılan metoda parametreleri ile beraber çağrı yapar.

5. XML Web Servisi metodu çalıştırı ve geriye dönen değerleri altyaya döndürür.

6. XML Web Servisi altyası dönecek değeri SOAP mesajı olarak serialize eder ve bu mesajı ağ üzerinden istemciye gönderir.

7. İstemci bilgisayardaki altya gelen SOAP mesajı deserialize eder ve değerleri aracı (proxy) nesneye aktarır.

 8. Aracı (proxy) nesne ise aldığı değerleri kendi istemcisine aktarır.

 Bir XML Web Servisi oluşturabilmek için .NET Frameworkün bir bileşeni olan ASP.NET altyapısı kullanılır.

 XML Web Servisleri Oluşturmak

XML Web Servisi oluşturmak bir bileşen oluşturmaktan fark değildir. XML Web Servisleri ağ ortamının avantajı ağ ortamı üzerinden paylaşılabilir olmasıdır.

Visual Studio.NET ile Yeni Bir Web Servisi oluşturmak için:

1. File>New Project menü seçeneğine tıklayın.

2. Açılan New Project penceresinden uygulama geliştirmek istediğiniz dili seçtikten sonra ASP.NET Web Service seçeneğini seçerek OK butonuna basın.

3. Açılan projede .asmx uzantılı dosyalar web servisi uygulama dosyalarıdır.

 

 

 Web Servis Projesinde Yer alan dosyalar

 AssemblyInfo.vb : Bir assemblynin versiyon bilgisi gibi bilgilerini düzenlemek için kullanılan dosyadır. Tüm .NET

projelerinde yer alan bir dosyadır.

 Global.asax ve Global.asax.vb : Global.asax ve onun codebehind dosya olan Global.asax.vb dosya ile uygulama ve oturum bazında olay yönetimi yapılabilir. Bu dosya uygulamanın ana klaründe yer almalıdır.

 Service1.asmx ve Service1.asmx.vb : Bu iki dosya Service1.asmx ve codebehind dosya olan Service1.asmx.vb dosyala bir Web Servisini oluştururlar. Service1.asmxin görevi IIS tarafında Web Servisinin bulunabilmesini sağlamak ve Web Servisi için giriş nokta olmaktır.

Service1.asmx.vb dosya yazılan program kodları içeren dosyar. ASP.NET uygulamalarında olduğu gibi uygulama derlenince sonra olan .dll dosyasında bu kodlar yer alır.

Service1.asmx.vb dosyasının içeriği

Public Class Service1

Inherits System.Web.Services.WebService methodlar

methodlar

End Class

 

 

 Web Servislerinin codebehind dosyala System.Web.Services.WebService sınıfından miras alırlar.

 Web Servisi içerisindeki metodun intenet üzerinden sunulabilmesi <WebMethod()> özelliği ile nitelendirilmesi gerekmektedir.

 <WebMethod()> Public Function HelloWorld() As String

Return "Hello World" End Function

 Yukarıdaki kod bloğunda yazılan HelloWorld ismindeki fonksiyon web servisi üzerinden hizmete açılmış bir function tamlamasıdır. Bu fonksiyonun web servisinden sunulması sağlayan ifade <WebMetod()> ifadesidir.

Yeni Proje Açtığınız da olturulan Web Servisi dosyasının içeriği şu şekildedir.

 

  Bu şekilde bir WebServisi tamlamasını yapıp web üzerinden XML Web Servisi olarak sunulan bileşeninizi yaptığınızda ay bilgisayar üzerinden servise http://localhost/webservice1/service1.asmx şeklinde erişim yaptığınız zaman XML Web Servis alt yapı bir yardım sayfa sunacak ve servis üzerindeki metodla bu arabirim sayesinde listeleyip, test etmenizi sağlayacaktır. Bu sadece ay bilgisayar üzerinden erişimlerde çalışır.

Ayca açılan bu yardım sayfasında Web Servisindeki metodların bilgilerini sunan SOAP biçiminde XML

tamalamalarıda gözükmektedir.

 Servis Açıklama Sayfası

Bir XML Web Servisi için yapılan servis açıklamasına Web Services Description Language (WSDL) denir. Servis yardım sayfasında Service Description” isminde bir link gökmektedir. Bu link servisinde WSDL açıklamalarına link vermektedir. Bu linkin yolu aşağıdaki şekildedir.

http://sunucuadresi/servisdizini/service.asmx?WSDL gerçek bir örneğine bakarsak localhost üzerindeki WebService2

içindeki Service1.asm servisi için link şu şekilde olmalıdır. http://localhost/WebService2/Service1.asmx?WSDL

Bu adrese erişebilmek için yardım sayfasındaki linki kullanmak zorunlu değildir. Bu adresi web tarayıcısının adres kısmına yazıp, sayfaya istek yaptığınız zaman ay WSDL tamalamasını görebilirsiniz. Tabiki adresinde sonuna

?WSDL querystring ifadesini eklemeniz gerekmektedir.

Yeni oluşturulm ve içinde sadece HelloWorld isminde metodumuz olan bir XML Web Servisi için WSDL XML

doküma şu şekilde olacaktır.

<?xml version="1.0" encoding="utf-8"?>

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://tempuri.org/WebService2/Service1" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/WebService2/Service1" xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>

<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/WebService2/Service1">

<s:element name="HelloWorld">

<s:complexType />

</s:element>

<s:element name="HelloWorldResponse">

<s:complexType>

<s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

</s:schema>

</types>

<message name="HelloWorldSoapIn">

<part name="parameters" element="s0:HelloWorld" />

</message>

<message name="HelloWorldSoapOut">

<part name="parameters" element="s0:HelloWorldResponse" />

</message>

<portType name="Service1Soap">

<operation name="HelloWorld">

<input message="s0:HelloWorldSoapIn" />

<output message="s0:HelloWorldSoapOut" />

</operation>

</portType>

<binding name="Service1Soap" type="s0:Service1Soap">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

<operation name="HelloWorld">

<soap:operation soapAction="http://tempuri.org/WebService2/Service1/HelloWorld" style="document" />

<input>

 

<soap:body use="literal" />

</input>

<output>

<soap:body use="literal" />

</output>

</operation>

</binding>

<service name="Service1">

<port name="Service1Soap" binding="s0:Service1Soap">

<soap:address location="http://localhost/WebService2/Service1.asmx" />

</port>

</service>

</definitions>

 Bu dosyanın SOAP biçiminde düzenlenm bir XML dosyasıdır. XML Web Servisine daha sonra bir istemci olarak bağlanmak istediğinizde XML Web Servisi istemci altyapısı bu dosyadaki tamlamalara bakarak bir aracı (proxy) sınıf oluşturacak ve istemci tarafından bu XML Web Servisine erişilebilmesini sağlayacaktır.Bu aracı sınıfın oluşturulma işlemi Visual Studio.NET arabirimi ile referans verildiğinde yapılacaktır.

F0.05pt">akat Visual Studio.NET kullanmadan bir XML Web Servisine istemci olmak istiyorsanız.NET Frameworkün bir parçası olan WSDL.exe komut satırı uygulamasını kullanabilirsiniz.

Evet Arkadaşlar  bir makkalenin sonuna gelmiş olduk  yeni bir makkalede görüşmek üzere herkeze başarılar 

Saygılarımla Orhan Türk:

 

12455127.medium.jpg (33,06 kb)

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

ASP NET ,

Comments

4/8/2010 3:39:46 PM #
When you cannot make up your mind which of two evenly balanced courses of action you should take - choose the bolder.

Add comment


(Will show your Gravatar icon)

biuquote
  • Comment
  • Preview
Loading



Sayfa 0.031172 saniyede yuklendi.