WSDL Eğitimi: Web Hizmetleri DescriptÖrnekle İyon Dili

WSDL nedir?

Web Hizmetleri Descriptiyon Dili (WSDL), temel olarak istemci uygulamasına web hizmetinin ne yaptığını söyleyen XML tabanlı bir dosyadır. WSDL dosyası, web hizmetinin ne yaptığını kısaca açıklamak için kullanılır ve istemciye, web hizmetine bağlanmak ve web hizmeti tarafından sağlanan tüm işlevleri kullanmak için gereken tüm bilgileri verir.

Bu dersimizde web servislerinin en önemli parçası olan son noktaya, yani WSDL veya Web servisleri tanımlama diline odaklanacağız.

WSDL dosyası, web hizmetinin ne yaptığını kısaca açıklamak için kullanılır ve istemciye, web hizmetine bağlanmak ve web hizmeti tarafından sağlanan tüm işlevleri kullanmak için gereken tüm bilgileri verir.

WSDL Belgesinin Yapısı

Bir WSDL belgesi, bir web hizmetini tanımlamak için kullanılır. Bu açıklama, istemci uygulamalarının web hizmetinin gerçekte ne yaptığını anlayabilmesi için gereklidir.

  • WSDL dosyası web hizmetinin konumunu içerir ve
  • Web hizmetinin ortaya çıkardığı yöntemler.

WSDL dosyası herhangi bir kullanıcıya oldukça karmaşık görünebilir, ancak ilgili web servisini kullanmak için herhangi bir istemci uygulamasının ihtiyaç duyacağı tüm gerekli bilgileri içerir.

Aşağıda bir WSDL dosyasının genel yapısı verilmiştir

  • Tanım
  • TargetAd alanı
  • Veri tipleri
  • Mesajlar
  • Bağlantı noktası türü
  • bağlamaları
  • hizmet

Burada dikkat edilmesi gereken önemli noktalardan biri, iletilen mesajların tanımıdır. SABUN protokolü aslında WSDL belgesinde tanımlanmıştır.

WSDL belgesi aslında bir istemci uygulamasına, Web hizmeti tarafından gönderilen ve kabul edilen SOAP mesajlarının türlerinin ne olduğunu söyler.

Başka bir deyişle, WSDL, belirli bir konumun adresini içeren bir kartpostal gibidir. Adres, kartpostalı teslim eden kişinin ayrıntılarını sağlar. Dolayısıyla, aynı şekilde, WSDL dosyası, istemcinin istediği tüm işlevselliği sağlayabilen web hizmetinin adresini içeren kartpostaldır.

<!-- WSDL definition structure -->
<definitions     
		name="Guru99Service"
        targetNamespace=http://example.org/math/
        xmlns=http://schemas.xmlsoap.org/wsdl/>   
	<!-- abstract definitions -->   
		<types> ...    
			<message> ...   
			<portType> ...

   <!-- concrete definitions -->  
		<binding> ...   
		<service> ...
</definition>

Aşağıda bir WSDL dosyasının yapısının bir diyagramı bulunmaktadır

WSDL Belgesinin Yapısı
WSDL'nin yapısı

WSDL Öğeleri

