|
XML |
|
Bu yazıyı ilk kaleme aldığımda XML’in ne olduğunu izah etmeye çalışırken bir kaç sayfanın hemen doluverdiğini gördüm. Daha aklımda yazmayı düşündüğüm onca şey vardı ve ben XML’in ne olduğunun, içinde X harfi bulunan bir kaç kısaltmanın etrafında dönüp duruyordum. Bu şekilde bir yere varmak zor görünüyordu, XML’i üzerinde yazmak için yanlış bir yol seçmiş olmalıydım. Bugün popüler arama motorlarından birine gidip XML yazarsanız karşınıza milyonlarca döküman gelecektir – bu sayıya XML dökümanlarının kendilerinin dahil olup olmadığını bilmiyorum. İnternet’in sınırlı geçmişi ve XML standardının açıklanmasının üzerinden yaklaşık iki buçuk sene geçmiş olmasına karşın bu kadar ilgi gören teknolojinin basit bir markup dili olması elbette düşünülemez. Elimizde istatistikler yok ama XML hakkındaki yazıların çoğunun vizyon ve pazarlama dökümanları olduğuna da eminim. O yüzden yazdıklarımı bir kenara koyup, XML’in hayatımıza nasıl bu kadar hızlı girdiğini ve orada kalmaya neden niyetli olduğunu çözmeye denemeliydim. XML ile ilgili başlangıç noktası olabilecek web sitelerinden birisine (xml.com, xmlhack.com) giderseniz önümüzdeki aylar için ilan edilmiş bir düzine konferans olduğunu göreceksiniz. Bu konferanslarla ilgili linklerden birisini takip edin ve bu sefer hangi firmaların bu konferansa sponsor olduğuna bakın. Devam edin ve firmaların web sitelerine gidin, XML ile çözümlerine bir göz atın. Sonra, örneğin www.xmlsoftware.com adresine gidin ve XML’i destekleyen ürünlerin sayısına bir göz atın. Open source ve bireysel uygulamaları bir kenara koyun, elinizde kalanlara bir bakın. Konferanslar, sponsorlar ve makaleler ile mevcut uygulamalar arasındaki korkunç fark sizi dehşete düşürebilir. Gerçek şu ki, henüz XML’i kullanan, destekleyen ticari uygulama sayısı oldukça az. Ancak tüm IT şirketleri yelkenlerini bu rüzgarla doldurmaya çalışıyorlar. Bu yüzden XML’e eğildikçe bundan dört sene önce Java’ya gösterdiğim heyecanlı ilgiyi hatırladım. Java, İnternet rüzgarını da arkasına almış, platformlardan bağımsız, interoperability sorunları da dahil olmak üzere herşeye derde çare olacak bir dil idi. Java’nın olgunlaşmasını beklemeye karar verip biraz geri çekildiğimi hatırlıyorum; Java Microsoft’a karşı olmanın bir simgesi oldu; Oracle tüm yatırımını Java’ya yaptı; Microsoft gemiye alınmayacaktı; Sun, Avrupa Topluluğunun Java’nın standart olması için istediği dökümanları sunmadı; Java standart olamadı ve Microsoft Visual Studio 7’de Java’yı desteklemeyeceğini açıkladı. Şimdi adı C# ve Java olan iki Java’mız oldu. Aynı şey XML’in de başına gelir mi? Elbette XML Java gibi bir geliştirme değil, ancak altını çizmek istediğim konu XML’in bu günkü popülaritesini teknik yanından değil, büyük IT şirketlerine vaadettiği yeni pazarlardan alıyor olması. İşin diğer bir farklı yönü, XML, Java gibi bir endüstri devi tarafından değil, HTTP gibi İnternet standartlarını koymuş ve endüstri devlerinin de üyesi bulunduğu W3C tarafından oluşturulan bir çalışma grubu tarafından standartlaştırıldı ve sektöre sunuldu. Kara mizah, bu çalışma grubunun başında yine Sun Microsystem’den bir yöneticinin olduğunu bize hatırlatıyor. XML Days Europe’un Kopenhag bacağına katılmaya XML rüzgarı konusundaki bu endişelerimi biraz bastırarak karar vermiştim. Ne de olsa bugüne kadar daha çok Microsoft penceresinden bakmıştım ve biraz da Java koklamanın bir zararı olmazdı. Bu hususlarda iyimserlik pek fayda etmiyor. Konferansta XML ile çok güzel iki konuşma dinlememi, XML’e ucundan bulaşan diğer şirketlerin fırsat fırsattır diyerek tüm ürün yelpazelerini, vizyonlarını ve umitlerini anlatmalarına karşı bir teselli sayıyorum. OMG’nin başkanı Dr. Richard M. Soley, konuşmasında paralel düşüncelerini söyle aktardı: “XML, tüm entegrasyon problemlerini çözecek, tüm protokol sorunlarını halledecek, tüm uygulamaları birbiriyle konuşturacak, kansere ve gribe çözüm olacaktır.” Aslında elimizdeki ürün yelpazesine yeni bir parça daha ekleniyordu ve yapmamız gereken bunu büyük resimde doğru yere oturtmaktı. XML: Ne? XML’in rüzgarı standartların oturmasıyla yavaş yavaş dinecek, rüzgardan hırpalanan tekneler bakıma alınacak, ama ticaret devam edecek, kimileri daha zengin olacaktı. Sektör istikrarı değil, rüzgarı seviyordu. Peki XML gerçekten nereye kadar bir çözüm sunuyor? Hangi sorunları halletmemize yardımı dokunabilir? Microsoft gibi bir devin tüm yatırımını, geleceğini, .NET’i XML üzerine kurmasının arkasında ne gibi niyetler olabilir? XML’in doğru zamanda ortaya çıkmış olması inkar edilemez. Bundan on - yirmi sene önce mevcut olan microParser’ın tek farkı üçgen parantezler yerine normal parantezler kullanması imiş. Klavye üreticilerinin küçüktür ve büyüktür tuşlarının fazla kullanılmadığın söylemesinden hareketle XML’de parantezlerin değiştirildiği söylentisiler arasında. XML, SGML adı verilen Standard Genel İşaretleme Dili’nin (Standard Generalized Markup Language – ISO 8897) basitleştirilmiş, İnternet uygulamalarına yönelik rafine edilmiş hali.XML dili sentaks olarak SGML’den gelen ve HTML’den tanıdığımız yapıyı kullanırken, veri yapılarını ya da dökümanların gramerini tanımlamak için ‘şimdilik’ DTD (Döküman Veri Tanımı – Document Type Definition) kullanılıyor. DTD’nin esnek olmaması, XML’den ayrı bir dil olması ve öğrenme gerektirmesi, ve daha da önemlisi veri tiplerine imkan tanımaması şemalar (XML Schemas) gibi nesne yönelik XML gibi (Object Oriented XML – SOX) gibi standart çalışmalarına güç vermiş. XML ile başlayıp biten yüzlerce kısaltma olduğundan hepsini ezberlemek yerine havanın biraz durulması beklenebilir – eğer mümkünse. XML dökümanlarına erişmek için yine W3C’nin tanımladığı DOM (Döküman Nesne Modeli – Document Object Model) ve xml-dev haber listesinin (egroups.com’dan üye olunup XML dünyasının en sıcak tartışmaları izlenebilir) üyelerinin geliştirdiği ve David Megginson’un organizasyonunu üstlendiği SAX (Basit XML Arayüzü diyelim – Simple API for XML) başta olmak üzere, bir kaç arayüz şu anda XML dökümanlarına erişmek için kullanılıyor. XML: Etraftakiler XML bir veritabanı değil. Bugün IBM, Oracle, Microsoft gibi devler veritabanı yönetim sistemlerine XML adında bir veri tipi eklemiş durumdalar. Ayrıca İnternet arayüzleri (genellikle web sunucu eklentileri) ve istemci uygulamalar aracılığıyla XML dökümanlarının parçalanarak veritabanındaki ilişkisel tablolara aktarılmasını, klasik SQL sorgularının gönderdiği sonuçları XML’e çevirerek web ortamına aktarılmasını da sağlıyorlar (Microsoft SQL Server 2000 Technology Preview, Oracle XSQL Applets, vesaire). İnternet’de XML’in HTML’in yerini alması gibi bir şey de sözkonusu değil (XML’in içerik ve formatı birbirinden ayırdığı doğrusunu her zaman bir başka W3C standardı olan Cascaded Style Sheets’in ne yaptığını da akla getirerek düşünmek gerekiyor.). XML dökümanı her ne kadar insan tarafından okunabilir olsa da, web tarayıcınızın başında oturup üçgen parantezleri saymaktan hoşlanmayacağınız düşünülerek sunucu üzerinde XSL çevrimleri (Extensible Stylesheet Language – Transformations ya da XSLT) yorumcuları ile HTML üretiliyor. XSLT’nin en çok umut vadettiği nokta değişik tarayıcı arayüzleri için (web tarayıcımız, WAP istemcisi, Palm gibi diğer kablosuz cihazlar) aynı XML dökümanından farklı HTML parçaları üretebilecek olması. Bunu daha önce –mesela- ASP scriptimiz içerisinde standart olmayan bir şekilde kendimiz yapıyorduk. Yine de XSL standardı henüz açıklanıyor ve performans konularında biraz temkinli olmakta fayda var. Buraya kadar çizilen resimde XML’in son kullanıcıya pek gösterilmediğini farketmemek elde değil (tekil uygulamalar buna istisnalar çıkarmakta gecikmemektedirler). Peki bu kadar mı? XML veritabanlarında saklanacak mı? Ya da hiyerarşik veri tabanları ilişkisel veritabanlarının yerini alacak mı? Anlatılanlara göre bir zaman ağ veritabanları sistemleri varmış, teknik açıdan yetersiz olmamakla beraber uygulama sahası açısından ilişkisel veritabanlarına olan ilgi ilişkisel sistemlerin daha popüler olmasına neden olmuş. Aldığım veritabanı teorisi derslerinden aklımda kaldığına göre ilişkisel veritabanları ilişkisel bir cebir (relational algebra ve relational calculus) üzerine kurulu, matematiksel bir tabanı var. Hiyerarşik veritabanları için böyle bir altyapımız olsa bile üzerine neler eklememiz gerekecek? Sorgu optimizasyon servisleri, depolama, yedekleme, yineleme (replication), dağıtık işlemler (distributed transactions), istemci arayüzleri (ODBC, JDBC muadili arayüzler). Bir düşünelim: Mevcut ilişkisel veritabanlarına yapılan yatırımı ölçmek mümkün mü? Örneğin, bir optimizer kaynak kodunu değiştirmek, bir çok veritabanı için birkaç yıllık bir proje olabilir. O halde, bundan bir kaç sene önce nesneye yönelik veritabanları rüzgarının estiği günlerde olanları da hatırlayarak (pazarlık bir çok masada nesne-ilişkisel veritabanlarının masaya konmasıyla bitmişti) XML veritabanları gibi şeylerin gelip de her yerde hükümran olmasını bekleyemeyiz. Zaten Oracle Certified Database Administrator olmak için harcadığımız onca emeğin, optimizasyon için uykusuz kalan gecelerin boşa gitmesi fikri de pek canımızı sıkıyor. O halde (genelleme yapıyoruz:) olacak olanın XML’in veritabanlarına bir özellik olarak eklenmesini aşacağını beklememeliyiz. Belki veritabanları XSQL, XQL, XML-QL ya da adı her ne olacaksa yeni bir sorgu dilini de destekleyecekler ama SQL3 belki benzer özellikleri zaten sunacak. Ya da özyinemeli sorgular veya emülasyonları (Oracle’ın CONNECT BY’i gibi) hayatımıza başka bir kapıdan girecekti. XML: Büyük Oyun XML’i büyük oyun yapan şey aslında XSL değil, XQL de değil; yukarıda saydıklarımız temel taşlar ve hergün kullandığımız, bir zaman sonra kullandığımızın farkına bile varmadığımız gereçler olacak, olmak zorunda. Çünkü bakmamız gereken ya da devlerin baktıkları yer başka. XML, B2B’ı mümkün kılabilir! Peki B2B bugüne değin mümkün değil miydi? EDI (Electronic Data Interchange) gibi teknolojilerle zaten dev şirketler işlemlerini elektronik olarak uzun yıllardır yapıyorlardı (yapmaya da devam etmemeleri için bir sebep görünmüyor). XML, ticaretin o canılıcı yanından bize el sallıyor: maliyetleri düşürebilir, daha çok insanı (şirketi) bu alana sokabilir. Ve en önemlisi: Microsoft’u büyük sistemlere eriştirebilir. XML, veri saklamaktan çok veriyi taşımak için kullanılacak. Neden mi? Çünkü veriyi saklamakla ilgili bir sorunumuz yok. Microsoft SQL Server dakikada 500,000 işlem (transaction) yapabiliyor, NCR Teradata gigabyteları çoktan geride bıraktı, ölçeklenebilir bir şekilde çok büyük rakamlarda veri depolayabiliyor ve OLAP sorgularına muhteşem başarımlarla cevaplar veriyor. Sorunumuz, İnternet çağında başka uygulamalarla konuşmak. Bu kurumumuzun uygulamaları olabilir (araştırmalara göre Global 200 şirketlerinde ortalama 45 farklı uygulama kullanılıyor, muhasebe, dağıtım, insan kaynakları, işakışı, vesaire) ya da İnternet üzerinden alacağımız bir servis. Interoperability (etkileşimli çalışma mı demeli?) sorunlarını çözmek için farklı yaklaşımlar duyuldu. DCOM ve CORBA etkileşimli çalışmanın standardı olmaya çalıştılar. IIOP, TCP/IP farklı seviyelerde farklı platformlardaki uygulamaların birbiriyle konuşmasını sağlayacak yöntemler olarak gelişti. Ancak bir türlü doğru yoğunluğu tutturamadığımızdan ya dibe batıyorduk ya da gövdemiz neredeyse tamamen suyun üzerinde kalıyordu. XML bu sorunları çözebilir mi? Bugün SOAP (W3C, Microsoft’un verdiği standart taslağı üzerinde çalışıyor) ile basit bir nesne erişim protokolü tanımlamaya çalışıyoruz (Simple Object Access Protocol). Bunu standartlaştırabilirsek, bir istemci, arzuhalini bir XML dökümanına dökecek, döküman tüm sunucu ve istemcilerin konuştuğu ortak bir dil olan HTTP üzerinden web sunucusuna iletilecek. Sunucu, XML dökümanı UTF-8 gibi Unicode bir kodlama ile kodlanmış olduğu için hiç bir ikili (binary) çevrime tabi tutmadan bu isteği uygulama sunucusuna, ya da vekiline iletecek. Servis istemci adına SOAP mesajı içerisinde gelen parametrelere göre çalıştrılacak, ve sonuç tekrar SOAP mesajı olarak paketlenecek. Cevap niteliğindeki XML dökümanı yine HTTP üzerinden kullanıcıya iletilecek. Cevap içerisinde 2+2’nin cevabı olabileceği gibi ‘şahsıma ait olan hisse senetlerinin ve tüm hesapların bir ekstresini rica ediyorum’ gibi bir sorgunun cevabı da bulunabilir. Bu kadarla bitmiyor: Farklı endüstrilerden kurumlar birbirleriyle yaptıkları ticareti elektronik ortamda gerçekleştirmek istiyorlar. Bunun için birdiğerlerinin XML dökümanlarının ne anlama geldiğini bilmeleri gerekiyor. Temas halinde olunan her kurumdan farklı yapıda (DTD’si ya da şeması farklı) bir XML dökümanı alıp bunların içinden çıkılamaz bir hale gelmek pek olası olmadığından, tüm endüstriler kendi iş yapma biçimlerini standartlaştırma gibi yollara gitmek istiyorlar. XML Sözlükleri (XML Vocabularies) geliştiriliyor. Ya da XML Sözlüklerinin tanımlanabileceği ortamlar tanımlanıyor (ebXML). Allaire, CommerceOne, RozettaNet, Microsoft BizTalk, XML.ORG bu yeni oluşumda yer almaya çalışıyorlar. Bu hizmetlerin nerede bulunabileceğini, hizmetleri sunanlarla nasıl konuşulacağını tanımlamak için UDDI gibi standartlar oluşturuluyor. İnsanlar ortak bir dil bulamadı ama bilgisayarlar esperantoyu buldular gibi. XML rüzgarı ya da bir başkası, buzdolabımızı açıp ‘yaaa peynir kalmamış’ dediğimizde, buzdolabımızın ‘sipariş vereyim mi?’ demesine, ‘evet, yarım kilo kaşar istesek’ dediğimizde, buzdolabımızın fiziksel olarak mevcut olmayan marketin sunucusuna bağlanıp verdiği siparişle marketin peyniri dağıtım şirketinin görev listesine eklemesi ve stokların belli seviyenin altına düştüğünün anlaşılmasıyla süt üreticileri pazarında 100,000 litre süt için bir açık artırma başlatılmasına, açık artırmaya giren süt üreticilerinin işi başka elektronik pazarlarda taşıma ve şişeleme için ihale açmalarına ve gelen rakamlara göre teklifler vermelerine kadar götürmeden, Bill Gates emekli olmadan ya da insan hayal etmeyi bırakmadan da duracağa benzemiyor.
|