Web Hizmetleri


Internet milyonlarca kullanıcıya verdiği hizmet, merkeziyetsiz/özgür yapısı, sunduğu bilginin miktarı, ve eriştiği yeni pazarlar ile bireysel dünyamızda büyük değişiklikler yaptı. Bundan sonra atacağı adımlar ise uygulamaların birbirleriyle veri ve hizmet alışverişi sağlamasına bağlı olacak. Web Hizmetleri, mevcut Internet teknolojileri ile bunlara eklenecek diğer standartlar üzerinden uygulamaların (ve dolayısıyla kullanıcıların) veri ve hizmet alışverişini yapmasını öngören vizyonun ve teknolojilerin adıdır.

Internet’in bireylere sunduğu hizmetler (kişisel posta, bankacılık, anında alışveriş gibi) büyük işlem hacimlerine ulaşmış durumda. Bugün firmalar olsun, bireyler olsun, dünyanın herhangi bir yerinden herhangi bir web tarayıcısı yazılımla bağlanıldığında ulaşılabilecek bir web sitesi kurabiliyor; mesajlarını, düşüncelerini, ürünlerini duyurabiliyorlar. Kurumsal ve kurumlararası alanda ise bu teknolojiden aynı derecede faydalanılabildiği söylenemez.

Entegrasyon

Kurumsal uygulamalar genellikle büyük bütçelerle kurulmuş ve yıllar süren projelerle oturtulmuş uygulamalardır. Kurum içindeki uygulamaların dahi birbirleriyle veri alışverişinde bulunması ya da birdiğerinden hizmet alabilmesi başlı başına bir mesele olabilmektedir. Örneğin 20 yıldır çalışan bir stok takip sistemini Internet kullanıcılarının sipariş verecekleri bir sisteme bağlamak başlı başına bir sorun olabilir. Bunun temel gerekçelerinden birisi farklı uygulamalar arasında standart arayüzlerin (uygulamaların bir diğeriyle haberleşmek için kullandığı yazılımlar) bulunmayışıdır. Uygulamaların kritikliği ve bütçesel büyüklükleri, yeni ve popüler teknolojilerle donatılmış, hepsi aynı platformda çalışan ve birdiğeriyle entegre olabilen yeni sürümlerle değiştirilmesinin önündeki ciddi engellerdendir.

Halbuki iş dünyasında hayatın gittikçe hızlanması yeni ihtiyaçları, yeni gereksinimleri ortaya çıkardı. Günsonu ya da aysonu bilgi aktarımları yerine ele ulaşan taze bilginin anında tüm uygulamalarda kullanılabilmesi; en alt seviyedeki operatörden en üst kademedeki yöneticiye kadar tüm çalışanların hızlı karar verme yeteneklerinin bilgi sistemleriyle desteklenebilmesi gibi.

Uygulamalar Konuşa Konuşa Anlaşır

Bu noktalardan hareketle bilişim dünyası “entegrasyon” vizyonunu benimsedi. Entegrasyon mevcut uygulamaların standart arayüzlerle birbirleriyle güvenli bir şekilde veri ve hizmet alışverişi sağlamalarına yöneliktir. Böylelikle bir fabrikanın bir anabilgisayar üzerinde çalışan stok takip sistemi ile bir iş istasyonu üzerinde çalışan tedarikçi zinciri uygulaması birdiğeriyle konuşabilecek, üretim döngüsü daha iyi yönetilebilecekti. İşin iyi yanı bu teknolojiler sayesinde tedarikçilerin kullandığı yazılımlarla tedarikçi zinciri uygulamaları bilgi alışverişi yapabilecek ve müşteriler de uzaktan eriştikleri sipariş sistemiyle kendi stok programlarını entegre ederek otomatik olarak sipariş geçebileceklerdi. Üstelik tüm bu uygulamaların Windows, UNIX ya da AS/400 gibi farklı platformlarda çalışmaları bir sorun olmayacaktı.

Son dönemde iki önemli teknoloji bu dağıtık servis hizmetini vermeyi vaadetmişti:

