XML (Extensible Markup Language-Genişletilebilir İşaretleme Dili) Web servisleri nesne ve veri paylaşımını programlama dilinden bağımsız bir şekilde gerçekleştirmeyi sağlayan yapılardır. Bu yapılar XML dilini kullanır ve bu dili anlayan herhangi bir veritabanı, programlama dili veya platform ile çalışabilir. .NET kavramının bir parçası olan Web servislerinde 2000’ li yıllardan günümüze birçok alanda (güvenlik, haberleşme, WS-*protokolleri) ilerleme kaydedilmiştir.
Web Services Enhancements for .NET (WSE) ise Visual Studio .NET ve .NET Framework ile desteklenen Web servislerinin en uygun ve en güvenli şekilde geliştirilmesine imkan sağlayan bir yapıdır. WSE, protokol detaylarına girmeden, standartlara uygun bir şekilde kullanılan bir yazılım geliştirme aracı olarak tanımlanabilirken, WSE 3.0 sürümü ise kullanıcıya birçok yönde kolaylık sağlamak amacıyla geliştirilmiştir. WSE 3.0 ve getirdiği yenilikler dört başlık altında incelenebilir.
Turnkey Güvenlik Senaryoları
Turnkey güvenlik senaryoları WSE 3.0 ın getirdiği en önemli yeniliklerden birisidir. Bu özellik sayesinde Web servislerinin güvenliği daha kolay bir şekilde gelişme ve yayılma ortamı bulmaktadır. WSE, önceden sahip olduğu ana senaryolara göre güvenlik standartlarını belirlemiştir. Bu ana senaryoları ve kullanım alanları aşağıdaki tabloda belirtilmiştir:
Turnkey güvenlik profili | Tanımı | Kullanımı |
UsernameOverTransport | Bu senaryoda güvenliğin sağlanması ileti seviyesiyle yapılmaktadır (Örneğin:SSL sertifikası) | Kişiden servise herkes kullanabilmektedir. Genellikle ilk adımda SSL kullanılır, başka bir Turkney güvenlik profiliyle de güvenlik duvarının içinde kullanılır. (Örneğin: Kerberos) |
UsernameForCertificate | Bu senaryoda güvenlik sunucusunun X.509 sertifikasıyla sağlanmaktadır. Kişi bir kullanıcı adı ve şifresiyle tanınır ve Active Directory, ADAM veya SQL sunucusu tarafından doğrulanır. | Kişiden servise herkes kullanabilmektedir. Windows Formlarının uygulamaları ve gerekli sertifikalar ClickOnce teknolojisi (Visual Studio 2005) sayesinde konumlandırılabilir. |
AnonymousForCertificate | Bu senaryoda güvenlik sunucusunun X.509 sertifikasıyla korunur. Kişi sunucunun genel sertifikasıyla anonim bir yolla (kendini tanıtmadan) güvenli bir şekilde sunucuyla iletişime geçebilir. | Servisin anonim kullanımı içindir. Sunucunun genel sertifikasıyla servise bağlanılabilinirken, bu durum kritik olmayan servis veya kişilere karşı sınırlandırılır. |
MutualCertificate10
and
MutualCertificate11 | Bu senaryoda tüm X.509 değişim sertifikaları veri değişiminin güvenli bir şekilde olmasını sağlar. | Kişiler kullanmaz, iş için kullanılır. MutualCertificate11 de fazladan anahtarlar her temel mesaj üzerine oluşturulduğu için daha güvenlidir. |
Kerberos (Windows) | Bu senaryoda bir veya birden fazla Windows etki alanı ile giriş yapılır. Kerberos bu girişlerde ayarlanabilen ve güvenli bir altyapı sunar. Kerberos'un yararları tek bir oturum açılır ve PKI (X.509 sertifikalarıyla)
'dan daha iyi bir performans elde edilir. | Etki alanına tümleşik servis kullanımı içindir. Kerberos özellikle tek bir bağlanma işleminde kullanılan güvenli bir altyapı sistemdir |
Bu senaryolarla WSE 3.0 sayesinde mesaj seviyesinde güvenirliği sağlanır. Seçilen senaryoya göre Web servisinde otomatik olarak bir güvenlik kalkanı oluşturulur. Kişi, WSE'yi yükleyip projede WSE'yi etkinleştirdikten sonra "policy" (seçilen senaryo türüne göre) hazırlanmaya başlanır. Oluşan "policy" dosyalarının WSE 2.0'ın "policy" dosyalarına göre daha basit bir formatta olduğu görülmektedir.
MTOM (Message Transmission Optimization Mechanism-En İyi Mesaj İletme Mekanizması) ile Büyük Miktarda Veri Transferi
MTOM (Message Transmission Optimization Mechanism-En İyi Mesaj İletme Mekanizması), kişiye büyük miktarda ikilik veriyi SOAP mesajıyla gönderme imkânı sağlar. Burada optimizasyon önemlidir. Bu da şu anlama gelmektedir; kişi aktive ettiği anda diğer tarafta transfer algoritmalarının optimizasyonu gerçekleşir. Kısaca, MTOM kullanımının 3 önemli yararı bulunmaktadır. Bunlar:
Güvenlik : MTOM, güvenlikle oluşur, verilerin güvenliği SOAP mesaj kadar iyi korunur. Ayrıca DIME'nin desteklemediği bazı güvenlik seviyeleri de MTOM ile desteklenmektedir. (Örneğin: TCP analizi DIME ile yapılan transferde gerçekleştirilirse, dosyanın görüldüğü gözükür ancak MTOM, dosya içine SOAP mesajına uygulanan güvenliği uygulayabilmektedir.)
Dosya Boyutunun Korunması : MTOM sayesinde hat üzerinde ekstra yük oluşmaz ve böylece dosya boyutu korunmuş olur.
Basit Programlama Modeli : MTOM desteği etkinleştirilerek servisteki bütün byte transferleri otomatik olarak şifrelenir.
Gelişmiş Oturum (session) Yöntemi: WSE 3.0 sayesinde kişinin perspektifiyle gelişmiş oturum yaratılabilir. Bunun dışında WSE 2.0 da oturum yöntemi için Web.config dosyasında yapılan değişiklikler bu versiyonda kendiliğinden yapılır. Ayrıca SCT (Security Context Token - Güvenlik Bağlam İzi) 'ler zaman aşımına uğramadan sonlandırılabilir. Aşağıdaki yapı örnek verilebilir:
SecurityContextToken sct = serviceProxy.GetClientCredential<SecurityContextToken>();
if (sct != null)
sct.Cancel();
Bu durum oturumun bittiği ve SCT nin ön belleği temizlediğini göstermektedir. Bunların dışında bir oturum sonlandığında yenilenen Expired Security Context (Sonlanmış Güvenlik Bağlamı) özelliği sayesinde yenilenebilmektedir; yeni bir kimliğe sahip olan, yeni bir SCT oluşturulmaktadır.
ASMX Web Servislerinin IIS (Internet Information Server-İnternet Bilgi Sunucusu) Dışında Sunulması (Host Edilmesi) :
WSE 2.0 web servisleri, İnternet Bilgi Sunucusu dışında sunulması ve protokolleriyle çağırmak için “SoapClient” ve “SoapService” sınıflarını kullanmaktaydı. Yeni senaryoda Web servislerini konsol uygulamalarında, Windows servislerinde, COM+ objelerinde veya Windows Form uygulamalarında sunulabilir ve servisleri TCP (Transmission Control Panel-İletim Kontrol Paneli) aracılığıyla çağırılabilir. Buna ek olarak HTTP.SYS aracılığıyla İnternet Bilgi Sunucusu olmadan HTTP paketleri dinlenebilir.
Servisi IIS dışında nasıl sunabileceğimizi gösteren bir örnek kod aşağıda gösterilmektedir:
class ServiceHost
{
static void Main(string[] args)
{
// Bu Web Servisi konsol programında host edilecek
ServiceHost host = null;
try
{
host = new ServiceHost();
host.Run();
Console.WriteLine("");
Console.WriteLine("Press any key to exit when done...");
Console.WriteLine("");
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Run()
{
//dinlenecek olan adres
Uri address = new Uri("soap.tcp://localhost/tcpstockservice");
SoapReceivers.Add(new EndpointReference(address), typeof(StockService));
Console.WriteLine("Listening for messages at address " + address);
}
}
WSE 3.0 ın Visual Studio 2005 ile Bütünleşmesi
WSE 3.0 ın Visiual Studio 2005 ile bütünleşmesi kişiye hızla güvenli Web servisleri yaratma olanağı sunmaktadır. WSE 3.0 yüklendikten sonra genel menüye Visual Studio Solution Explorer sayesinde erişilebilir. WSE 3.0, .NET Framework 2.0 üzerinde çalışmaktadır. WSE 3.0’ın, .NET Framework 1.1 ve Visual Studio 2003 ile çalışmamasının sebebi WSE 3.0' ın .NET Framework 2.0 üzerinde işlem yapmasıdır. Bu işlem WSE 2.0'a göre %30 daha hızlı bir şekilde gerçekleşir.
WSE 3.0 Kullanmanın Yararları
ASMX servisleri, mesajların güvenliğinin sağlanması, etkili veri aktarımı (MTOM), seçenekli ortam sunulması özellikleriyle güçlendirilmek isteniyorsa WSE 3.0 kullanılmalıdır. Güvenliğin sağlanması ve etkili veri aktarımı özellikleri kişilerin ASMX tasarılarında WSE kullanmaya yönelmelerinin en önemli iki nedenidir. Bunun nedeni de WSE kullanırken servis mantığında değişiklik yapmaya gerek duyulmamasıdır. WSE 3.0, 64 Bit Windows Platformunu desteklemektedir. WSE 3.0'ın sağladığı diğer bir yarar da ASMX tasarılarının senaryolarının uzatılabilir hat ile modellenebilmesidir. Bunların yanı sıra WSE 3.0; performans, çalışma uyumu, örnekleme, hız ve güvenlik yönünden de kişiye çeşitli öncelikler sunar. Çalışma uyumu bakımından WSE 3.0 WCF Beta 2 iyi bir örnek çift teşkil eder. Ayrıca 3.0 sürümüne eklenen VB.NET'de bol miktarda örnek içermektedir. WSE 2.0'la birçok kullanıcı, sunma alışkanlıklarına ihtiyaç duyduklarında ASMX'den geri dönmelerine rağmen, WSE 3.0 ile bu sorun aşılmıştır.
WSE 3.0 Platformu ve Gelecek Teknolojilere Uyumu
WSE, WSE 3.0 ile birlikte Visual Studio 2005`e tam olarak tümleşik kullanılabilir. Bu sayede daha önce de değindiğimiz gibi, birkaç fare tıklamasıyla WSE`nin birçok özelliği kontrol edilebilmektedir. Buradaki önemli nokta; WSE 3.0'ın, .NET Framework 1.1 ve Visual Studio 2003 üzerinde çalışmamasıdır. WSE 3.0, .NET Framework 2.0 üzerinde çalışmakta; çünkü getirdiği yeniliklerin birçoğu .NET 2.0`a özgü nitelikleri kullanmaktadır. Bunun bir sonucu olarak, WSE 3.0 ve .NET Framework 2.0, önceki WSE 2.0 ve .NET 2.0`a oranla karşılaştırmalı senaryolarda %30 daha yüksek performans sağlamaktadır.
WSE 3.0`ın uyumluluk açısından en önemli özelliği, gelecek olan Windows Communication Foundation (WCF)`e geçiş aşamasını teşkil etmesi denilebilir. Microsoft Vista ile gelecek olan bu platform ile standartlar büyük ölçüde yenilenecek ve "Distributed Application Development" denilen yeni kavram kullanımda olacak. Bu süreçte WSE 3.0 ile hazırlanacak servisler, kullanılan senaryolar sayesinde WCF terminalleri ile HTTP üzerinden haberleşebilecek. WCF henüz kullanımda olmadığı için, TCP veya diğer kanallarla haberleşme veya uyumluluk hakkında bir garanti verilmemektedir; fakat WSE 3.0 için kullanılacak tasarım seçimlerinin ve program yapısının gelecek olan "Distributed Application Development"`a uygulamanın kolay olması beklenmektedir.
WSE 2.0 ile WSE 3.0 ın kullanım alanları
WSE 3.0 , Web Servislerini .Net Framework ortamında kolayca ve daha güvenlikli geliştirmeyi sağlayan bir araçtır. Senaryolar dahilinde kullanıldığı sürece WCF ile uyumludur. WSE2 2.0 ile WSE 3.0 aynı bilgisayarda sorunsuz olarak çalışabilmektedir. Ancak WSE 2.0 ve WSE 3.0 için tek bir sanal dizin (vdir) kullanılamaz. Eğer .Net Framework 1.1 için bir servis yazılıyorsa WSE 2.0 kullanılmalıdır; ama unutmamak gerekir ki WSE 2.0 değişen standartlar nedeniyle, ne WSE 3.0 ile ne de WCF ile uyumludur.
WSE 3.0`ın Gereksinimleri
Gereken Donanım
İşlemci
Senaryo | Minimum | Tavsiye Edilen |
İstemci (Form ve servis kullanımı) | Intel Pentium 400 MHz | >= Pentium 800 MHz |
Sunucu | Pentium 800 MHz | >= Pentium 1.0 GHz |
Hafıza
Senaryo | Minimum | Tavsiye Edilen |
İstemci (Form ve servis kullanımı) | 96 MB | 128 MB |
Sunucu | 128 MB | 256 MB |
Gereken Yazılımlar
- Microsoft .NET Framework SDK version 2.0 veya Microsoft Visual Studio® 2005
- (IIS kullanılacak ise) Microsoft Internet Information Services (IIS) 5.x or 6.0
Sonuç olarak, WSE 2.0 sağladığı kolaylıklar ile güvenli Web Servisi geliştirilmesini büyük ölçüde kolaylaştırmıştır. WSE 3.0'ın da getirdiği birçok yenilik ve geleceğe yönelik uyumluluk özellikleri ile Web Servisi geliştiren yazılımların vazgeçilmez bir aracı olacağına inanılmaktadır.