Web Servis Mimarisi – Veri iletimi (Data Transmission)
Bilgisayar Teknolojileri gelişen teknoloji ile son yıllarda oldukça fazla değişti. Özellikle Stand-Alone çalışmak üzere tasarlanmış istikrarlı AS400’ler den günümüz bütünleşik sistemlere doğru oldukça hızlı bir değişim yaşandı. Bu adımda en büyük değişiklik ise kendi kendine çalışan sistemlerden her noktada farklı bir servis ya da programla iletişime geçen yapılar ortaya çıktı. Böylece yazılım geliştiricilerin odağına veri alış verişi ciddi bir konu olarak girmiş oldu.
İlk Halleri,
Önceleri, veri alış verişi mümkün olan en basit yollarla ele alındı, standart karakter uzunluğunu temel alan düz metin iletimi şeklindeki mesajlaşmalar olarak başlayıp, Bir süre Copybook kullanımı ve delimiter character yordamı sonucu yine düz metin olarak sürmüştür.
İlerleyen dönemlerde toplu veri iletimi ihtiyaçlarının da etkisi ile Dosya kullanımı gibi alternatiflerde denenmiş, ancak neticede daha standart bir yapı olarak XML ortaya çıkmıştır.
Standartlar,
XML (eXtensible Markup Language) temel olarak Server-Client mimarisinde sunucu-istemci arasında gerek toplu gerekse münferit veri iletiminde genel geçer kuralların oturtulması ve daha performanslı hale getirilmesi amaçlı oturtulmuş, HTML yapısından esinlenerek geliştirilmiş bir işaretleme dilidir. W3C (World Wide Web Consortium) tarafından standartları belirlenir.
HTML gibi hiyerarşik bir işaretleme dilidir. Ancak XML’de kullanılan etiketler, HTML’den farklı olarak kişiler tarafından belirlenir ve ön tanımlı değildir. XML için listelenebilecek 4 temel kural şu şekildedir.
· XML etiketleri hiyerarşik bir yapıda oluşturulmalıdır.
· Açılan etiketler mutlaka kapatılmalıdır.
· XML’ de etiketlere nitelik atanabilir.
· Xml Case Sensitive bir dildir.
XML in bilinen versiyonları 1.0 ve 1.1 olarak ele alınabilir. 1.0 ve 1.1 arasındaki temel farklar Encoding bazlı farklardır. Bunları listelemek gerekir ise:
· 1.1 Encoding olarak forward compatible iken 1.0 backward compatible dır.
· 1.0 satır sonu karakteri desteklemez iken 1.1 de hizalama hatalarını gidermek amaçlı destek eklenmiştir.
· 1.1 de 1.0 deki şüpheli karakterleri desteklemek için kontrol karakterleri eklenmiştir.
· 1.1 ile Referans’ larda URI (Uniform Resource Identifier) ın yanı sıra IRI (Internationalized Resource Identifier) desteği de gelmiştir.
XML user-defined olduğu için veri tipi tanımları SXD (XML Schema Definition) ile yapılmaktadır. Önceleri veri kontrolü (Data validation) konusunda performans kaygısı nedeni ile bir süre Well-designed XML denilen sıralamanın önemli olduğu sürüm kullanılmış olsa da Günümüzde Daha esnek bir yapıda çalışmaktadır. XML veri saklama anlamında kullanımı olsa da temel olarak veri alış-verişi amaçlı geliştirilmiştir, dolayısı ile Web-service yapılarında en yaygın görünen cevap tipidir.
Çıkarımlar,
XML tipi dönüş sağlayabilmek için MIME Type tipinin “textxml” olması gerekmekte buradan da anlaşılabileceği gibi cevap static metin olmaktadır. Sonraları Big-Data kavramı ile toplu verinin boyutları tekrar değerlendirilmeye başlandığında, veri iletimi adımının da revize edilmesi gerekliliği oluştu. Zira günümüz odak noktalarının en önemli değerlerinden biri performans ve bu noktada da transfer edilen veri ile ne kadar fazladan bilgi taşındığı önemli. Restfull servisler ile birlikte JSON (JavaScript Object Notation) cevap dönen servis yapıları şekillenmiştir. JSON yapıları Javascript ten alışa geldiğimiz, minimum kontrol bilgisi içeren nesneler olduğu için yüklü verinin iletimi noktasında oldukça pratik ve XML e alternatif oluşturabilecek bir çözümü bizlere sunuyor. Bu noktada Dikkat çeken bir diğer nokta, Restfull servislerde JSON cevap tipi nedeni ile MIME Type ayarının “applicationjson” olması. Kısacası XML gibi static bir tip değil. Başka bir değişle uygulama, dolayısı ile dinamic verilerin taşınması, yerine göre farklı girdilere farklı cevap dönen metotların Servis cevabı olarak istemciye taşınmasına da olanak sağlayacaktır.