- Detaylar
- Son Güncelleme: 28 Nisan 2021
WSDL nedir?
Web Hizmetleri Açıklama 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 derste, web servislerinin en önemli kısmı olan WSDL veya Web servisleri tanımlama dili olan son noktaya 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.
Bu eğitimde, öğreneceksiniz-
- Bir WSDL Belgesinin Yapısı
- WSDL Öğeleri
- Neden WSDL
- WSDL Mesaj Bölümü
- Bağlantı Noktası Türü Bağlama
- WSDL Dosyası Oluşturma
- Web Hizmeti Örneğinin Yayınlanması
Bir web hizmetini tanımlamak için bir WSDL belgesi 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 ve
- Web servisi tarafından açığa çıkarılan yöntemler.
WSDL dosyasının kendisi herhangi bir kullanıcı için çok karmaşık görünebilir, ancak herhangi bir istemci uygulamasının ilgili web hizmetini kullanmak için ihtiyaç duyacağı tüm gerekli bilgileri içerir.
Aşağıda bir WSDL dosyasının genel yapısı verilmiştir.
- Tanım
- HedefAd Alanı
- Veri tipleri
- Mesajlar
- port tipi
- bağlamalar
- hizmet
Burada dikkat edilmesi gereken önemli bir nokta, SOAP protokolü tarafından iletilen mesajların tanımının aslında WSDL belgesinde tanımlanmış olmasıdır.
WSDL belgesi aslında bir istemci uygulamasına Web hizmeti tarafından gönderilen ve kabul edilen SOAP mesaj türlerinin ne olduğunu söyler.
Başka bir deyişle, WSDL, belirli bir yerin 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ı, müşterinin istediği tüm işlevselliği sağlayabilen web servisinin adresini içeren kartpostaldır. |_+_|
Aşağıda bir WSDL dosyasının yapısının bir diyagramı verilmiştir.
Bir WSDL'nin Yapısı
WSDL dosyası aşağıdaki ana bölümleri içerir
NS 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 tümü basit veri türleridir, ancak web hizmeti tarafından sağlanabilecek yapılandırılmış veri türleri olabilir.
Örneğin, 'EmployeeName' türünde dize ve 'EmployeeID' türünde sayı veya tamsayı olarak adlandırılan 2 öğeye sahip olan EmployeeDataType adlı bir veri türü olabilir. Birlikte, daha sonra karmaşık bir veri türü haline gelen bir veri yapısı oluştururlar.
NS etiketi, istemci uygulaması ve web sunucusu arasında değiş tokuş edilen mesajı tanımlamak için kullanılır. Bu mesajlar web servis tarafından yapılabilecek giriş ve çıkış işlemlerini açıklayacaktır. Bir mesaj örneği, bir çalışanın Çalışan Kimliğini kabul eden bir mesaj olabilir ve çıktı mesajı, sağlanan EmpoyeeID'ye dayalı olarak çalışanın adı olabilir.
NS etiketi, her giriş ve çıkış mesajını tek bir mantıksal işlemde kapsüllemek için kullanılır. Bu nedenle, bir istemci uygulamasından Çalışan Kimliğini kabul etme ve ardından çıkış mesajı olarak ÇalışanAdı gönderme giriş mesajını birleştiren 'GetEmployee' adlı bir işlem olabilir.
NS etiketi, işlemi belirli bir 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. Port türleri tıpkı arayüzler gibidir. Bu nedenle, bir istemci uygulamasının bir web hizmeti kullanması gerekiyorsa, o web hizmeti tarafından sağlanan arayüze bağlanabilmelerini sağlamak için bağlama bilgilerini kullanmaları gerekir.
NS etiketi, web hizmetinin kendisine verilen bir addır. Başlangıçta, bir istemci uygulaması web servisine bir çağrı yaptığında, bunu web servisinin adını arayarak yapacaktır. Örneğin, bir web hizmeti aşağıdaki gibi bir adreste bulunabilir: http://localhost/Guru99/Tutorial.asmx . Hizmet etiketi aslında şu şekilde tanımlanmış URL'ye sahip olacaktır: http://localhost/Guru99/Tutorial.asmx , bu aslında istemci uygulamasına bu konumda kullanılabilir bir web hizmeti olduğunu söyleyecektir.
Bir web hizmeti, günümüz web uygulamalarının oluşturulmasında önemli bir bileşendir. Ana amaçları, çeşitli programlama dilleri üzerine kurulmuş birden fazla uygulamanın birbiriyle konuşmasına izin vermektir. Örneğin, bir .Net web uygulamasının bir Java uygulamasıyla bir Web servisi aracılığıyla konuşmasını sağlayabiliriz.
Bir web hizmeti aşağıdaki temel özelliklere sahiptir
- XML programlama dili kullanılarak oluşturulmuştur. .Net ve Java gibi hemen hemen tüm modern teknolojiler, XML ile çalışma yeteneğine sahip ilgili komutlara sahiptir. Bu nedenle XML, web servisleri oluşturmak için en uygun dil olarak alınmıştır.
- 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ışabilmesini sağlamak mantıklıydı.
- Web hizmetleri belirli bir dil belirtimine uygundur. Bu spesifikasyon, tüm web standartları için yönetim organı olan W3C tarafından belirlenir.
- Web hizmetleri, web hizmetini 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 okunabilmesi içindir.
Yani istemci uygulaması .Net'te yazılmışsa, XML dosyasını anlayacaktır. Benzer şekilde, istemci uygulaması Java programlama dilinde yazılmışsa, WSDL dosyasını da yorumlayabilecektir.
WSDL dosyası, her şeyi birbirine bağlayan şeydir. Yukarıdaki şemadan .Net dilinde bir web servisi oluşturabileceğinizi görebilirsiniz.
Yani hizmetin uygulandığı yer burasıdır. WSDL dosyasına sahip değilseniz ve web servisini kullanmak için bir Java sınıfı istiyorsanız, bunu başarmak için çok fazla kodlama çabasına ihtiyacınız olacaktır.
Ama artık herhangi bir programlama dilinin anlayacağı XML'de bulunan WSDL dosyası ile artık bir Java sınıfının .Net web servisini kolayca tüketmesini sağlayabilirsiniz. Bu nedenle, kodlama çabası miktarı büyük ölçüde azalır.
WSDL, 'mesajlar' adı verilen ve şu şekilde gösterilen bir bölümden oluşur: öğe.
Bu öğe temel olarak web hizmeti ve istemci uygulaması arasında değiş tokuş edilen verileri tanımlamak için kullanılır.
Her web servisi her zaman 2 tür mesaja sahip olacaktır,
- Biri web servisinin girişi, diğeri ise web servisinin çıkışı içindir.
- Giriş, web servisi tarafından kabul edilen parametreleri tanımlamak için kullanılır. Bu, istemci uygulamasının önemli bir yönüdür, böylece web hizmetine parametre olarak gönderilecek değerleri bilir.
- Diğer mesaj türü, web servisi tarafından hangi sonuçların sağlandığını söyleyen çıktı mesajıdır.
Her mesaj, sırayla, bir giriş ve çıkış mesajı tarafından kullanılan parametreyi tanımlamak için kullanılan eleman.
Aşağıda, bir web hizmeti için bir mesajın nasıl göründüğüne dair basit bir örnek verilmiştir. Web hizmetinin işlevi, web hizmetine bir parametre olarak bir 'Öğretici Kimliği' gönderildiğinde bir 'Öğretici' adını sağlamaktır.
- Gördüğümüz gibi web servisinde biri girdi diğeri çıktı için olmak üzere 2 adet mesaj bulunmaktadır.
- Giriş mesajı, TutorialID adlı bir parametreye sahip olan TutorialNameRequest olarak bilinir. Bu parametre, xsd:number tipi tarafından belirtilen tip numarasına sahiptir.
- Çıktı mesajı, TutorialName adında bir parametreye sahip olan TutorialNameResponse olarak bilinir. Bu parametre, xsd:string tipi tarafından belirtilen string tipindedir.
WSDL'de bağlantı noktaları, web hizmeti tarafından sunulan eksiksiz bir işlemi tanımlamak için kullanılır.
Bir önceki konuda, web servisimizin biri 'TutorialNameRequest' adlı girdi için ve diğeri 'TutorialNameResponse' adlı çıktı için olmak üzere 2 mesaj verdiğini gördük. Giriş ve çıkış mesajı formu birlikte tek bir tam işlem olarak bilinir.
WSDL adlı bir öğe sağlar Web hizmeti tarafından sağlanan işlemleri tanımlamak için kullanılır.
Yani yukarıdaki örneğimizde aşağıdakileri not edebiliriz:
- İşlemi kapsayan port Tipinin adı 'Tutorial_PortType' olarak verilir.
- İşlemin kendisine 'Öğretici' adı verilir. Bu nedenle, TutorialID bir giriş parametresi olarak verilirse, işlemimiz temel olarak bir TutorialName sağlar.
- Sırada 2 mesajımız var, biri girdi diğeri ise operasyonumuzu oluşturan çıktı için.
Buna ek olarak eleman, ayrıca mesajların nasıl aktarılacağını tanımlamak için kullanılan öğe.
- Yukarıdaki örnek, bağlamanın, bizim durumumuzda 'TutorialSoapBinding' olarak verilen bir bağlama adından oluştuğunu göstermektedir. Basit terimlerle bağlama, istemci uygulamasının kendisini web hizmetine fiilen bağlamak için kullandığı bilgilerdir. Bir kez gerçekten web hizmetine bağlandıktan sonra, web hizmeti tarafından açığa çıkarılan çeşitli işlemleri çağırma yeteneğine sahip olur.
- Taşıma katmanı http:// olarak verilir, yani HTTP protokolü üzerinden aktarılacak mesajlar.
WSDL dosyası, herhangi bir programlama dilinde bir web hizmeti oluşturulduğunda oluşturulur.
WSDL dosyası sıfırdan oluşturulmak için oldukça karmaşık olduğundan, Visual Studio for .Net ve Eclipse for Java gibi tüm düzenleyiciler WSDL dosyasını otomatik olarak oluşturur.
Aşağıda Visual Studio'da oluşturulmuş bir WSDL dosyası örneği verilmiştir. |_+_|
Yukarıdaki WSDL dosyası herhangi bir kullanıcı için çok korkutucu görünüyor, sonraki öğreticilerde 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 bir özet bakalım.
Şimdi bir web servisini nasıl yayınlayabileceğimize ve Visual Studio kullanarak nasıl tüketebileceğimize dair bir örneğe bakalım.
Bu örnekte, bir WebMethod ile bir web servisi oluşturacağız. Bu yöntem, 'TutorialID' adlı bir Tamsayı parametresini kabul edecektir. Web yöntemi daha sonra 'Web Hizmetleri' adlı bir dize döndürür.
Daha sonra bu web hizmetini 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 gerekli adımlara bakalım.
Aşama 1) İlk adım, web hizmetinizi oluşturmaktır. Asp.Net web projesinin ve bir web servisinin nasıl oluşturulduğu detaylı olarak anlatılmıştır. Burada; 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.
... ... ... ... ...
Kod Açıklaması:
- 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.
- Daha sonra, 'Web Servisleri'nin string değerini tutacak 'TutorialName' adında bir değişken tanımlıyoruz. Bu, web servisi çağrıldığında döndürülecek değerdir.
Adım 2) Web servisleri dosyasını tanımladıktan sonraki adım, bu web servisini kullanacak bir istemci projesi oluşturmaktır.
Bu web hizmetini ç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. Bir 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
Aşama 3) Bu adımda,
- Önce Visual C# Windows seçeneğini seçtiğinizden emin olun. Ardından bir konsol uygulaması oluşturma seçeneğini seçin.
- Bizim durumumuzda 'DemoApplication' olarak verilen projeniz için bir isim verin.
Yukarıdaki ekranda OK butonuna tıkladıktan sonra Visual Studio'da Solution Explorer'da projeyi görebileceksiniz.
Adım 4) Bu adımda, DemoApplication Console uygulamasını başlangıç projesi olarak ayarlıyorsunuz. Bu, tüm Visual Studio projesi çalıştırıldığında önce bu uygulamanın 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 hizmetini arayacaktır.
Bu adımı tamamlamak için DemoApplication projesine sağ tıklayın ve 'Başlangıç Projesi Olarak Ayarla' seçeneğini seçin.
Adım 5) Bir sonraki adım, 'Guru99Webservice'imizin servis referansını konsol uygulamamıza eklemektir. Bu, DemoApplication'ın web hizmetine ve web hizmetindeki tüm web yöntemlerine başvurabilmesi için yapılır.
Bunu yapmak için DemoApplication proje dosyasına sağ tıklayın ve Add->Service Reference menü seçeneğini seçin.
Adım 6) Bu adımda servis referansımızı eklemek için gereken farklı değerleri sağlayacağız.
- Öncelikle keşif seçeneğimizi seçmeliyiz. Bu seçenek, TutorialService web hizmetimiz için WSDL dosyasını otomatik olarak alacaktır.
- Ardından, servis referansımız için bir isim vermeliyiz. Bizim durumumuzda buna Guru99Webservice adını veriyoruz.
- Daha sonra TutorialService.asmx seçeneğini genişletmemiz gerekiyor ki sağ tarafta 'GetTutorialService' metodunu görebilelim. Burada TutorialService.asmx, web servisimizin kodunu içeren Visual Studio .Net dosyamızın adıdır.
- Daha sonra web servisimizde 'GetTutorialService' olarak bilinen Web yöntemimizi göreceğiz.
'Tamam' butonuna tıkladığımızda bu web hizmetine erişmek için gerekli tüm kodlar aşağıda gösterildiği gibi DemoApplication Console uygulamamıza eklenecektir.
Ekran görüntüsü, 'Guru99Webservice'in konsol uygulamamıza başarıyla eklendiğini gösteriyor.
Adım 7) Bir sonraki adım, web servisimizde web yöntemine erişmek için kodu konsol uygulamamıza eklemektir. Konsol uygulaması ile otomatik olarak gelen Program.cs kod dosyasını açın ve aşağıdaki kodu ekleyin.
TutorialService
Kod Açıklama:-
- İ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 uygulaması) yürütüldüğünde yürütülen şeydir.
- Daha sonra, daha önceki bir adımda oluşturulan Hizmet referansımızın bir örneğine ayarlanacak olan 'client' adında bir değişken yaratırız. Bizim durumumuzda hizmet referansı 'Guru99Webservice.Guru99WebserviveSoapClient()' şeklindedir.
- Ardından, TutorialService web hizmetinde Webmetodumuzu 'GetTutorialService' olarak adlandırıyoruz.
- Bu son satır, çıktıyı görebilmemiz için yalnızca konsol günlük ekranının etkin kalmasını sağlamak içindir. Bu komut sadece kullanıcıdan bazı girdiler bekleyecektir.
Çıktı
Yukarıdaki tüm adımlar izlendiğinde ve DemoApplication çalıştırıldığında aşağıdaki çıktı görüntülenecektir.
Çıktıdan, DemoApplication'ın Web hizmetimizi çağırdığını ve Web hizmeti tarafından döndürülen dizenin Konsol günlüğümüzde görüntülendiğini açıkça görebiliriz.
Özet
- WSDL'nin tam biçimi Web Hizmetleri Açıklama Dili'dir.
- Bir WSDL belgesi, bir web hizmetini tanımlamak için kullanılan bir belgedir. Bu, herhangi bir istemci uygulamasının web hizmetinin nerede olduğunu bilmesi için anahtardır. Ayrıca, istemci uygulamasının web hizmetinde bulunan yöntemleri anlamasını sağlar.
- WSDL dosyası, web hizmetinin tek 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 metodu için biri girdi diğeri çıktı için olmak üzere 2 mesaj vardır. Birlikte bir operasyon oluştururlar.
- Web Hizmetleri Açıklama 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şturularak yapılabilir. Daha sonra bir servis referansı ekleyerek, web servisimizde web metodlarına erişebiliriz.