Remoting 1

Remoting 1

REMOTING

Remoting , bir uygulamanınn farklı bir uygulamayla iletişimini ve etkileşimini sağlar. İletişim kurduğu uygulama aynı ağ üzerinde veya farklı bir ağ üzerinde olabilir. Remoting; yazılımcılara dağıtık uygulama oluşturma imkanı sunar. Nesne, karşı tarafta etkileşimde bulunacağı nesneden transfer edilen mesajlara cevap vermek için kanallar kullanır. Kanallardan bilgi akışı gerçekleşirken bu işlem için belirli formatlar kullanılır. Karşı tarafta belirlenen formatta kodlanmış olarak kanala aktarılan mesaji, alıcı taraf aynı formatı kullanarak kodu çözer ve gönderilen mesajı elde etmiş olur.

Bu yazı dizisinde Remotingi anlatacağım. Adım kavramları inceleyerek, dizinin sonunda bir örnekle kavramları pratiğe dökeceğiz.

Uygulama Sınırları

Uygulamaları kullanırken verilere erişim sırasında bazı sınırlamalar vardır. Bu sınırlamalar uygulama veya işlem bazında olabilir. Uygulama bazındaki sınırlamalara baktığımızda uygulama içindeki işlemler, uygulamanın sınırları içinde tanımlanmışlardır. Uygulamanın çalışması için , çalıştıracağı kod ve uygulamanın diğer kullandığı bilgiler gibi çeşitli bilgiler programın içine gömülüdür. Uygulamalar kendilerini belirli biçimde sınırlayarak diğer çalışan uygulamaların etkisinden korunur.

İşlem Bazında Sınırlamalar Uygulamanın çalışması sırasında bazı işlemler gerçekleşir. Windows programları, bir işlem icra edilirken bu işlemle alakası olmayan diğer bir programdan tamamen izole edilmiş durumdadır. Her bir işlemin sanal adresi, çalıştırılabilir kodu ve kendine ait bilgisi vardır. Herhangi bir windows işlemi direk olarak diğer bir windows işlemine erişemez. İşlem yanlızca bir uygulamada çalışır. Böylece , bir uygulama zarar gördüğünde, diğer uygulamalar bu zarardan etkilenmez.

İşlemler arası geçişlerde, kullanılmak istenen herhangi bir programın içeriğinde değişiklik yapıldığında, bu programın yeni içeriğiyle birlikte diğer programlarda kullanılabilmesi için içerik kaydedilmeli. Bu durum sistem kaynağı tüketen kısa ömürlü birçok altprogram oluşmasını beraberinde getirir.

Uygulama Domain’i Bazında SınırlamalarCLR(Comman Language Runtime) .net uygulamaları için yönetilebilir bir ortam sağlamaktadır. Yönetilen ortam çalışan koda, kod ulaşım güvenliği, nesnelerin yaşam süresini yönetim, hata ayıklama gibi çeşitli servisler sağlar. Kod CLR tarafından çalıştırılır.Windows programlarının aksine CLRda, program kendi sınırları dışında herhangi bir kaynağı kullanmayarak programın güvenliğini sağlar.

CLR içindeki çalışan uygulamalarda izolasyonun temel ünitesi, uygulama domainidir (uygulama etki alanı). Uygulama domaini (System.AppDomain) .net uygulamaları için çalışan küçük bir ünitedir. CLR tek bir windows uygulaması için ,bir çok uygulama domaini sağlar ve uygulamalar arasındaki izolasyonu aynı seviyede tutar. Uygulama domain’leri, kendi sınırları içinde bu izolasyonu başarır. Her uygulama domaini kendi kodlarını , verilerini ve konfigurasyon ayarlarını içerir. Uygulama domainnine , diğer uygulama domainlerinin veri yapılarıyla veya kodla direk olarak ulaşılamaz. Bir uygulama domaini içindeki kodun çalışması diğer uygulama domainlerini etkileyemez.

Dağıtık Uygulamalar

Application domain (AppDomain), .net uygulamaları için çalıştırılabilir ünitelerdir demiştik. İşlemler uygulama domain’leri sayesinde belirli şekilde korunaklıdır ve belirli çerçeve içinde izolasyonu sağlanır. Bunun sonucunda, işlem içindeki bir nesne veya domaindeki bir uygulama ile diğer işlem veya uygulamalar arasında direk bir iletişim söz konusu olmaz.

Buna rağmen, gerek iletişim dünyasında, gerek iş dünyasında ve gerekse diğer alanlarda dağıtık uygulamalar bir zorunluluk haline geliyor. Dağıtık uygulama, işlem sınırları içerisinde nesnelere karşılıklı konuşma imkanı sağlıyor.

Aynı veya farklı bilgisayar, veya internet üzerinde karşılıklı farklı uygulama domain’lerinde veya uygulama işlemlerinde çalışan nesneler arasında ilişki kurmak işlemi dağıtık uygulama kapsamına girmektedir.

Dağıtık uygulama geliştirmenin DCOM , Remoting , Asp.Web Servisleri gibi çeşitli yöntemleri vardır. Şimdi bunları inceleyelim .

