Web Servisleri
Web servisleri daha önceden kullandığımız program modülleri gibi tek başlarına belirli bir işi yerine getirmek üzere yapılmış programlar. Bu servisleri kullananların programın detaylarını bilmelerine gerek yok ancak servisler nasıl kullanacaklarına dair kontrat olarak adlandırılan belirli arayüzler içeriyorlar. Bu kontratlar sağlanan servisleri mesajlar şeklinde nasıl cağrılacağını ve geri dönen sonuçların tanımlarını içeriyor. Örneğin Passport.com da kullanılan authentication servisi nasıl mesajlar kabul ediyor (username ve password ve/veya o an sahip olduğumuz token) ve authentication nasıl anlaşılıyor bilgisi bu kontratların içinde bulunuyor. Kontrat içerisinde servisin yapabildikleri, mesaj sıralaması, kullandığı protokoller bulundugu ölçüde Web servisi kullanıcıları farklı şekillerde kendi uygulamaları için bu servisleri kullanabiliyorlar. Kontrat değişse dahi kullanım bilgileri içerisinde olduğu için eger geriye doğru uyumlu ise kullanıcı programları problemsiz çalışmaya devam ediyor. Tabi ki bütün bunları yapabilmek için kullanılan teknoloji XML. Kontratları tanımlayan (SCL) Service Contract Language tamamen XML grameri üzerine oturtulmuş bir yapı. DISCO (Discovery) tanımı web servisleri kontratlarını yayınlayabilmek ve kullanıcıların bunları bulabilmesi için geliştirilmiş bir protokol ve gene XML tabanlı. Neticede SOAP, SCL, Disco gibi protokolller uygulama geliştiricilere web servisini kullanmak için yardımcı olmak üzere tasarlanmış protokoller. Yazılımcılar bu protokolleri ve syntax lerini bilmek zorunda değiller çünkü geliştirme araçları (VS.NET) zaten bu yapıları tanıyor ve interface i yazılımcıya gösteriyor. .NET Framework içerisinde servisler önemli bir yer tutuyor. Bunlar Sistem üzerinde çalışan Common Language Runtime (CLR) üzerinde temen classalrı kullanan ve Winforms ve Webforms ile direkt haberleşen bir yapıda bulunuyor. Web Servisleri ise yanlızca Web için tasarlanmış olduğu için Winforms un yanısıra ASP+ ın bir parçası gibi bağımsız çalışan ve iyi tanımlanmış programlar olark bulunuyor
Servis altyapısı herhangi bir .NET dili için temel class ları ve programlama araçlarını sağlıyor, böylece farklı dillerde farklı class lar kullanmadığınız için her ortamda aynı hata ayıklama, kurulum, ve analiz araçlarını kullandığınız için .NET ortamında öğrenme zamanı çok daha kısalıyor. Frameworkün içinde bulunan class libraryleri standart olarak tüm dillerde kullanılıyor. Böylece farklı dillerde farklı integer, string vs gibi yapılarla karşılaşıp bunları birbirine çevirmek zorunda kalmıyorsunuz. Neticede .NET Framework Web servisleri için olması gereken şeyi, yani standart bir yapıyı getiriyor, Web servisleri de ihtiyaçları olan diger standartları bunların üzerine kurarak gereken altyapıyı tamamlıyor. ASP+ ile birlikte karşımıza çıkan Webform ları, uygulamalarda Visual basic ile elde ettiğimiz üretkenliği web üzerinde de kullanabilmemizi sağlıyor. Web formları ASP ve HTML kullanarak kendi kontrolleri ile web uygulamalarını masa üstü uygulamaları gibi geliştirebilmemizi sağlıyor. Web Formaları üzerinde kullanılan kontroller standart HTML olarak yazılmış kontroller. Böylelikle veri bağlama, listeleme, görüntüleme ve veri girişi tasarımlarını daha hızlı yapabiliyoruz. ASP+ aynı zamanda web servislerini programlayabilmemiz için de gelişmiş bir programlama modeli getiriyor. ASP ve VB (veya C# veya C++ veya COBOL …… ) kullanarak HTML, SOAL, SCL, XML vb protokolleri hhiç öğrenmeden web servislerini kullanabiliyoruz. Bir web servisi yaratmak için ASP+ ta bir asmx dosyası yaratmamız gerekiyor. Bu dosyadaki public class içine WebMethod attribute ile tanımlayacağımız Web Servisi metodunu ekliyoruz. Bu metodlar ise ASMX dosyasına gelen HTTP istekleri ile harekete geçiyor. ASP+ ın güzel bir özelliği de Bu class ın metadatasını inceleyip SCL dosyasını kullanıcı tarafından istendiğinde otomatik olarak üretebilmesi. Web servisi kullanıcıları ise SOAP, HTTP GET, HTTP POST gibi yöntemlarle isteklerini gönderiyorlar. Bu arada kullanıcı için bir proxy yaratılıyor ve bu proxy web servisine giden istekler ve gelen cevapları kendi üzerine alarak uygulama ile konuşuyor. Böylelikle uygulama servisi ölçeklenebilir bir şekilde kullanabiliyor. Bu model aynı zamanda stateless bir yapı üzerine oturtulmuş, bu da ölçeklenebiliriliği arttırıyor. Sonuçta bütün bu protokoller, standartlar ve programlama disiplinlerinin getirdiği basit ve esnek bir Web servisi geliştirme ortamı yaratıyor. Geliştirme ortamında protokolleri bilmeniz gerekmiyor, sadece normal bir ASP sayfası yazarmış gibi Servisinizi ve gine aynı şekilde bunu kullanan sayfayı yazıyorsunuz. Bu da Web servisi geliştirme konusunda büyük bir rahatlık sağlıyor. Web servislerine gelince, şu anda görülen tüm uygulamaların internet üzerine taşınacağı ve birbirleri ile konuşmak zorunda olacağı, Web servisleri ise iki probleme de çözüm getirerek geleceğin uygulama standardı olmayı garantiliyor.


