Makale Özeti

Web servisleri, insanların hayatını bir anda değiştirebilecek bir şeydir (Kişisel deneyim, ayrıntılı bilgi için bana yazın.) Web servisleri, browser tabanlı olmayan uygulamaların web programlama modeline uygulanmasıdır.

Makale

Her yanımızın ağlarla örüldüğü, rüyalarımızda çitin üzerinden atlayan ve 1lerin görüldüğü, "What is The Matrix" sorusunun sıkça sorulduğu bir zamana doğru ilerlerken, elektronikleşen dünyada artık her cihaz bir şekilde bu ortama ayak uydurmaya çalışıyor. Evde bildik, tanıdık tüm cihazlar (buzdolapları, televizyonlar, kombiler, ütüler aklınıza ne geliyorsa) bir biri ile iletişim kurma ihtiyacı gösteriyorlar. -Şu an sadece temel network kartı taşıyabilen bir kaç cihaz gerçekleştirebiliyor ama yakın zamanda her cihaz birbiri ile konuşacak.- Fakat bu cihazlar farklı türler, dolayısıyla bunları ortak bir dilde buluşturup, konuşturmak gerekir. İşte bu dil XML. Fakat bu dildeki kelimeler belli bir düzenle ortama sunulşmalı, işte bu ortamı hazırlayan yapıda HTTP, Dili bilmek tamam da yeterli değil. Birde bunların konuşmasını sağlayacak yazılımlar gerekir. İşte bu yazılımları da şu anda Web Servisleri olarak tanımlıyoruz. Peki nedir bu web servisleri? Web servisleri, insanların hayatını bir anda değiştirebilecek bir şeydir (Kişisel deneyim, ayrıntılı bilgi için bana yazın.) Web servisleri, browser tabanlı olmayan uygulamaların web programlama modeline uygulanmasıdır. Şu an kullanımda olan en güzel örneklerden biri Microsoft Outlooktur. Outlook, local Pc üzerinde çalışırken, sizin email hesabınızın bulunduğu sunucu üzerinde işlemler yapar. İster özel bir mail adresiniz olsun, isterseniz bir hotmail hesabınız olsun her ikisine de bu yazılım üzerinden erişebilirsiniz. Diğer bir başarılı örnekte, şu an internet üzerinde search yaparken kullandığımız kazaaz programıdır.

Web servisleri, basit, esnek, internet üzerinde birbirine bağlanan uygulamalar için bir standart sağlayan bir yapıdır. Bir web servisi herhangi bir işletim sistemi üzerinde yazılmış olabilir, farklı bir işletim sistemi üzerinde çalışabilir, yazılım dili bağımsız olarak oluşturulabilir (ASP.NET bir web servisi oluşturabilmek için bir çok gelişmiş yeteneğe sahiptir.), diğer sistemlerden farklı bir object model kullanmış olabilirsiniz. Bunların hiç biri problem değildir. Çünkü web servislerini bu kadar başarılı kılan, onların dil bağımsız, platform bağımsız, hatta protokol bağımsız oluşturulabilmesidir. Diğer component teknolojileri gibi, web servisleri DCOM(Distributed Object Model) kullanmaz, yerine tüm internete bağlı olan her cihaz için standart olan XML (Extensible Markup Language) veri formatını, HTTP (HyperText Transfer Protocol) ve SOAP(Simple Object Access Protokol) protokollerini kullanır. Kısacası, web standartlarını destekleyen herhangi bir sistem web servislerini de destekler.

Peki bir web servisi nasıl yazılır ve nasıl çalışır?
Bir web servisi oluştururken, öncelikle namespaceleri, classları, özellikleri ve metotları içeren, asmx uzantılı bir dosya oluşturulur. Sonrada internet üzerinden erişilecek web metotları oluşturulur. Örneğin VB.Net üzerinde, temel dört işlemi gerçekleştiren bir web servisi oluşturalım.

<%@ WebService Language ="VB" Class="MatematikServisi" %>

Imports System
Imports System.Web.Services

Sınıf tanımı
Public Class MatematikServisi : Inherits WebService

Public Function <WebMethod()> Topla(number1 As Integer, _ number2 As Integer) As Integer
Return (number1+number2)
End Function

Public <WebMethod()> Function Cıkar(number1 As Integer, _
number2 As Integer) As Integer
Return (number1-number2)
End Function

<WebMethod()> Public Function Carp(number1 As Integer, _ number2 As Integer) As Integer
Return (number1*number2)
End Function

<WebMethod()> Public Function Bol(number1 As Integer, _ number2 As Integer) As Double
Return (number1/number2)
End Function

End Class

Şimdi bu basit web servisini açıklayacak olursak, ilk satır klasikASP.Net <%@%> tagları ile başlar ve ASP.Nete, bu uygulamanın Visual Basic dilinde yazılmış bir web servisi içerdiğini ve bu servisi sağlayan sınıfın adının MatematikServisi olduğunu bildirdik. Imports deyimi ile ad alanlarının tanımlamalarını uygulama içerisinde etkin kıldım. Ad alanları, ingilizcesi namespace, önceden üretilmiş bir işlevler kümesidir. System ve System.Web.Services ad alanlarını aktifleştirdikten sonra, kullandığım sınıfın tanımını yaptım. Bu sınıfa da kalıtım yoluyla , yani inherits deyimi ile WebService özelliklerini aktardım. Standart olarak bir web servisi yazılımı vardır. Bu satır otomatik olarak bu kod kümesini oluşturduğum yeni sınıfa, diğer bir deyişle türetilmiş sınıfa, ekler. Dolayısıyla MatematikServisi isimli Web Servisim bu şekilde web servisi olma özelliği kazanır. Bundan sonra yapılan klasik Visual Basic komutları ile fonksiyonlar yazmaktır. Farklı olan tek şey, fonksiyonların bir şekilde Web metodu olduğunu belirtmektir. Yukarıda farklı şekilde nasıl kullanılacağı yazılmıştır. En sonunda da açtığım sınıfı End Class deyimi ile kapattım. Dosya ismi olarak da MatSer.asmx ismini verdim.