WSDL dosyası aşağıdaki ana parçaları içerir

  1. The etiketi, istemci uygulaması ile web hizmeti arasında değiş tokuş edilen mesajda kullanılacak tüm karmaşık veri türlerini tanımlamak için kullanılır. Bu, istemci uygulamasının önemli bir yönüdür, çünkü web hizmeti karmaşık bir veri türüyle çalışıyorsa, istemci uygulaması karmaşık veri türünü nasıl işleyeceğini bilmelidir. Float, sayılar ve dizeler gibi veri türlerinin hepsi basit veri türleridir, ancak web hizmeti tarafından sağlanabilecek yapılandırılmış veri türleri de olabilir.
    Örneğin, "EmployeeName" adlı string türünde ve "EmployeeID" adlı number veya integer türünde 2 öğeye sahip EmployeeDataType adlı bir veri türü olabilir. Birlikte daha sonra karmaşık bir veri türü haline gelen bir veri yapısı oluştururlar.
  2. The etiketi, istemci uygulaması ile web sunucusu arasında alınıp verilen mesajı tanımlamak için kullanılır. Bu mesajlar web servisinin gerçekleştirebileceği giriş ve çıkış işlemlerini açıklayacaktır. Mesajın bir örneği, bir çalışanın Çalışan Kimliğini kabul eden bir mesaj olabilir ve çıkış mesajı, sağlanan EmpoyeeID'ye dayalı olarak çalışanın adı olabilir.
  3. The etiketi, her giriş ve çıkış mesajını tek bir mantıksal işlemde kapsüllemek için kullanılır. Dolayısıyla, bir istemci uygulamasından EmployeeID'yi kabul etme giriş mesajını ve ardından çıkış mesajı olarak EmployeeName'i göndermeyi içeren "GetEmployee" adlı bir işlem olabilir.
  4. The etiketi, işlemi belirli bağlantı noktası türüne bağlamak için kullanılır. Böylece istemci uygulaması ilgili port tipini çağırdığında bu port tipine bağlı işlemlere erişebilecektir. Bağlantı noktası türleri tıpkı arayüzler gibidir. Dolayısıyla, bir istemci uygulamasının bir web hizmetini kullanması gerekiyorsa, o web hizmeti tarafından sağlanan arayüze bağlanabildiğinden emin olmak için bağlama bilgilerini kullanması gerekir.
  5. The etiketi web hizmetinin kendisine verilen bir addır. Başlangıçta bir istemci uygulaması web servisine çağrı yaptığında bunu web servisinin adını çağırarak yapacaktır. Örneğin, bir web hizmeti aşağıdaki gibi bir adrese yerleştirilebilir: http://localhost/Guru99/Tutorial.asmx . Hizmet etiketi aslında şu şekilde tanımlanan URL'ye sahip olacaktır: http://localhost/Guru99/Tutorial.asmxBu aslında istemci uygulamasına bu konumda bir web hizmetinin mevcut olduğunu söyleyecektir.

Neden WSDL

Bir web hizmeti, günümüz web uygulamalarının oluşturulmasında önemli bir bileşendir. Temel amaçları, çeşitli programlama dilleri üzerine kurulu birden fazla uygulamanın birbiriyle konuşmasına olanak sağlamaktır. Örneğin, bir .Net web uygulamasının bir kullanıcıyla konuşmasını sağlayabiliriz. Java Web hizmeti aracılığıyla uygulama.

Bir web servisinin aşağıdaki temel özellikleri vardır

  • XML programlama dili kullanılarak oluşturulmuştur. .Net gibi günümüzün neredeyse tüm teknolojileri ve Java XML ile çalışma yeteneğine sahip karşılık gelen komutlara sahiptir. Bu nedenle XML, web servisleri oluşturmak için en uygun dil olarak kabul edildi.
  • Web servisleri HTTP üzerinden iletişim kurar. HTTP, tüm web tabanlı uygulamalar tarafından kullanılan bir protokoldür. Bu nedenle, Web hizmetlerinin de HTTP protokolü üzerinden çalışabilme yeteneğine sahip olmasını sağlamak mantıklıydı.
  • Web hizmetleri belirli bir dil spesifikasyonuna uygundur. Bu spesifikasyon, tüm web standartlarının yönetim organı olan W3C tarafından belirlenir.
  • Web servisleri, web servisini tanımlamak için kullanılan, WSDL olarak bilinen bir tanımlama diline sahiptir.

WSDL dosyası düz eski XML'de yazılmıştır. XML'de olmasının nedeni dosyanın herhangi bir programlama dili tarafından okunabilmesidir.

Yani istemci uygulaması .Net'te yazılmışsa XML dosyasını anlayacaktır. Benzer şekilde, istemci uygulaması Java programlama dilini kullanarak WSDL dosyasını da yorumlayabilecektir.

WSDL'ye ihtiyacınız var

WSDL dosyası her şeyi birbirine bağlayan şeydir. Yukarıdaki diyagramdan .Net dilinde bir web servisi oluşturabileceğinizi görebilirsiniz.