DCOMDCOM bu yöntemlerden biri. Yakın geçmişe kadar bir çok alanda, uygulamalar arasındaki iletişimde, DCOM kullanılıyordu. DCOM iyi bir performans ve aynı bilgisayar üzerinde veya aynı ağ üzerinde benzer tipteki uygulamaların çalışmasında yeterli bir adaptasyon sağlıyordu. Peki nedir bu distributed com veya DCOM denilen ?COM; farklı nesnelerin iletişim kurması için ortak bir arayüz sağlayan bir teknoloji. Daha ileri bir versiyonu olan DCOMda (Distributed COM), COM nesnelerinin diğer işletim sistemleri altındaki nesnelerle iletişim kurabilen versiyonudur. Buna rağmen , DCOM’un internet dünyasındaki iletişimde bir eksikliği vardır. DCOM bütün nesne modellerinin desteklemediği binary protokollerini kullanmaktadır. Bu sebeple, bazı durumlarda karşılıklı farklı platformların birlikte işlerliğini başaramamaktadır.

Artıca, ateş duvarı dediğimiz, sistemlerdeki güvenliği sağlayan firewall tarafından standart olarak belirlenenen, bazı bloke edilmiş portlar üzerinden iletişim sağlamaya çalışır. Belirli portlar ile sınırlanması , DCOM’ların geçerli kullanımlarını azaltmaktadır.

.Net Framework Kullanarak Dağıtık Uygulama Oluşturma.Net Framework çeşitli mekanizmaları destekleyen dağıtık uygulama geliştirme ortamları sağlamaktadır. Aşağıda Framework Class Library (FCL) içinde dağıtık uygulama oluşturmak için kullanılan iki namespacei incleyeceğiz.

Birincisi .Net Remoting Frameworkunu oluşturan System.Runtime.Remoting namespace’si. .Net Remoting Framework, farklı uygulama domain’lerinde çalışan veya aynı bilgisayar üzerindeki nesneler arasında iletişimi sağlar. Genişletilebilen esnek bir yapıya sahiptir. Remoting, kompleks yapıdaki ağ programlarında ve basit uygulamalarda iletişimi sağlar. .Net Remoting farklı iletişim protokollerini ve formatlarını destekleyerek DCOM’un eksi tarafı olan sınırlı port özelliğinin getirdiği olumsuzlukların üstesinden gelmiştir.

İkincisi ise Asp.Net Web Servisleri’nin frameworku’nu oluşturan System.Web.Services namespace’si. Asp.Net Web Servisleri nesnelerin farklı domain uygulamalarında standart protokoller içinde mesajın iletiminde kullanılır. Diğer sistemlerle birlikte işlerliği çok kolaydır.

.Net Remoting ve Asp.Net Web Servisleri beraber frameworkun dağıtık uygulama kısmını oluşturur.

Web Servisleri’nin Remoting’le Karşılaştırılması Web servisleri bilginin dağıtılması bazında güçlü bir teknoloji. Ama bu noktada şuna dikkat etmemiz gerekiyor, bizim kendi uygulamamız için hangi yöntemi kullanmamız daha uygun olacak?Web servisleri karşı tarafla HTTP, XML ve SOAP teknolojilerini kullanarak iletişim kurar. Bu yöntemde, mesaj text yapısında olduğundan, uygulamalar esnasında ateş duvarından geçememe korkusu yoktur. Çünkü Web Servisleri internet üzerindeki endüstri standartlarını desteklemektedir. Programlama dilinden ve platformdan bağımsızdır. Remoting, bir uygulama ile karşı taraftaki uygulama domain’i arasında, bahsettigimiz işlem ve domain sınırlamaları içinde etkileşimi sağlar. Bu bağlamda, uygulama ağ içinde kaynak kodlarına erişmesi ve bunlardan yararlanabilmesi sayesinde bir çok avantaj elde eder. Web Servisleri ve Remoting dağıtık uygulamaları ve uygulama entegrasyonunu destekler.

Şimdi Web Servisleriyle Remoting arasındaki farkları görelim :

Asp.Net Web Servisleri yalnızca HTTP üzerinden haberleşir. .Net Remoting ise herhangi bir protokol üzerinden haberleşebilir . (TCP, HTTP,SMTP ve diğerleri).Web Servisleri stateless (durumunu koruyamayan) bir protokol üzerinden çalışır. .NET Remoting Singleton ve SingleCall yöntemlerini kullanarak hem statefull (durumunu koruma) hemde stateless özelliğine sahip olabilir.Web Servisleri yalnızca XSD içinde tanımlı olan veri tiplerini destekler. Sınırlı sayıda nesneyi serialize(dönüştürme) işlemine tabi tutabilir. .Net Remoting binary formatını kullanır ve bir çok veri tipini destekleyerek iletişim kurar.Web Servisleri heterojen çevreler arasında ve karşılıklı platformlar arasında birlikte işlerliği destekler. .Net Remoting ise homojen sistemler arasında birlikte işlerliği sağlar. Web Servisleri her zaman IIS hostunu kullarak yüksek ölçüde güvenilirlik sağlar. .Net Remoting de aynı zamanda IISin desteğini kullanabilir. IIS desteği kullanılmayan remoting uygulamalarında ise, uygulamanın güvenliği programcı tarafından hesaba katılmak zorundadır.Web Servisleri oluşturulması ve bilgisayara yerleştirilmesi oldukça kolaydır. .Net Remoting, Web Servisleri’ne nazaran oldukça kompleks bir programlamaya sahiptir.

Döküman Arama

Başlık :

Kapat