WSDL nedir? Anlamı ve Örneği
⚡ Akıllı Özet
WSDL (Web Hizmetleri DescriptWSDL (Web Service Language), bir istemci uygulamasına bir web servisinin ne yaptığını ve nasıl çağrılacağını anlatan XML tabanlı bir dosyadır. Bu kaynak, WSDL yapısını, öğelerini, mesajlarını, port türlerini, bağlamalarını ve bir yayınlama örneğini açıklamaktadır.
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 eğitimde, web servislerinin en önemli bölümüne, yani WSDL'ye (Web Servisleri Kod Dizini) odaklanacağız. DescriptDil. İletişim aracı görevi görür.tracWeb servisi ile onu kullanmak isteyen herhangi bir istemci arasındaki bağlantı.
WSDL Belgesinin Yapısı
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 servisinin konumunu içerir ve
- Web hizmetinin ortaya çıkardığı yöntemler.
WSDL dosyası herhangi bir kullanıcı için oldukça karmaşık görünebilir, ancak ilgili web hizmetini 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 bir nokta, mesajların tanımının, yani iletilen şeyin ne olduğudur. SABUN protokolüBu, aslında WSDL belgesinde tanımlanmıştır. WSDL belgesi, istemci uygulamasına web servisi tarafından gönderilen ve kabul edilen SOAP mesajlarının türlerinin neler olduğunu söyler.
Başka bir deyişle, WSDL, belirli bir konumun adresini içeren bir kartpostal gibidir. Adres, mesajın nereye teslim edilmesi gerektiğinin ayrıntılarını sağlar. Dolayısıyla, aynı şekilde, WSDL dosyası da istemcinin istediği tüm işlevleri sağlayabilecek web servisinin 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ı gösteren bir şema bulunmaktadır.
WSDL'nin yapısı
WSDL Öğeleri
WSDL dosyası aşağıdaki ana bölümleri içerir:
- MKS `<Employee>` etiketi, istemci uygulaması ile web servisi arasında değiş tokuş edilen mesajda kullanılacak tüm karmaşık veri türlerini tanımlamak için kullanılır. Bu önemlidir çünkü web servisi karmaşık bir veri türüyle çalışıyorsa, istemci uygulamasının bunu nasıl işleyeceğini bilmesi gerekir. Ondalık sayılar, sayılar ve dizeler gibi veri türleri basit veri türleridir, ancak web servisi tarafından sağlanan yapılandırılmış veri türleri de olabilir. Örneğin, "EmployeeDataType" adında bir veri türü olabilir ve bu veri türü, dize türünde "EmployeeName" ve sayı veya tamsayı türünde "EmployeeID" olmak üzere iki öğeye sahip olabilir. Bunlar birlikte karmaşık bir veri türü oluşturur.
- MKS `<img>` etiketi, istemci uygulaması ile web sunucusu arasında değiş tokuş edilen mesajı tanımlamak için kullanılır. Bu mesajlar, web servisi tarafından gerçekleştirilebilecek giriş ve çıkış işlemlerini açıklar. Bir mesaj örneği, bir çalışanın EmployeeID'sini kabul eden ve verilen EmployeeID'ye göre çalışanın adını çıktı olarak veren bir mesaj olabilir.
- MKS 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.
- MKS Etiket, işlemi belirli bir port türüne bağlamak için kullanılır. Bu sayede istemci uygulaması ilgili port türünü çağırdığında, ona bağlı işlemlere erişebilir. Port türleri tıpkı arayüzler gibidir. Dolayısıyla, bir istemci uygulamasının bir web servisini kullanması gerekiyorsa, o web servisi tarafından sağlanan arayüze bağlanabildiğinden emin olmak için bağlama bilgilerini kullanması gerekir.
- MKS `tag`, web servisine verilen isimdir. Başlangıçta, bir istemci uygulaması web servisine çağrı yaptığında, bunu web servisinin adını kullanarak yapar. Örneğin, bir web servisi http://localhost/ gibi bir adreste bulunabilir.Guru99/Tutorial.asmx. Servis etiketi şu içeriğe sahip olacaktır: URL Bu tanım, istemci uygulamasına bu konumda bir web hizmetinin mevcut olduğunu bildirir.
Neden WSDL
Web servisleri, günümüz web uygulamalarının geliştirilmesinde önemli bir bileşendir. Temel amaçları, çeşitli programlama dillerinde oluşturulmuş birden fazla uygulamanın birbirleriyle iletişim kurmasını sağlamaktır. Örneğin, bir .Net web uygulamasının başka bir uygulamayla iletişim kurmasını sağlayabiliriz. Java Web hizmeti aracılığıyla uygulama.
Bir web hizmetinin başlıca özellikleri şunlardır:
- XML programlama dili kullanılarak oluşturulmuştur. .Net gibi neredeyse tüm modern teknolojiler de bu dili desteklemektedir. 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 servislerinin 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ı, bildiğimiz XML formatında yazılmıştır. Bunun nedeni, dosyanın herhangi bir programlama dili tarafından okunabilmesidir. Dolayısıyla, istemci uygulaması .Net ile yazılmışsa, XML dosyasını anlayacaktır. Benzer şekilde, istemci uygulaması başka bir dilde yazılmışsa, XML dosyasını anlayacaktır. Java Eğer programlama dilini kullanabiliyorsa, WSDL dosyasını da yorumlayabilir.
WSDL dosyası her şeyi bir araya getiren şeydir. Yukarıdaki şemadan da görebileceğiniz gibi, .Net dilinde bir web servisi oluşturabilirsiniz. Dolayısıyla servis burada uygulanır. Eğer WSDL dosyanız yoksa ve bir Java Web servisini kullanan bir sınıf oluşturmak için çok fazla kodlama çabası gerekirdi. Ancak şimdi, XML formatında olan ve herhangi bir programlama dili tarafından anlaşılabilecek WSDL dosyası sayesinde, bunu kolayca yapabilirsiniz. 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: Bu öğe temel olarak web servisi ile istemci uygulaması arasında değiş tokuş edilen verileri tanımlamak için kullanılır.
Her web servisinde 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 servisi için mesajın nasıl görüneceğine dair basit bir örnek verilmiştir. Web servisinin işlevi, web servisine parametre olarak bir "Eğitim Kimliği" gönderildikten sonra bir "Eğitim"in adını sağlamaktır.
- Gördüğümüz gibi, web servisinin biri giriş diğeri çıkış için olmak üzere 2 mesajı var.
- Giriş mesajı, TutorialID adlı bir parametreye sahip olan TutorialNameRequest olarak bilinir. Bu parametre, xsd:number türü ile belirtilen sayı türündedir.
- Çıktı mesajı, TutorialNameResponse olarak bilinir ve TutorialName adlı bir parametreye sahiptir. Bu parametre, xsd:string türü ile belirtilen string türündedir.
Bağlantı Noktası Türü Bağlama
WSDL'de portlar, web servisinin sunduğu tek bir işlemi tanımlamak için kullanılır. Önceki konuda, web servisimizin "TutorialNameRequest" adlı giriş ve "TutorialNameResponse" adlı çıkış olmak üzere iki mesaj sağladığını gördük. Giriş ve çıkış mesajları birlikte tek bir işlemi oluşturur.
WSDL, adı verilen bir öğe sağlar Web hizmeti tarafından sağlanan işlemleri tanımlamak için kullanılır.
Yukarıdaki örneğimizde şunları görebiliriz:
- İşlemi kapsayan port türünün adı "Tutorial_PortType" olarak verilmiştir.
- İşlemin kendisine "Eğitim" adı verilmiştir. Dolayısıyla işlemimiz, giriş parametresi olarak Eğitim Kimliği (TutorialID) verilirse, temelde bir Eğitim Adı (TutorialName) sağlar.
- Sırada, işlemimizi oluşturan, biri giriş diğeri çı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.
- Yukarıdaki örnek, bağlamanın bir bağlama adından oluştuğunu göstermektedir; bu durumda bağlama adı "TutorialSoapBinding" olarak verilmiştir. Bağlama, basitçe ifade etmek gerekirse, istemci uygulamasının kendisini web servisine bağlamak için kullandığı bilgidir. Web servisine bağlandıktan sonra, web servisi tarafından sunulan çeşitli işlemleri çağırma yeteneğine sahip olur.
- İletim katmanı http:// olarak belirtilmiştir, bu da mesajların HTTP protokolü üzerinden iletileceği anlamına gelir.
WSDL Dosyası Oluşturma
Herhangi bir programlama dilinde bir web servisi oluşturulduğunda WSDL dosyası oluşturulur. WSDL dosyasının sıfırdan oluşturulması oldukça karmaşık olduğundan, Visual Studio for .Net gibi tüm editörler bu dosyayı oluşturmak için özel bir çaba sarf eder. 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 oldukça göz korkutucu görünebilir. Sonraki eğitimlerde farklı bölümlerini ayrıntılı olarak ele alacağız, ancak şimdilik WSDL dosyasının her bölümünün aslında ne işe yaradığına kısaca bir göz atalım.
Web Hizmeti Örneğini Yayımlama
Şimdi Visual Studio kullanarak bir web servisini nasıl yayınlayabileceğimizi ve tüketebileceğimizi gösteren bir örneğe bakalım. Bu örnekte, tek bir WebMethod içeren bir web servisi oluşturacağız. Bu metot, "TutorialID" adlı bir tamsayı parametresi alacak. Web metodu daha sonra "Web Services" adlı bir dize döndürecektir.
Ardından, bu web servisini kullanacak ve buna göre web yöntemimizi çağıracak konsol tabanlı bir uygulama oluşturacağız. Bu örneği gerçekleştirmek için gereken 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 Bir web projesi ve bir web servisinin oluşturulması açıklanmıştır. okuyunLütfen projeyi ve web servisini oluşturmak için aynı adımları izleyin. En önemli kısım, aşağıdaki kodu Web servisleri dosyasına girmektir.
namespace webservic_asmx { [WebService(Name = "Guru99 Web service")] public class TutorialService : System.Web.Services.WebService { [WebMethod] public string GetTutorialService(int TutorialID) { string TutorialName = "Web Services"; return TutorialName; } } }
Code Açıklama:
- Burada “ adında bir WebMethod oluşturuyoruz.Guru99WebService.” Bu web metodunda, bu web metodu her çağrıldığında iletilmesi gereken bir tamsayı parametresi ekliyoruz.
- 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 servis dosyasını tanımladıktan sonraki adım, bu web servisini kullanacak bir istemci projesi oluşturmaktır. Bu web servisini çağıracak basit bir konsol uygulaması oluşturalım, "Guru99WebService” yazın ve ardından web metodunun çıktısını konsol günlük ekranında görüntüleyin. 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.
) 3 Adım Bu adımda,
- İ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.
- Bizim durumumuzda “DemoApplication” olarak verilen projenize bir isim verin.
Yukarıdaki ekranda Tamam düğmesine tıkladıktan sonra, projeyi Visual Studio'daki Çözüm Gezgini'nde görebileceksiniz.
) 4 Adım Bu adımda, DemoApplication Konsol uygulamasını başlangıç projesi olarak ayarlayacaksınız. Bu, Visual Studio projesinin tamamı çalıştırıldığında bu uygulamanın ilk olarak başlatılmasını sağlamak için yapılır. Bu Konsol 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.
) 5 Adım Sonraki adım, "Guru"99Webservice"i konsol uygulamamıza ekliyoruz. Bu, DemoApplication'ın web servisine ve web servisindeki 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 -> Servis Referansı menü seçeneğini seçin.
) 6 Adım Bu adımda, hizmet referansımızı eklemek için gereken farklı değerleri sağlayacağız.
- Öncelikle, keşfetme seçeneğimizi seçmemiz gerekiyor. Bu seçenek, TutorialService web servisimiz için WSDL dosyasını otomatik olarak seçecektir.
- Ardından, hizmet referansımız için bir isim vermeliyiz. Bizim durumumuzda, ona şu ismi veriyoruz: Guru99Web hizmeti.
- Ardından, sağ tarafta "GetTutorialService" yöntemini görebilmek için TutorialService.asmx seçeneğini genişletmemiz gerekiyor. Burada TutorialService.asmx, web servisimizin kodunu içeren Visual Studio .Net dosyamızın adıdır.
- Ardından, "GetTutorialService" olarak bilinen web servisimizde bulunan web yöntemimizi göreceğiz.
“Tamam” düğmesine tıkladığımızda, bu web servisine erişmek için gereken tüm kodlar, aşağıda gösterildiği gibi DemoApplication Console uygulamamıza eklenecektir. Ekran görüntüsünde “Guru"99Webservice" başarıyla konsol uygulamamıza eklendi.
) 7 Adım Bir sonraki adım, web servisimizde bulunan web metoduna erişmek için konsol uygulamamıza kod eklemektir. Konsol uygulamasıyla birlikte otomatik olarak gelen Program.cs kod dosyasını açın ve aşağıdaki kodu ekleyin.
namespace DemoApplication { class Program { static void Main(string[] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(1)); Console.ReadKey(); } } }
Code Açıklama:
- İlk adım, Program.cs dosyasını seçmektir. Bu, Visual Studio tarafından bir konsol uygulaması oluşturulduğunda oluşturulan ana dosyadır. Konsol uygulaması (bizim durumumuzda DemoApplication) çalıştırıldığında bu dosya yürütülür.
- Daha sonra, önceki adımda oluşturduğumuz Servis referansının bir örneğine atanacak olan "client" adlı bir değişken oluşturuyoruz. Bizim durumumuzda, servis referansı 'Guru99Web hizmeti.Guru99WebserviceSoapClient()'.
- Ardından, TutorialService web servisindeki 'GetTutorialService' web yöntemimizi çağırıyoruz. GetTutorialService yönteminin bir tamsayı parametresi kabul ettiğini hatırlayın, bu nedenle web yöntemine yalnızca bir tamsayı parametresi iletiyoruz.
- Bu son satır, konsol günlük ekranının aktif kalmasını ve çıktıyı görüntüleyebilmemizi sağlamak içindir. Bu komut, kullanıcıdan bir girdi bekleyecektir.
Çıktı
Yukarıdaki tüm adımlar izlendikten ve DemoApplication çalıştırıldıktan sonra aşağıdaki çıktı görüntülenecektir.
Çı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.
