Şimdi bu web servisinin nasıl çalıştığına bakalım. Bir web servisini iki varlığa ihtiyaç duyar, bunlar kullanıcı ve web sunucusudur. Kullanıcı, internet kullanıcısıdır, yani internet browserımız. Web sunucusu ise bu web servisini kullanmamız için ortamı hazırlayan, web servisini içinde bulunduran yapıdır.

Web servisi browser yoluyla çağırıldığında, tanımlama sayfası yani web servisinin içeriği görüntülenir. Bunun için HTTP protokolü kullanılır. Eğer bir metodu çağırırsanız, web servisi HTTP protokolünü kullanır ve sonuç XML formatında döndürülür. Web servisinin tanımlanmasından sonra yapılması gereken bunu herkesin kullanımına açmaktır. Bunun için Wsdl.exe programı kullanılarak proxy sınıfı oluşturulur. Wsdl.exe programı, proxy için kaynak kodu içeren bir .vb veya .cs dosyası oluşturur. Bu proxy sınıfı bir dll dosyasına derlendikten sonra artık web servisi kullanıma açıktır. Bu dll dosyasını web sitenizdeki /bin dizininin altına kopyaladıktan sonra web servisi kullanılabilir durumdadır. Artık web sitenizde proxynin bir örneğini yaratıp, içerisindeki metotları çalıştırarak, dönen sonuçları kullanabilirsiniz. Web servisinizi notepad üzerinde yazmışsanız, wsdl.exe programını kullanın. Eğer Visual Studio.Net üzerinde yazmış iseniz kodu derlediğinizde VS.Net otomatik olarak bir wsdl dosyası üretecektir. Bu dosya sizin web servisinizin tanımlamasını içerir. Dedik ya herhangi bir yerdeki web servislerini alıp kendi uygulamanızda kullanabilirsiniz diye, işte wsdl dosyasına aldığınız web servisinin kullanım klavuzudur. Bize ne hizmet vereceğinin, nasıl kullanıldığının bilgilerini de içerir.

Şimdi oluşturduğumuz web servisinin vb dosyasını ve dll dosyasını oluşturalım.

.vb Dosyası
Web servisimi, Notepad üzerinde yazdığımdan aşağıdaki komut satırını yazar ve çalıştırırım.

wsdl /l :vb /n:matser
http://localhost/ASPNET/MatSer.asmx?wsdl

Bu komut satırı ile IIS server üzerinde tanımlı local host wsdl dosyası oluşturulur. Görüldüğü gibi wsdl.exe dosyası bir çok parametre alabiliyor, bunları görüntülemek içi wsdl/? komutunu kullanabilirsiniz. Bu parametrelerden en çok kullanılanlar:

/l [anguage] : yazdığınız dili bildirir. Default değeri CS(C#)tir. VB(Visual Basic), JS(Microsoft JScript.Net) değerlerini alabilir.

/n [amespace] : proxy tarafından üretilen ad alanını belirtir.
/p [assword] : sunucuya bağlanırken, burada tanımlanan şifrenin girilmesini ister.
/d [omain] : sunucuya bağlanırken hangi domain üzerinden bağlanacağını belirtir.


Eğer Visual Studio.Net kullansaydım, VS.Net otomatik olarak wsdl dosyasını http://localhost/MatSer/MatSer.asmx dizinine oluşturacaktı.

.dll Dosyası
Şimdi de vb dosyasını dll dosyasına derleyelim.

vbc /out:.\bin\MatSer.dll /t:library /r:System.dll /r:System.Xml.dll /r:System.Web.Services.dll MatSer.vb

bu işlemde bittikten sonra artık elimde dll formatında bir web servisim oluşur.

Peki bu dlli nasıl kullanacağım sorusunu duyar gibiyim. Bu da oldukça basit, yapmanız gereken tek şey, eğer asp içerisinde kullanacaksanız bir vbscript içerisinde, visual basic kullanıyorsanız direk kod üzerinde, önce o sınıfa uygun bir örnek yaratmak, ve onun özelliklerini almak yeterli. Örneğin oluşturduğumuz web servisini bir visual basic
üzerinde yazılmış bir program içerisinde kullanalım.

Private Sub cmdTopla_Click()
Dim myproxy As MatSer
myproxy = New Matser
Text3.text = myproxy.Topla ( Cint (Text1.text), Cint (Text2.text) )
End Sub

Tüm işlem bu kadar. Öncelikle

Dim myproxy As MatSer,

satırı ile oluşturduğumuz web servisinin bir örneğini yarattık, Sonra

myproxy = New Matser

satırı ile web servisimizin tüm özelliklerini oluşturduğumuz örneğe de ekledik. Böylece web servisimizin bir eşini yaratmış olduk. Daha sonra da bunun üzerinden, web servisinin özelliklerini, içerisinde tanımlanan fonksiyonları kullandık.

Varolan bir web servisini kullanmak istersek www.xmethods.net ve www.gotdotnet.com sitelerinde kullanıma hazır web servisleri bulabilirsiniz.

Size iyi web servisi geliştirmeler, yazılımla kalın.