Makale Özeti

ASP.Net bize hızlı ve kolay bir şekilde web servisi oluşturma imkanı sunuyor. Bunu bünyesinde bulundurduğu sınıflar sayesinde bize sunabiliyor. Bu yazımızda ele alacağımız asıl konu web metodu dosyaları tasarlamak ve kodlama işleminden bahsetmek. Bu bize pratiklik kazandıracaktır.

Makale

XML Web Servisleri V

Bu yazı dizisine ilk başladığımda Web Servisleri ne neden ihtiyaç duyulduğunu, bu yeni nesil programlama kavramının neden hayatımıza sokulduğunu anlatmaya çalışmıştım.
ASP.Net bize hızlı ve kolay bir şekilde web servisi oluşturma imkanı sunuyor. Bunu bünyesinde bulundurduğu sınıflar sayesinde bize sunabiliyor. Bu yazımızda ele alacağımız asıl konu web metodu dosyaları tasarlamak ve kodlama işleminden bahsetmek. Bu bize pratiklik kazandıracaktır.

Aslında web servisleri sıradan bir sınıftır. İstemci web servisinizin bir kopyasını oluşturabilir ve sanki yerel tanımlanmış bir sınıf gibi metodlarını kullanabilir. Peki bu nasıl başarılır?

Tüm bu işlemleri .Net FrameWork ile beraber gelen bizim için hazırlanmış hazır bir sihirbaza borçluyuz aslında. Bu elbette WebService.dll. Bu sınıf içerisinden özel bir sınıf türetilir ve yeni sınıfımız WebService nin bize sağladığı özellikleri de içerdiğinden WSDL dokumanı yaratması ve normal ASP.Net sayfaları ile beraber çalışmasına olanak vardır. Çünkü ASp.Net ile beraber çalışmasına olanak sağlayanyerleşik bilgilere sahiptir. Bizim üzerinde çalışmamız gereken tek katman bu web service ile sunmak istediğimiz bilgiyi içeren kodu yazmaktır. Bu kod özelleşmiş bir koddeğildir. Süreklikullandığımız bir VB fonksiyonu olabilir. Hatırlarsanız yazı dizimizin ilk yazısında iki sayının çarpımını veren bir web servis örneği yazmıştık ve kullandığımız şey aslında basit bir VB fonksiyonuydu.

Web Servisini Oluşturan Katmanlar
- Web servisi kodunu içeren .asmx dosyası
- System.Web.Services.WebService sınıfından türeyen bir Web Servis sınıfı
- System.Web.Services.WebMethodAttribute ile işaretlenmiş Web Servis metodu

.asmx dosyası yapı itibari ile .aspx dosyasına benzer. Ortak özellikleri:
- Bir page direktifi ile başlar.
- Performansı yüksek tutmak amacıyla ilk çağrıldığında derlenir.
- Not defteri veya herhangi bir text editörde düzenlenebilir.

.asmx isminde geçen "m" harfi "method" anlamındadır ve bir web servisi asıl işlevi sağlayan bir veya birden fazla web method undan oluşur. Bunlarda web servislerinin genel özellikleriydi.

Visual Studio .Net & Web Servisleri

Visual Studio .Net in bize sağladığı en büyük kolaylıkların başında şüphesiz tasarım ve program kodunu birbirinden ayırmış olması gelmektedir. Ancak web servislerinde bu özelliğe pekde ihtiyacımız olmayacak zira bir web servisinde tasarımdan bahsetmek mümkün değil. Ancak Visual Studio çalışma mantığını değiştirmez ve siz bir web servisi yaratmaya çalıştığınızda bir .asmx ve birde .vb dosyası oluşturur. Çalışma ekranında bu dikkatinizi çekmeyecektir ancak production ortamında hem .asmx hemde derlenmiş arka plan kodunu içeren .dll inizin upload edilmiş olduğundan emin olmalısınız.

Web Servisinin Dokumantasyonu

Web servisleri browser arayüzü ile zaten kendi kendini açıklayan bir yapıdadır. WSDL dokumanı web servis hakkında detaylı bilgiler içerir. Ancak WSDL dokumanı web servisinin teknik özelliklerini açıklamak ile beraber bu servisin ne amaçla yazıldığı gibi soyut açıklamalardan habersizdir. Bu sebep ile ayrı dokumanlarda web servisinizin amacını yayınlayabilirsiniz. Ancak web servisinizin kendi öz niteliklerini kullanarak bir takım bilgileri uygulama geliştiricilere sunabilirsiniz.

<System.Web.Services.WebService(Description:="Bu servis iki sayı arasındaki çarpma işlemi sonucunu verir")> _

 <WebMethod(Description:="Test etmek için 2 sayı girmlisiniz.Sonuç size XML olarak dönecektir.")> _
Public Function Carpma(ByVal a As Integer, ByVal b As Integer) As Integer
Return a * b
End Function

Burada verdiğimiz description değerleri web servisimizin test ekranında aynen görünecektir.




Bir XML NameSpace Belirtmek
Internet üzerinde birçok web servisi var ve sizin web servisinizin diğerleri ile karışmaması için web servisinize özgün bir ad uzayı belirtmelisiniz. Ancak karıştırmamnız gereken konu burada belirleyeceğiniz ad uzayının bir .Net ad uzayı olmadığıdır. Bu bir XML ad uzayıdır ve web servisinizi kullanacak geliştiricinin kodlarını engellemeyecektir.

Ad uzayınız bir url adresini referans olarak gösterecektir. Siz internet sitenizin bulunduğu adresi referans olarak gösterebilirsiniz. Şayet bir ad uzayı belirtmezseniz default değer olan http://tempuri.org kullanılır. Web servisinizi geliştirdiğiniz dönemde bu işe yarayacaktır ancak daha sonra değiştirmenizi isteyen bir mesaj görüntülenir.

NameSpace belirtme işlemi:

<WebService(Description:=".....................",_
NameSpace:="http://www.maxiasp.net/Konular")>

şeklindedir.

Web Servisinin Denenmesi
Siz web servisiniz için istemci bir sayfa oluşturmazsınız. ASP.Net çatısı sizin için bir test ekranı yaratacaktır. Bunları inceleyelim:

Browserdan .asmxdosyanızı açtığınızda karşınıza az önce açıkladığımız "Description" bilgilerini ve temel bilgileri içeren bir sayfa gelir.



Burada Webservisine verdiğiniz isme tıklamanız durumunda sizin için bir test sayfası oluşacaktır.



Burada web servisimizin yapması gereken işi yapabilmesi için bizden 2 sayı isteniyor. 2 sayı girip "Invoke" tuşuna bastığımızda bu web servisini kullanacak olan uygulama geliştiricilerin alacağı ve kullanacağı XML sonuç ekrana gelecektir.



WSDL dokumanını görmek ve daha detaylı teknik bilgi almak için .asmx uzantısına ?WSDL eklemek yeterlidir.



Bundan sonraki yazımızda konumuz "Web Servisi Veri Tipleri"