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 müşteriye 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 hizmetlerinin en önemli parçası olan ve WSDL veya Web hizmetleri açıklama dili olan son noktaya odaklanacağız.
WSDL dosyası, web hizmetinin ne yaptığını kısaca açıklamak için kullanılır ve müşteriye 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-
- WSDL Belgesinin Yapısı
- WSDL Öğeleri
- Neden WSDL
- WSDL Mesaj Bölümü
- Bağlantı Noktası Tipi Bağlama
- WSDL Dosyası Oluşturuluyor
- Web Hizmeti Örneğinin Yayınlanması
WSDL Belgesinin Yapısı
Bir web hizmetini açıklamak için bir WSDL belgesi kullanılır. İstemci uygulamalarının web hizmetinin gerçekte ne yaptığını anlayabilmesi için bu açıklama gereklidir.
- WSDL dosyası, web hizmetinin konumunu içerir ve
- Web hizmeti tarafından sunulan 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
- TargetNamespace
- Veri tipleri
- Mesajlar
- Porttype
- 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ımlandığıdır.
WSDL belgesi aslında bir istemci uygulamasına Web hizmeti tarafından gönderilen ve kabul edilen SOAP mesajlarının türlerini 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. Bu nedenle, aynı şekilde, WSDL dosyası, istemcinin istediği tüm işlevselliği sağlayabilen web hizmetinin adresine sahip olan kartpostaldır.
… … … … …
Aşağıda bir WSDL dosyasının yapısının bir diyagramı verilmiştir.
WSDL Öğeleri
WSDL dosyası aşağıdaki ana parçaları içerir
-
etiketi istemci uygulaması ve web hizmeti arasında alınıp mesajında 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, EmployeeDataType adında, string türünde "EmployeeName" ve sayı veya tam sayı türünde "EmployeeID" adlı 2 öğeye sahip olabilen bir veri türü olabilir. Birlikte, daha sonra karmaşık bir veri türü haline gelen bir veri yapısı oluştururlar.
-
etiketi istemci uygulaması ve web sunucusu arasında değiş tokuş edilir mesajı tanımlamak için kullanılır. Bu mesajlar, web servisi tarafından gerçekleştirilebilecek giriş ve çıkış işlemlerini açıklayacaktır. Bir mesajın bir örneği, bir çalışanın EmployeeID'sini kabul eden bir mesaj olabilir ve çıktı mesajı, sağlanan EmpoyeeID'ye göre çalışanın adı olabilir. -
etiketi, bir mantıksal işlem içine her giriş ve çıkış iletisi kapsüllemek için kullanılır. Dolayısıyla, bir istemci uygulamasından EmployeeID'yi kabul etme ve ardından EmployeeName'i çıkış mesajı olarak gönderme giriş mesajını birleştiren "GetEmployee" adlı bir işlem olabilir. -
etiketi özellikle liman tipine operasyonu bağlamak için kullanılır. Bu, istemci uygulaması ilgili bağlantı noktası türünü aradığında, bu bağlantı noktası türüne bağlı işlemlere erişebilmesinin sağlanmasıdır. Bağlantı noktası türleri tıpkı arabirimler gibidir. Bu nedenle, bir istemci uygulamasının bir web servisini kullanması gerekiyorsa, bu web servisi tarafından sağlanan arayüze bağlanabilmelerini sağlamak için bağlayıcı bilgiyi kullanmaları gerekir. -
etiketi web hizmeti kendisine verilen bir isimdir. Başlangıçta, bir istemci uygulaması web servisini aradığında, web servisinin adını arayarak yapacaktır. Örneğin, bir web hizmeti http: //localhost/Guru99/Tutorial.asmx gibi bir adreste bulunabilir . Hizmet etiketi aslında http: //localhost/Guru99/Tutorial.asmx olarak tanımlanan URL'ye sahip olacaktır ve bu, istemci uygulamasına bu konumda kullanılabilir bir web hizmeti olduğunu söyleyecektir.
Neden WSDL
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 kurulu birden fazla uygulamanın birbiriyle konuşmasına izin vermektir. Örneğin, bir .Net web uygulamasının bir Web servisi aracılığıyla bir Java uygulaması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 karşılık gelen komutlara sahiptir. Bu nedenle XML, web servislerinin oluşturulması için en uygun dil olarak alınmıştır.
- Web hizmetleri 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ışma yeteneğine sahip olmasını sağlamak mantıklıydı.
- Web hizmetleri, belirli bir dil spesifikasyonuna uygundur. Bu belirtim, tüm web standartlarının yönetim organı olan W3C tarafından belirlenir.
- Web hizmetlerinin, web hizmetini açıklamak için kullanılan WSDL olarak bilinen bir açıklama dili vardır.
WSDL dosyası, düz eski XML ile yazılmıştır. XML'de olmasının 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ı Java programlama dilinde yazılmışsa, WSDL dosyasını da yorumlayabilir.
WSDL dosyası, her şeyi birbirine bağlayan şeydir. Yukarıdaki diyagramdan .Net dilinde bir web servisi oluşturabileceğinizi görebilirsiniz.
İşte hizmetin uygulandığı yer burasıdır. WSDL dosyanız yoksa ve bir Java sınıfının web hizmetini kullanmasını istiyorsanız, bunu başarmak için çok fazla kodlama çabasına ihtiyacınız olacaktır.
Ancak artık herhangi bir programlama dili tarafından anlaşılabilen XML'de bulunan WSDL dosyası ile artık kolayca bir Java sınıfının .Net web hizmetini kullanmasını sağlayabilirsiniz. Bu nedenle, kodlama çabası miktarı büyük ölçüde azalır.
WSDL Mesaj Bölümü
WSDL,
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 hizmetinde her zaman 2 tür mesaj bulunur,
- Biri web servisinin girdisi için, diğeri web servisinin çıktısı içindir.
- Giriş, web hizmeti tarafından kabul edilen parametreleri açıklamak için kullanılır. Bu, istemci uygulamasının önemli bir yönüdür, böylece web servisine parametre olarak gönderilecek değerleri bilir.
- Diğer mesaj türü, web hizmeti tarafından hangi sonuçların sağlandığını söyleyen çıktı mesajıdır.
Sırasıyla her mesaj, giriş ve çıkış mesajı tarafından kullanılan parametreyi açıklamak için kullanılan bir
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şlevselliği, bir "Eğitim Kimliği" web hizmetine bir parametre olarak gönderildiğinde bir "Öğretici" adı sağlamaktır.
- Gördüğümüz gibi, web servisinin biri giriş ve diğeri çıkış için olmak üzere 2 mesajı vardır.
- Girdi mesajı, TutorialID adında bir parametreye sahip olan TutorialNameRequest olarak bilinir. Bu parametre, xsd: number type tarafından belirtilen tür numarasına sahiptir.
- Çıktı mesajı, EğitimAdı adlı bir parametreye sahip olan EğitimAdı Yanıtlaması olarak bilinir. Bu parametre, xsd: string türü tarafından belirtilen dizge türündedir.
Bağlantı Noktası Tipi Bağlama
Bağlantı noktaları, WSDL'de web hizmeti tarafından sunulan tek bir tam işlemi tanımlamak için kullanılır.
Önceki başlıkta, web hizmetimizin biri "EğitimAdı İsteği" adlı girdi için ve diğeri "EğiticiAdı Yanıt" adlı çıktı için olmak üzere 2 mesaj sağladığını gördük. Giriş ve çıkış mesaj formu birlikte, tek bir tam işlem olarak bilinir.
WSDL , Web hizmeti tarafından sağlanan işlemleri tanımlamak için kullanılan
Dolayısıyla yukarıdaki örneğimizde aşağıdakilere dikkat edebiliriz:
- İşlemi özetleyen bağlantı noktası tipinin adı "Eğitim_Yol Tipi" olarak verilir.
- İşlemin kendisine "Eğitim" adı verilir. Bu nedenle, TutorialID bir girdi parametresi olarak verilmişse, işlemimiz temelde bir EğitimAdı sağlar.
- Sırada biri girdi, diğeri de işlemimizi oluşturan çıktı için olmak üzere 2 mesajımız var.
- Yukarıdaki örnek, bağlamanın, bizim durumumuzda "TutorialSoapBinding" olarak verilen bir bağlama adından oluştuğunu gösterir. Basit terimlerle bağlama, istemci uygulamasının kendisini web hizmetine gerçekten bağlamak için kullandığı bilgidir. Aslında web hizmetine bağlandığında, web hizmeti tarafından gösterilen çeşitli işlemleri çağırma yeteneğine sahiptir.
- Taşıma katmanı http: // olarak verilir, yani HTTP protokolü üzerinden transfer edilecek mesajlar anlamına gelir.
WSDL Dosyası Oluşturuluyor
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, .Net için Visual Studio ve Java için Eclipse gibi tüm düzenleyiciler WSDL dosyasını otomatik olarak oluşturur.
Aşağıda, Visual Studio'da oluşturulan bir WSDL dosyası örneği bulunmaktadır.
TutorialService
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 bir özet bakalım.
Web Hizmeti Örneğinin Yayınlanması
Şimdi bir web servisini nasıl yayınlayabileceğimize ve onu 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, "Eğitim Kimliği" adlı bir Tamsayı parametresini kabul eder. Web yöntemi daha sonra "Web Hizmetleri" adlı bir dize döndürür.
Daha sonra bu web servisini kullanacak ve buna göre web yöntemimizi arayacak konsol tabanlı bir uygulama oluşturacağız.
Bu örneği gerçekleştirmek için gereken adımlara bakalım.
Adım 1) İlk adım, web hizmetinizi oluşturmaktır. Asp.Net web projesinin ve bir web hizmetinin nasıl oluşturulduğuna ilişkin ayrıntılı adımlar burada açıklanmıştır; Projeyi ve web hizmetini buna göre oluşturmak için lütfen aynı adımları izleyin. Anahtar kısım, aşağıdaki kodu Web hizmetleri dosyasına girmektir.
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ı:
- 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ı parametresi ekliyoruz.
- Daha sonra, "Web Hizmetleri" nin dize değerini tutacak "EğitimAdı" adlı bir değişken tanımlıyoruz. Bu, web servisi çağrıldığında döndürülecek olan değerdir.
Adım 2) Web servisleri dosyasını tanımladıktan sonra, sonraki adım bu web servisini kullanacak bir müşteri projesi oluşturmaktır.
Bu web servisini çağıracak basit bir konsol uygulaması oluşturalım, "Guru99WebService" i çağıralım ve ardından konsol log ekranında web metodunun çıktısını gösterelim. 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
Adım 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.
- Projeniz için bizim durumumuzda "DemoApplication" olarak verilen bir isim verin.
Yukarıdaki ekranda Tamam düğmesine tıkladıktan sonra, Visual Studio'daki Çözüm gezgininde projeyi görebileceksiniz.
Adım 4) 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 Konsol uygulaması, sırayla, 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) Sonraki adım, konsol uygulamamıza "Guru99Webservice" servisimizin servis referansını 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 gerekli olan farklı değerleri sağlayacağız.
- Öncelikle keşfetme seçeneğimizi seçmemiz gerekiyor. Bu seçenek TutorialService web hizmetimiz için WSDL dosyasını otomatik olarak alacaktır.
- Ardından, hizmet referansımız için bir isim vermeliyiz. Bizim durumumuzda, ona Guru99Webservice adını veriyoruz.
- Daha sonra TutorialService.asmx seçeneğini genişletmemiz gerekir, böylece sağ tarafta 'GetTutorialService' yöntemini görebiliriz. Burada TutorialService.asmx, web hizmetimizin kodunu içeren Visual Studio .Net dosyamızın adıdır.
- Daha sonra "GetTutorialService" olarak bilinen web hizmetimizde sahip olduğumuz Web yöntemimizi göreceğiz.
'Tamam' butonuna tıkladığımızda, bu web servisine erişim için gerekli tüm kodlar aşağıda gösterildiği gibi DemoApplication Console uygulamamıza eklenecektir.
Ekran görüntüsü, "Guru99Webservice" hizmetinin konsol uygulamamıza başarıyla eklendiğini gösteriyor.
Adım 7) Sonraki adım, web hizmetimizdeki 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
namespace DemoApplication{class Program{static void Main(string[ ] args){var client = new Guru99Webservice.Guru99WebserviceSoapClient();Console.WriteLine(client.GetTutorialService(l));Console.ReadKey();}}}
Kod Açıklaması: -
- İlk bölü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 çalıştırılan dosyadır.
- Daha sonra, daha önceki bir adımda oluşturulan Hizmet referansımızın bir örneğine ayarlanacak olan "istemci" adlı bir değişken oluştururuz. Bizim durumumuzda hizmet referansı 'Guru99Webservice.Guru99WebserviveSoapClient ()' şeklindedir.
- Daha sonra TutorialService web hizmetinde Webmethod'umuzu 'GetTutorialService' olarak adlandırıyoruz. GetTutorialService 'yöntemimizin bir tamsayı parametresi kabul ettiğini unutmayın, bu nedenle web yöntemine sadece bir tamsayı parametresi geçiriyoruz.
- Bu son satır, çıktıyı görüntüleyebilmemiz için konsol günlük ekranının aktif kalmasını sağlamak içindir. Bu komut, kullanıcıdan bir miktar girdi bekleyecektir.
Çıktı
Yukarıdaki adımların tümü uygulandığında 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 Dilidir
- WSDL belgesi, bir web hizmetini açıklamak 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ına da olanak tanır.
- 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 yöntemi için, biri giriş, 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 servisimizdeki web yöntemlerine erişebiliriz.