* DCOM (Distributed Component Object Model – Dağıtık Bileşen Nesne Modeli) ve
* CORBA (Common Object Request Broker Architerture – Ortak Nesne Talep Aracı Mimarisi) (aslında bu ifade ‘broker’ın Türkçesi için ‘çöpçatan’ kullanıldığında daha anlaşılır oluyor).

DCOM Microsoft’un, başarılı bileşen teknolojisi COM’un ağ üzerinde çalışması amacıyla geliştirdiği bir teknoloji idi. DCOM endüstriyel bir standart olamadığından Windows harici platformlarda kendine yer bulamadı. Ayrıca işin içine güvenlik girdiğinde (iki farklı Windows ağı arasında dahi) yönetilmesi oldukça güçtü.

CORBA bir şirketin değil OMG (Object Management Group – Nesne Yönetim Grubu) adındaki bir bağımsız standartlar grubunun geliştirdiği bir mimari idi. CORBA uygulama olanakları bulsa da çok pahalı uygulama sunucuları gerektirmesi (ve dürüst olmak gerekirse, zor da bir teknoloji olması) yüzünden az sayıda uygulama ile sınırlı kaldı.

Entegrasyon ihtiyacına çözüm olarak sunulan fikirler sadece bu ikisi değildi elbet. Mesela Java gibi teknolojiler farklı kulvarlardan gelseler de entegrasyon sorunlarını çözebileceklerini söylediler. Java’nın ‘bir dilde yaz, her platformda koştur’ argümanı yeni geliştirilecek uygulamalar için iyiydi ama mevcut uygulamalarla ilgili sorunları doğrudan çözmüyordu. Vesaire… Sonuçta söylenenler olmadı, bu vizyon hayata arzulanan ölçüde geçmedi.

Yeni Bir Ufuk

Bütün bunlar olup biterken bilişim dünyası iki devrim yaşadı. Birisi dünya üzerindeki hemen herkesin gördüğü Internet devrimi, diğeri ise daha çok bilişim dünyasının içinde başlayan ve hala da süregiden XML devrimi. Internet’le ilgili herkes iyi kötü bir fikir sahibi olduğuna göre onun üzerinde fazla durmadan hikayemize biraz ara verip XML’e bir göz atalım.

XML, Internet dünyasında kullanılmak, veri ve veri hakkında bilgiyi aynı metin içerisinde taşımak üzere tasarlanmış bir dil. Örnek olarak siparis1.xml dosyasının içeriğine bir göz atalım:



Bu sipariş belli bir tarihte iki kalem malın belli adetlerde teslimini talep ediyor. Herhangi bir başka dosyadan, standart olmasının ötesinde pek bir üstünlüğü de bulunmuyor. Bu standart yapı içerisinde uygulamaya göre bir sipariş, bir diş randevusu ya da bir sigorta poliçesi tanımlanabilir. XML, HTML’e oldukça yakın ancak daha kurallı bir dil olduğundan uygulamalar tarafından kolaylıkla okunup işlenebilir. Bugün hemen her platformda XML dökümanlarını okuyup yazabilecek yazılım bulunabilir.

Hikayemize geri dönelim. Internet’in başarısının temel bileşenlerinden birisi kuşkusuz HTML ve onu kablo üzerinde taşıyan HTTP gibi teknolojilerin standart olmasıydı. XML de aynı şekilde W3C’de doğduğu ilk günden itibaren bir standart. W3C, OMG gibi bir standartlar kuruluşu. Arkasında MIT, Avrupa Birliği desteğiyle Web’in doğum yeri olan CERN ve Japon Keio Üniversitesi bulunuyor.

Yeni Bir Sabun Köpüğü mü?