Yani hizmetin uygulandığı yer burasıdır. WSDL dosyasına sahip değilseniz ve bir Java Class'ta web hizmetini kullanmak istiyorsanız, bunu başarmak için çok fazla kodlama çalışması yapmanız gerekir.

Ancak artık her programlama dilinin anlayabileceği XML formatındaki WSDL dosyası ile artık kolaylıkla bir dosyaya sahip olabilirsiniz. Java sınıf .Net web hizmetini kullanır. Dolayısıyla kodlama çabası miktarı büyük ölçüde azalır.

WSDL Mesaj Bölümü

WSDL, "mesajlar" adı verilen ve şu şekilde gösterilen bir bölümden oluşur: eleman.

Bu öğe temel olarak web hizmeti ile istemci uygulaması arasında alınıp verilen verileri tanımlamak için kullanılır.

Her web hizmetinde her zaman 2 tür mesaj bulunur;

  • Biri web servisinin girişi, diğeri ise web servisinin çıkışı içindir.
  • Giriş, web hizmeti tarafından kabul edilen parametreleri tanımlamak için kullanılır. Bu, istemci uygulamasının web hizmetine parametre olarak gönderilecek değerleri bilmesi açısından önemli bir yönüdür.
  • Diğer mesaj türü ise web servisi tarafından hangi sonuçların sağlandığını bildiren çıktı mesajıdır.

Her mesajda sırasıyla bir Giriş ve çıkış mesajı tarafından kullanılan parametreyi tanımlamak için kullanılan öğe.

Aşağıda bir web hizmetine yönelik bir mesajın nasıl göründüğüne dair basit bir örnek verilmiştir. Web hizmetinin işlevi, web hizmetine parametre olarak bir "Eğitim Kimliği" gönderildiğinde "Eğitim"in adını sağlamaktır.

WSDL Mesaj Bölümü

  1. Görebildiğimiz gibi web servisinde biri giriş, diğeri çıkış için olmak üzere 2 mesaj bulunmaktadır.
  2. Giriş mesajı, TutorialID adı verilen bir parametreye sahip olan TutorialNameRequest olarak bilinir. Bu parametre, xsd:number türü tarafından belirtilen sayı türündedir
  3. Çıkış mesajı, TutorialName adında bir parametreye sahip olan TutorialNameResponse olarak bilinir. Bu parametre, xsd:string türü tarafından belirtilen dize türündedir

Bağlantı Noktası Türü Bağlama

Bağlantı noktaları WSDL'de web hizmeti tarafından sunulan tam bir işlemi tanımlamak için kullanılır.

Bir önceki konu başlığımızda web servisimizin biri “TutorialNameRequest” adlı girdiye, diğeri “TutorialNameResponse” adlı çıktıya olmak üzere 2 mesaj sağladığını görmüştük. Giriş ve çıkış mesaj formu birlikte tam bir işlem olarak bilinir.

WSDL, adı verilen bir öğe sağlar Web hizmeti tarafından sağlanan işlemleri tanımlamak için kullanılır.

Bağlantı Noktası Türü Bağlama

Yukarıdaki örneğimizde şunları görebiliriz:

  1. İşlemi kapsayan port Type'ın adı “Tutorial_PortType” olarak verilmiştir.
  2. Operasyonun kendisine “Eğitim” adı verilmiştir. Dolayısıyla, eğer TutorialID bir giriş parametresi olarak verilirse, işlemimiz temel olarak bir TutorialName sağlar.
  3. Sırada biri giriş için, diğeri operasyonumuzu oluşturan çıkış için olmak üzere 2 mesajımız var.

Ek olarak, unsuru da var Mesajların nasıl aktarılacağını tanımlamak için kullanılan öğe.

