Son günlerin, en iyi XML tabanlı teknolojilerinden birisi olan SOAP (Simple Object Access Protocol- Basit Nesne Erişim Protokolü) takip edilmesi gereken, pek çok yeni terim ve kısaltmayı kapsıyor.
SOAP’ın, geliştirilme amacı, İnternet üzerinde geliştirilen yazılımların, karşı karşıya geldikleri en önemli problemlerden birisi olan, birlikte çalışabilirlik sorunlarını ortadan kaldırmak. SOAP, platformdan, bağımsız olarak herhangi bir uzak sunucu üzerindeki tüm nesnelere ve hizmetlere ulaşılabilen bir dünya oluşturmayı amaçlıyor. Günümüzde farklı işletim sistemleri, farklı güvenlik duvarları, uzak prosedür çağrıları yapmak için kullanılan farklı yöntemler ve farklı platformlardan dolayı, bazı birlikte çalışabilirlik sorunları yaşanıyor. İnternet üzerinde birlikte çalışabilirliği sağlamak için hem istemci, hem de sunucuların birbirlerinin güvenlik tiplerini, servis yerleştirme şemalarını ve implementasyon detaylarını anlamaları gerekiyor.
SOAP’la, platformlara özel karmaşıkların tamamı ortadan kalkıyor. Endüstri genelinde kabul edilmiş, IETF HTTP ve W3C XML standardına dayanan SOAP, rakip RPC teknolojileri arasında bir köprü oluşturuyor ve her türlü işletim sistemi, programlama dili ve platformla çalışabilen, basit bir mesajlaşma biçimi sağlıyor.
Kısacası SOAP, platformdan bağımsız olarak servislere, nesnelere ve sunuculara erişim sağlıyor. SOAP’ı kullanılarak uzaktaki sistemle konumu, işletim sistemi ya da platformundan bağımsız olarak iletişim kurulabiliyor ve bunlar üzerinde sorgulama yapılabiliyor.
Service Description Language
SOAP, uzak bir sunucu üzerindeki servisi kullanabilmeniz için, programınızın uzak sunucunun yeteneklerini tanımlayabilmesi gerekiyor. SOAP, SDL (Service Description Language – Servis Tanımlama Dili) dili ile uzak sunucuların sorgulanarak, yeteneklerinin öğrenilebilmesini sağlıyor.
SDL, aslında, bir XML gramerini kullanıyor, yani SDL bir XML belgesi. Bu yüzden, SDL XML’in tüm özelliklerini kullanabiliyor. SDL, kavram olarak IDL’e (Interface Definition Language – Arayüz Tanımlama Dili) benziyor. Fakat, IDL, platforma özel bir teknoloji iken; SDL, tamamen platformdan bağımsız bir teknoloji olmasıyla öne çıkıyor.
SOAP Contract Language
SDL gibi SCL de (SOAP Contract Language – SOAP Anlaşma Dili) bir servisin yeteneklerini açığa çıkarmak için tasarlanmış. Ama SCL, SDL’den daha fazlasını yapabiliyor. Microsoft, SCL belirtimlerini ilk yayınladığında, belirtimlerin yeterli sağlamlığa ulaştığı geri dönüşünü alır almaz, araç kitini SCL’i kullanacak şekilde güncelleyeceğini, bu geri dönüşü alıncaya dek, kit’le birlikte SDL’i kullanmaya devam edeceğini açıklamıştı. Kısacası, SCL yeterli olgunluğa ulaştıktan sonra, SDL’in yerini alacak.
SCL, hangi uç noktaların (sunucu ve istemci) iletişimleri ile güncel anlaşmaları bularak, servislerin yeteneklerini tanımlamanın da ötesine geçiyor. Bu anlaşmanın içerisinde, her iki uç noktanın tanımlamaları, kabul edilen mesajlar ve uç noktalar arasında gidip gelen mesajları tanımlayan seçeneksel teknik bilgiler yer alıyor.
Discovery of Web Services
DISCO (Discovery of Web Services – Web Servisleri Keşfi) uzak makinelerdeki servislerin, SDL ya da SCL tanımlamalarının keşfedilmesini ve alınmasını sağlıyor. DISCO, SOAP’ın tüm parçaları bir araya getiren son parçası. Eğer birisi, XML gramerini kullanan Discovery Document Format’ı (Keşif Belgesi Biçimi) kullanarak, uzaktaki bir sunucuya keşif belgesi gönderirse, karşıdaki sunucuda da SOAP destekli bir servis varsa, geriye SDL ya da SCL tanımlamalarının bulunduğu bir belgeyi geri gönderir. DISCO hakkında ayrıntılı bilgiyi http://msdn.microsoft.com/xml/general/disco.asp adresinden alabilirsiniz.
Remote Object Proxy Engine
ROPE (Remote Object Proxy Engine – Uzak Nesne Proxy Motoru) uygulamalara SOAP mesajlaşma yetenekleri yerleştirilmesine yardımcı olan bir dizi COM bileşeni sağlıyor. ROPE bileşenleri birisi Visual Basic, diğeri Visual C olmak üzere iki farklı kontrole sahip.
Eğer ROPE kullanmadan, bir SOAP yöntemini çağırmanız gerekseydi, SOAP çağrılarını XML biçimine dönüştürüp, çağrıyı, HTTP isteği içine eklemeniz ve göndermeniz, ardından gelen HTTP yanıtını alıp, XML verilerini buradan söküp almanız gerekirdi. ROPE, tüm bu karmaşıklığı ortadan kaldırarak süreci basite indirgiyor.
Microsoft Visual Studio 6.0, SOAP Toolkit ROPE implementasyonları hakkında bazı bilgileri ve örnekleri içerisinde barındırıyor.
SOAP Toolkit
Microsoft Visual Studio 6.0 ile birlikte SOAP araç kitini de vererek SOAP ile çalışmaya başlamayı kolaylaştırdı. Araç kiti desteklenmese de, SOAP kullanımı hakkında oldukça yararlı bilgilerin bulunduğu bir yardıma sahip. Araç kiti sayesinde, XML ve SOAP ustası olmanıza gerek kalmıyor. Kit, SOAP yeteneklerinin uygulamalara eklenmesini, büyük ölçüde kolaylaştırıyor ve Visual Studio içerisindeki araç bilgi ve deneyimlerinizi güçlendiriyor.
Araç kitinin içerisinde şu bileşenler bulunuyor:
·Sunucu tarafı referans dinleyicileri
·ROPE (Remote Object Proxy Engine – Uzak Nesne Proxy Motoru)
·SDL ve kaynak kodu sihirbazı
·Dokümantasyon
·Kod örnekleri
·Mimari örnek (Kaynak kodunun tamamı)
Araç kitinin Temmuz 2000 sürümünü msdn.microsoft.com/downloads adresinden indirebilirsiniz. SOAP 1.1 belirtimlerini ise http://msdn.microsoft.com/workshop/xml/general/soapspec.aspadresinden okuyabilirsiniz.