Böylece tüm platformlarda çalışabilecek, standart ve ucuz bir entegrasyon hayali üzerinde düşünmeler çoğaldı. Bu egzersizlerin ilk ürünlerinden birisi SOAP (Simple Object Access Protocol – Basit Nesne Erişim Protokolü) oldu. SOAP, XML dökümanlarının aynı HTML gibi HTTP üzerinden bir sunucuya gönderilmesi fikrine dayanır. Bugün nasıl Google arama moturuna gidip ‘ayyıldız otomotiv’ yazıp ‘Ara’ düğmesine bastığımızda Google’ın sunucusu bize istediğimiz servisi (yani bulunan web siteleriyle ilgili bir listeyi) sunuyorsa, aynı protokol üzerinden silecek tedarikçisi web sitesine Siparis1.xml’i – bu sefer web tarayıcımız değil ama uygulamamız aracılığıyla – gönderdiğimizde de tedarikçi bu siparişi işleme koyabilir. Uygulamalar için XML gibi HTTP de hazır yazılımlarla kolayca kullanılabilecek bir teknolojidir. Böylece HTTP, XML ve ikisinin birarada kullanılmasıyla oluşan SOAP bize bu basit web hizmetini bugünkü teknoloji ile çok ucuza verebilir.



Hikayemizin bu kısmı çalışmaları bireyler, DevelopMentor ve Microsoft ile endüstride başlayan, sonradan IBM’in de katıldığı SOAP belirtimi çalışmalarının bir standart olması için W3C’in güvenli ellerine bırakılmasıyla burada bitiyor. SOAP’un hikayesinin pratikte de DCOM ve CORBA’dan farklı olması için endüstri ortak çaba gösterdi ve IBM’in SOAP alet kutusunu devralan Apache.org ile Microsoft geliştirdikleri SOAP arayüzlerinin birdiğeriyle konuşmasını temin ettiler.

Toparlayacak olursak, Web Hizmetleri, HTTP ve XML standart teknolojiler aracılığıyla uygulamaların birdiğeriyle konuşmalarına, veri ve hizmet alışverişi yapmalarına olanak sağlayan, uygun fiyatlı teknolojiler bütünün adıdır.

Daha!

İnsanoğlunun tarihi ihtiyaçların tarihi olduğuna göre hikayemiz burada yeni bir sayfaya ihtiyaç duyuyor. Tedarikçi örneğimize dönelim. Ayyıldız Otomotiv bir süre tüm tedarikçilerine standart bir sipariş formatı kullanmalarını söyledi durdu, ama bu fikir pratikte pek karşılık bulmadı. Tedarikçilerin kimi sadece Ayyıldız Otomotiv’e iş yaptıklarından bu konuda bir sorun çıkarmadılar, ancak diğerleri başka alıcıları da bulunduğundan daha genel formatlara kaymak zorunda kaldılar. Öte yandan pazara yeni giren küçük tedarikçiler sert rekabeti daha iyi hizmetle aşmak gibi değişik bir fikir benimsediklerinden siparişlerin takibi, iptal edilebilmesi, ya da teslim yer ve tarihinin değiştirilebilmesi gibi Ayyıldız Otomotiv’in stok yönetimini çok kolaylaştıran yeni hizmetler sunmaya başladılar.

Peki Ayyıldız Otomotiv bu yeni hizmetlerden nasıl haberdar olacak ve bunları kendi sistemine nasıl entegre edecekti? Tedarikçilerden sundukları hizmetleri tanımlamalarını istediğinde eline kimi faks üzerinde, kimiyse e-postaya iliştirilmiş bir Microsoft Word ya da PDF dökümanı olarak çeşitli tanımlar ulaştı. Tüm bu web hizmeti tanımları aslında aynı şeyi anlatıyordu: web hizmetlerinin adı, hangi adresten ulaşılabilecekleri, hangi tip isteklerde bulunulabileceği, sunulması gereken bilgiler ve hizmetin içeriğini/sorulan sorunun cevabını taşıyan XML dökümanının yapısı. Ancak her biri farklı farklı formatlardaydı.

İşte bu aşamada WSDL (havalı olsun diye ‘vizdıl’ okunur) giriyor hikayemize. WSDL, W3C tarafından evlat edildikten sonra endüstriye sunulmuş ve yukarıda açıkladığımız şekilde Web Hizmetleri’ni tanımlayan bir dildir (Web Services Description Language). Yine XML formatındaki bu standart, web hizmetlerinin tanımlanmasını standartlaştırarak bu hizmetlere ulaşacak uygulamaların hızla geliştirilmesine olanak sağlamaktadır. Burada teknik detaylara girmeden Visual Studio.NET gibi uygulama geliştirme araçlarının bugün insan gözüne oldukça karmaşık gelen bir WSDL dosyasını işleyerek bir web hizmetine, masaüstü bilgisayarımızdaki herhangi bir kütüphane fonksiyonuna ulaştığımız gibi kolayca ulaşmamız için gerekli her türlü kolaylığı sunduklarını söylemekle yetinelim. Aynı şekilde bir Web Hizmeti olarak sunmak istediğimiz herhangi bir uygulama parçası da son teknolojilerle bir masaüstü uygulaması geliştirilir gibi geliştirilebilmekte, bu servislerin tanımları WSDL dilinde otomatik olarak üretilebilmektedir.