Bağlantı Noktası Türü Bağlama

  1. Yukarıdaki örnek, bağlamanın, bizim durumumuzda "TutorialSoapBinding" olarak verilen bir bağlama adından oluştuğunu göstermektedir. Basit anlamda bağlama, istemci uygulamasının kendisini gerçekten web hizmetine bağlamak için kullandığı bilgilerdir. Web servisine gerçekten bağlandıktan sonra, web servisinin sunduğu çeşitli işlemleri çağırma yeteneğine sahip olur.
  2. Taşıma katmanı http:// olarak verilmiştir, bu da mesajların HTTP protokolü üzerinden aktarılacağı anlamına gelir.

WSDL Dosyası Oluşturma

WSDL dosyası, herhangi bir programlama dilinde bir web hizmeti oluşturulduğunda oluşturulur.

WSDL dosyasının sıfırdan oluşturulması oldukça karmaşık olduğundan, Visual Studio for .Net ve Eclipse için Java WSDL dosyasını otomatik olarak oluşturun.

Aşağıda Visual Studio'da oluşturulmuş bir WSDL dosyasının örneği gösterilmektedir.

<?xml version="1.0"?>
<definitions name="Tutorial"             
		targetNamespace=http://Guru99.com/Tutorial.wsdl           
        xmlns:tns=http://Guru99.com/Tutorial.wsdl            
        xmlns:xsd1=http://Guru99.com/Tutorial.xsd           
        xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
        xmlns="http://schemas.xmlsoap.org/wsdl/"> 
   <types>    
   		<schema targetNamespace=http://Guru99.com/Tutorial.xsd    
        xmlns="http://www.w3.org/2000/10/XMLSchema">
        
        <element name="TutorialNameRequest">       
        	<complexType>         
            	<all>            
                	<element name="TutorialName" type="string"/>        
                </all>      
            </complexType>     
       </element>    
       <element name="TutorialIDRequest">       
       		<complexType>           
            	<all>           
                	<element name="TutorialID" type="number"/>         
                </all>      
            </complexType>     
       </element>    
    </schema>
 </types>  
 <message name="GetTutorialNameInput">   
 	<part name="body" element="xsd1:TutorialIDRequest"/>  
 </message> 
 <message name="GetTutorialNameOutput">  
 	<part name="body" element="xsd1:TutorialNameRequest"/>
 </message> 
 <portType name="TutorialPortType">  
 	<operation name="GetTutorialName">    
    	<input message="tns:GetTutorialNameInput"/>     
        <output message="tns:GetTutorialNameOutput"/>   
    </operation>  
  </portType> 
  <binding name="TutorialSoapBinding" type="tns:TutorialPortType">  
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>  
 	 <operation name="GetTutorialName">    
  		<soap:operation soapAction="http://Guru99.com/GetTutorialName"/>   
        	<input>   
            	<soap:body use="literal"/>   
            </input>  
        <output>      
   <soap:body use="literal"/>   
 </output>   
 </operation>  
 </binding>  
 
 <service name="TutorialService">   
 	<documentation>TutorialService</documentation>  
    <port name="TutorialPort" binding="tns:TutorialSoapBinding">     
    	<soap:address location="http://Guru99.com/Tutorial"/>
    </port>
 </service>
</definitions>

Yukarıdaki WSDL dosyası herhangi bir kullanıcı için çok korkutucu görünüyor, sonraki eğitimlerde farklı bölümleri ayrıntılı olarak ele alacağız, ancak şimdilik WSDL dosyasının her bölümünün gerçekte ne yaptığına özet bir göz atalım

Web Hizmeti Örneğini Yayımlama

Şimdi Visual Studio'yu kullanarak bir web servisini nasıl yayınlayabileceğimize ve tüketebileceğimize dair bir örneğe bakalım.

Bu örnekte tek WebMethod ile bir web hizmeti oluşturacağız. Bu yöntem “TutorialID” adı verilen bir Tamsayı parametresini kabul edecektir. Web yöntemi daha sonra “Web Hizmetleri” adı verilen bir dize döndürecektir.

Daha sonra bu web servisini tüketecek ve buna göre web yöntemimizi çağıracak konsol tabanlı bir uygulama oluşturacağız.

