Web Services

ASP.NET ile asmx Web Servisi Oluşturmak

Microsoft’un .NET Framework 2.0 ile HTTP üzerinden SOAP iletileri kullanılarak uygulamalar arası iletişimi sağlamak için geliştirdiği Web Servisleri adına ilk teknolojisi olan klasik diye tabir edebileceğimiz .asmx web servisinin ASP.NET üzerinden nasıl oluşturulduğuna bir örnek ile inceleyeceğiz.

Öncelikle Visual Studio‘yu açınız.

File” menüzüsünden “New Project” seçilerek “ASP.NET Project” uygulamasını oluşturun. Örneğimiz için uygulamamıza “asmxAPISample” adı verilmiştir.

Uygulamamızın şablonunu seçmek üzere ekrana “Template Select” diyalog kutusu gelecektir. Servisimizi oluşturmak için “WebFrom“, “MVC” gibi dilediğiniz şablonlardan faydalanabilirsiniz. Örneğimiz için en sade olan “Empty” seçebilirsiniz.

Örnek uygulamamızın oluşturulan dosyalarına “Solution Explorer” panelinden baktığımızda bir ASP.NET projesinin minimum özelliklerle yürütülebilmesi için en sade halini görebiliriz.

Sırada uygulamıza .asmx Web Servisisinin nasıl oluşturulduğunu görelim. Yapmanız gereken “Solution Explorer” projenizin ismi üzerinde mouse sağ tuşu ile açılan menüde “Add-> New Item” seçmek olacaktır. Seçiminiz için gelecek diyalog kutusunda “Web Service (ASMX)” seçiniz ve servisinize bir isim veriniz. Örneğimiz için “SampleService.asmx” ismi kullanılmıştır.

Projemize uzantısı asmx olan bir dosyanın eklendiğini görebilirsiniz. Bu dosya açınız.

Servis dosyamızın kodlarını incelediğimizde aynı isme sahip bir sınıfın (class) oluşturulduğu ve System.Web.WebServices isim alanında (namespace) bulunan WebService sınıfından örneklendiğini görebilirsiniz. Uygulamamızda asıl ilgileneceğimiz kısım oluşturulan sınıf içinde yeralan [WebMethod] lardır. Bildiğiniz klasik metodlardan hiç bir farkı olmamakla bereber tek fark bunların [WebMethod] referansına sahip olmaları ve HTTP üzerinden çağırılabiliyor olmalarıdır.

Eklediğimiz asmx web servisinin içinde örnek olarak geriye string bir ifade döndüren “HelloWorld()” isimli bir şablon web method bulunmaktadır. Şimdilik bu haliyle uygulamızı çalıştıralım.

Görüldüğü üzere localhost üzerinde çalıştırılan servisi herhangi bir browser üzerinden izleyebilirsiniz. Servisi ön izlemek için bir sayfa üzerinden hizmet sunulmuştur. Hizmeti çalıştırmak için HelloWorld() isimli web method üzerine tıklayın ve test ediniz.

HelloWorld() isimli web method’un servis üzerinden çağırılması (invoke) ile aşağıdaki gibi bir xml çıktısının döndürüldüğünü görebilirsiniz.

WebMethod ile XML çıktısı arasındaki ilişkiyi inceleyecek olursak method’dan return edilen string ifadenin XML sonuç belgesinde <string></string> etiketleri arasında döndürüldüğünü görebilirsiniz.

Şimdi tekrar projemize dönelim ve servisimizin işleyişini daha iyi anlamak için temel tipleri kullanarak basit web metodlar oluşturalım ve servis çağrılarının nasıl çalıştığını inceleyelim.

SampleService.asmx dosyasını aşağıdaki gibi düzenleyiniz.

Servisimizi tekrar çalıştıralım.

Web metodlarımızın listesini görebiliyoruz. Sıra ile test ediniz.

 

Web metod çağırdığımızda HTTP üzerinden servise adresinde metoda özgü olduğunu görebilirsiniz.

HelloWorld Metodu için “https://yazilimbilisim.net/SampleService.asmx/HelloWorld”

Kimsin Metodu için “https://yazilimbilisim.net/SampleService.asmx/Kimsin”

UyeKontrol Metodu için “https://yazilimbilisim.net/SampleService.asmx/UyeKontrol”

WebMetod’lar ile kendi özel sınıflarımızın (class) kullanımına inceleyelim.

Örneğimiz için öncelikle projemize “Insan” adında aşağıdaki şekilde bir sınıf ekleyelim.

Insan.cs

Servis tarafında ise geriye bir nesne vaya nesne koleksiyonu (dizisi) döndürecek çeşitli web metod örneklerini aşağıda verildiği şekilde düzenleyiniz.

“KisiGetir” isimli web metodumuzda kendisine parametre olarak verilen “id” değerine sahip bir “Insan” tipinde nesne döndürmektedir. İlk testimizi “KisiGetir” metodumuz için gerçekleştirelim.

Web Metod çağrısından dönen değerin nesne özelliklerine uygun bir biçimde etiketleme yapılarak tek bir nesne olarak sunan XML belgesi olduğunu görürsünüz.

Sırada geriye her bir elemanı “Insan” tipinde olan koleksiyon döndüren “Kisiler” metodunu test edelim.

Web Metod çağrısından dönen değerin List<Insan> arayüzüne uygun <ArrayOfInsan>…</ArrayOfInsan> etiketleri altında <Insan> nesneleri olduğunu görüyoruz.

Sonuç olarak gerek temel tiplerin, gerek özel tiplerin (sınıf kullanarak) bu bir koleksiyon türüde olabilir, servis tarafından uygun bir biçimde etiketlenerek XML belgelerine dönüştürüldüklerini görüyoruz.

Bu yazımızda ele aldığımız örnek uygulamızı buradan indirebilirsiniz

 

Bu aşamaya kadar bir Web Servisinin ASP.NET çatısı altında nasıl yapılandırıldıklarını, nasıl test edildiklerini gördük. Ancak Web Servislerinin bir API olduğu ve bunların bir insan tarafından değilde başka bir yazılım tarafından tüketilmek üzere projelerimize entegre edildiklerini hatırlayacak olursak, sırada Web servislerimizi tüketecek istemci uygulamaların servis noktası ile nasıl iletişime geçecekleri ve verileri ne şekilde edineceklerine dair diğer örneklerimize göz atabilirsiniz.

 

 

Yorum

Yorum Yap