O zaman burada aşina olduğumuz terimlerle elimizdeki tanımı tekrar gözden geçirelim: Web Hizmetleri, WSDL ile tanımlanan ve SOAP ile erişilebilen uygulamalardır.

Dünyaya, Gerçeklere ve Geleceğe Dönüş

Güzel hikayemiz sona erdi. Bill Gates, üzerine Microsoft .NET vizyonunu kurduğu Web Hizmetleri’ni yazılım dünyasının önündeki çözülmesi en heyecan verici problemler kümesi olarak görüyor. Güvenlik ve güvenilirlik gibi sorular bunlardan sadece birkaçı. Birden fazla noktanın katıldığı dağıtık işlemleri destekleyen, iletilerin yönlendirilebildiği, kimi noktaların servis dışı olduğu zamanlarda vekillerinin devreye girdiği uygulamalar bu resmin içerisinde yer bulacak mı, şu an bilmiyoruz. Uygulamaların web hizmetlerini arayıp bulmalarına yarayacak bir arama motoruna gerçekten gerek olacak mı, olacaksa UDDI (Universal Description, Discovery and Integration – Evrensel Tanım, Keşif ve Entegrasyon) burada yer bulacak mı, bunların görülmesi gerekiyor.


Evet, alınacak daha çok yol var ancak kurumsal ve bireysel uygulamalara getireceği açılımların taşıdığı büyük potansiyel tüm yazılım devlerinin bu alana büyük ar-ge paraları yatırmasına neden oluyor. W3C bir Web Hizmetleri Mimarisi (WSA – Web Services Architecture) üzerinde çalışıyor. Dahası bugün önümüzde karmaşık olmayan ve çalışan bir yığın hizmet var. Bunun yanında yazılım endüstrisinin - geçmiş tavırlarından farklı olarak - standartlara çok önem vererek bu sorunlar üzerine gitmesi, tüm firmaların enerjilerini gerekli standartları oluşturmakta birleştirmek ve rekabeti bunların uygulanması alanında göstermek arzusu da ileriye yönelik ümitler beslemek için cesaretlendirici bir başka unsur.

Diğer bağlar:

[1] http://www.w3.org/2002/ws adresinde W3’in Web Hizmetleri faaliyetleri topluca izlenebilir.

[2] http://www.develop.com/downloads/WebServicesLGFLN.pdf adresinden DevelopMentor’un Web Hizmetleri ile ilgili daha teknik bir raporu indirilebilir.

[3] http://www-106.ibm.com/developerworks/library/ws-ref1 adresinden IBM’in Web Hizmetleri öyküsüne bir başlangıç.

[4] http://msdn.microsoft.com/library/en-us/dnwebsrv/html/wsdlexplained.asp adresinde WSDL’e daha yakından bakılabilir.

[5] http://www.cdyne.com/SpellChecker adresinde örnek bir web hizmeti uygulamasını ve arkasındaki teknolojiyi inceleyebilirsiniz.

[6] Başka web hizmetleri örnekleri için http://www.xmethods.com’a bakabilirsiniz.

[7] Bir web hizmeti nasıl geliştirilir derseniz http://www.vbws.com/tutors/createws/default.aspx adresi bir başlangıç olabilir.

[8] www.uddi.org adresinden UDDI ile ilgili daha geniş bilgi alınabilir.



Mehmet Kerem Kızıltunç

Yazıyla ilgili görüş ve yorumlarınızı keremkiziltunc@hotmail.com veya yorum@teknoTurk.org adreslerine yollayabilirsiniz.