Bu örneği gerçekleştirmek için gerekli adımlara bakalım.

) 1 Adım İlk adım web hizmetinizi oluşturmaktır. Nasıl yapılacağına dair ayrıntılı adımlar Asp.Net web projesi ve web servisinin nasıl oluşturulduğu anlatıldı İşte; Projeyi ve web servisini buna göre oluşturmak için lütfen aynı adımları izleyin. Anahtar kısım Web servisleri dosyasına aşağıdaki kodu girmektir.

Web Hizmeti Örneğini Yayımlama

namespace webservic asmx
{
	[WebService(Name = "Guru99 Web service")]
	public class TutorialService : System.Web.Services.WebService
	{
		[WebMethod]
		public string GetTutorialService(int TutoriallD)
		{
			string TutorialName = "Web Services";
			return TutorialName;
		}
	}
}

Kod Açıklaması:

  1. Burada “Guru99WebService” adında bir WebMethod oluşturuyoruz. Bu web yönteminde, bu web yöntemi her çağrıldığında iletilmesi gereken bir tamsayı parametresini dahil ediyoruz.
  2. Daha sonra “Web Hizmetleri”nin dize değerini tutacak “TutorialName” adında bir değişken tanımlıyoruz. Bu, web hizmeti çağrıldığında döndürülecek değerdir.

) 2 Adım Web servisleri dosyasını tanımladıktan sonraki adım, bu web servisini kullanacak bir istemci projesi oluşturmaktır.

Bu web servisini çağıracak, “Guru99WebService”i çağıracak ve ardından web yönteminin çıktısını konsol günlük ekranında görüntüleyecek basit bir konsol uygulaması oluşturalım. Konsol uygulaması oluşturmak için aşağıdaki adımları izleyin.

Visual Studio çözüm dosyasına sağ tıklayın ve Ekle->Yeni proje seçeneğini seçin

Web Hizmeti Örneğini Yayımlama

Adım3) Bu adımda,

  1. İlk önce Görsel'i seçtiğinizden emin olun. C# Windows seçenek. Ardından konsol uygulaması oluşturma seçeneğini seçin.
  2. Bizim durumumuzda “DemoApplication” olarak verilen projenize bir isim verin.

Web Hizmeti Örneğini Yayımlama

Yukarıdaki ekranda Tamam butonuna tıkladıktan sonra Visual Studio'da Çözüm gezgininde projenizi görebileceksiniz.

Web Hizmeti Örneğini Yayımlama

) 4 Adım Bu adımda, DemoApplication Console uygulamasını başlangıç ​​projesi olarak ayarlayacaksınız. Bu, tüm Visual Studio projesi çalıştırıldığında bu uygulamanın ilk olarak başlatılmasını sağlamak için yapılır. Bu Console uygulaması, Visual Studio tarafından otomatik olarak başlatılacak olan web servisini çağıracaktır.

Bu adımı tamamlamak için DemoApplication projesine sağ tıklayın ve “Başlangıç ​​Projesi Olarak Ayarla” seçeneğini seçin.

Web Hizmeti Örneğini Yayımlama

) 5 Adım Bir sonraki adım “Guru99Webservice”imizin hizmet referansını konsol uygulamamıza eklemek olacaktır. Bu, DemoApplication'ın web hizmetine ve web hizmetindeki tüm web yöntemlerine referans verebilmesi için yapılır.

Bunu yapmak için DemoApplication proje dosyasına sağ tıklayın ve Ekle->Hizmet Referansı menü seçeneğini seçin.

Web Hizmeti Örneğini Yayımlama

) 6 Adım Bu adımda hizmet referansımızı eklemek için gereken farklı değerleri sağlayacağız.

  1. Öncelikle keşfet seçeneğimizi seçmemiz gerekiyor. Bu seçenek, TutorialService web hizmetimiz için WSDL dosyasını otomatik olarak alacaktır.
  2. Daha sonra servis referansımıza bir isim vermeliyiz. Bizim durumumuzda buna Guru99Webservice adını veriyoruz.
  3. Daha sonra TutorialService.asmx seçeneğini genişletmemiz gerekiyor, böylece sağ tarafta 'GetTutorialService' metodunu görebilme yeteneğine sahip olabiliriz. Burada TutorialService.asmx, web servisimiz için kodu içeren Visual Studio .Net dosyamızın adıdır.
  4. Daha sonra “GetTutorialService” olarak bilinen web servisimizde sahip olduğumuz Web yöntemimizi göreceğiz.

Web Hizmeti Örneğini Yayımlama

'Tamam' butonuna tıkladığımızda bu web servisine erişim için gerekli olan kodun tamamı aşağıda gösterildiği gibi DemoApplication Console uygulamamıza eklenecektir.

Ekran görüntüsünde “Guru99Webservice”in konsol uygulamamıza başarıyla eklendiği görülüyor.

Web Hizmeti Örneğini Yayımlama

) 7 Adım Bir sonraki adım, web servisimizde web yöntemine erişmek için kodu konsol uygulamamıza eklemektir. Konsol uygulamasıyla birlikte otomatik olarak gelen Program.cs kod dosyasını açın ve aşağıdaki kodu ekleyin.

Web Hizmeti Örneğini Yayımlama

namespace DemoApplication
{
	class Program
	{
		static void Main(string[ ] args)
		{
			var client = new Guru99Webservice.Guru99WebserviceSoapClient();

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

Kod Açıklaması:-

  1. İlk kısım Program.cs dosyasını seçmektir. Bu, bir konsol uygulaması oluşturulduğunda Visual Studio tarafından oluşturulan ana dosyadır. Bu dosya, konsol uygulaması (bizim durumumuzda demo uygulama) çalıştırıldığında çalıştırılan dosyadır.
  2. Daha sonra, daha önceki bir adımda oluşturulan Hizmet referansımızın bir örneğine ayarlanacak olan "istemci" adında bir değişken yaratırız. Bizim durumumuzda hizmet referansı 'Guru99Webservice.Guru99WebserviveSoapClient()' şeklindedir
  3. Daha sonra TutorialService web hizmetinde Web yöntemimizi 'GetTutorialService' olarak adlandırıyoruz. GetTutorialService' yöntemimizin bir tamsayı parametresini kabul ettiğini unutmayın, bu nedenle web yöntemine yalnızca bir tamsayı parametresi aktarıyoruz.
  4. Bu son satır, çıktıyı görebilmemiz için konsol kayıt ekranının aktif kalmasını sağlamak içindir. Bu komut sadece kullanıcıdan bir miktar giriş bekleyecektir.

Çıktı

Yukarıdaki adımların tümü takip edildiğinde ve DemoApplication çalıştırıldığında aşağıdaki çıktı görüntülenecektir.

Web Hizmeti Örneğini Yayımlama

Çıktıdan, DemoApplication'ın Web hizmetimizi çağırdığını ve Web hizmetinin döndürdüğü dizenin Konsol günlüğümüzde görüntülendiğini açıkça görebiliriz.

ÖZET

  • WSDL'nin tam biçimi Web Hizmetleridir Descriptiyon Dili
  • WSDL belgesi, bir web hizmetini tanımlamak için kullanılan bir belgedir. Bu, herhangi bir istemci uygulamasının web hizmetinin nerede bulunduğunu bilmesi için anahtardır. Ayrıca istemci uygulamasının web hizmetinde mevcut olan yöntemleri anlamasına da olanak tanır.
  • WSDL dosyası, web hizmetinin bir programlama dilinde uygulanmasını ve farklı bir programlama dilinden çağrılmasını çok kolaylaştırır.
  • WSDL belgesi normalde bir mesajdan oluşur. Her web yöntemi için biri giriş, diğeri çıkış için olmak üzere 2 mesaj vardır. Birlikte bir operasyon oluştururlar.
  • Web Hizmetleri Description Dili (WSDL anlamına gelir) dosyaları normalde ilgili programlama dili için kullanılan düzenleyicide oluşturulur.
  • Visual Studio'da bir web servisini nasıl tüketebileceğimizi gördük. Bu, bir konsol uygulaması olan başka bir proje oluşturarak yapılabilir. Daha sonra bir servis referansı ekleyerek, web servisimizde web yöntemlerine erişebiliriz.