Home Contact RSS

Makale 2: Sunucu Uygulaması Kanalları

Remoting Channel’ları

Remoting server’ları ve Remoting client’ları karşılıklı olarak farklı protokoller üzerinde haberleÅŸme ÅŸansına sahiptir ve bu protokoller Remoting kapsamında “channel” olarak isimlendirilmektedir. Channel’lar ile ilgili tüm class ve interface’ler System.Runtime.Remoting.Channels namespace’i içerisinde bulunmaktadır.

.NET Framework içerisinde, hazır olarak kullanılabilir halde üç tipte channel bulunmaktadır. Bu channel’lar ÅŸu ÅŸekildedir;

  • System.Runtime.Remoting.Channels.Http namespace’i içerisinde yer alan HTTP (Hyper Text Transfer Protocol) protokolünü kullanan channel’lar.
  • System.Runtime.Remoting.Channels.Tcp namespace’i içerisinde yer alan TCP (Transmission Control Protocol) protokolünü kullanan channel’lar.
  • System.Runtime.Remoting.Channels.Ipc namespace’i içerisinde yer alan IPC (Interprocess Communication) protokolünü kullanan channel’lar.

Channel’lar üç farklı tipteyken, protokollerin içerisinde bulunan channel sayısının üçten fazla olmasının sebebi Remoting server’larının ve Remoting Client’larının farklı channel’lardan türetiliyor olmalarıdır.

Daha detaya inersek, Remoting server’ları System.Runtime.Remoting.Channels.IChannelReceiver interface’ini implement eden herhangi bir class olmalıyken, Remoting client’ları da System.Runtime.Remoting.Channels.IChannelSender interface’ini implement eden herhangi bir class olmalıdır. Bununla birlikte System.Runtime.Remoting.Channels.IChannelReceiver ve System.Runtime.Remoting.Channels.IChannelSender interface’lerinin her ikisini birden implement ederek hem Remoting client’ı üzerinde hem de Remoting server’ı üzerinde çalışabilecek bir channel oluÅŸturulabilir.

VerdiÄŸimiz detaylardan yola çıkarak System.Runtime.Remoting.Channels.Http, System.Runtime.Remoting.Channels.Tcp ve System.Runtime.Remoting.Channels.Ipc namespace’leri içerisinde bulunan ve channel olarak kullanabileceÄŸimiz class’ları görelim.

Class Açıklama Implements Channel Type


System.Runtime.Remoting.Channels.Http namespace’i içerisinde bulunan channel’lar:

HttpClientChannel Yalnızca Remoting client’ları kullanabilir ve iÅŸlemlerini HTTP protokolünü kullanarak gönderir. IChannelSender HTTP
HttpServerChannel Yalnızca Remoting server’ları kullanabilir ve iÅŸlemlerini HTTP protokolünü kullanarak cevaplar. IChannelReceiver HTTP
HttpChannel Hem Remoting server’ları hem de Remoting client’ları tarafından kullanılabilir ve iÅŸlemlerinin tamamını HTTP protokolünü kullanarak gerçekleÅŸtirir. IChannelSender, IChannelReceiver HTTP

System.Runtime.Remoting.Channels.Tcp namespace’i içerisinde bulunan channel’lar:

TcpClientChannel Yalnızca Remoting client’ları kullanabilir ve iÅŸlemlerini TCP protokolünü kullanarak gönderir. IChannelSender TCP
TcpServerChannel Yalnızca Remoting server’ları kullanabilir ve iÅŸlemlerini TCP protokolünü kullanarak cevaplar. IChannelReceiver TCP
TcpChannel Hem Remoting server’ları hem de Remoting client’ları tarafından kullanılabilir ve iÅŸlemlerinin tamamını TCP protokolünü kullanarak gerçekleÅŸtirir. IChannelSender, IChannelReceiver TCP

System.Runtime.Remoting.Channels.Ipc namespace’i içerisinde bulunan channel’lar:

IpcClientChannel Yalnızca Remoting client’ları kullanabilir ve iÅŸlemlerini IPC protokolünü kullanarak gönderir. IChannelSender IPC
IpcServerChannel Yalnızca Remoting server’ları kullanabilir ve iÅŸlemlerini IPC protokolünü kullanarak cevaplar. IChannelReceiver IPC
IpcChannel Hem Remoting server’ları hem de Remoting client’ları tarafından kullanılabilir ve iÅŸlemlerinin tamamını IPC protokolünü kullanarak gerçekleÅŸtirir. IChannelSender, IChannelReceiver IPC

Tablo 3.1.1: .NET Framework içerisinde bulunan hazır Remoting Channel’ları.

UYARI

System.Runtime.Remoting.Channels.Http, System.Runtime.Remoting.Channels.Tcp ve System.Runtime.Remoting.Channels.Ipc namespace’leri, üzerinde çalıştığınız projenizde System.Runtime.Remoting assembly’sine referans vermediÄŸiniz sürece ulaşılamayacaktır. Bu sebeple projenizin Add Reference bölümünü kullanarak bu assembly’i reference olarak eklemeniz gerekmektedir.

Bu üç protokolün kullanım açısından çeşitli avantajlar ve dezavantajlar sunmaktadırlar. HTTP protokolü kullanılması şu avantajlar ve dezavantajları beraberinde getirmektedir;

  • Remoting server’ı ve client’ları farklı lokasyonlarda, örneÄŸin server ve client’ların birbirine LAN (Local Area Network) ile deÄŸil de Internet gibi herhangi bir WAN (Wild Area Network) ile bir aÄŸ üzerinden baÄŸlı olması durumunda paketlerin firewall ve ya benzeri güvenlik sistemleri tarafından engellenme riski çoÄŸunlukla yoktur.
  • HTTP protokolü üzerinde çalışacak Remoting uygulamalarının IIS gibi sunucular üzerinden çalıştırılması saÄŸlanabilir.
  • Sunucu üzerinde Windows Authentication ve ya SSL (Secure Socket Layer) kullanılması durumunda network güvenliÄŸi baÅŸka bir gereksinime ihtiyaç duyulmadan saÄŸlanabilir.
  • HTTP protokolü aynı anda çok fazla request gelmesi durumunda iÅŸlemlere geç cevap verebileceÄŸi için sistemin yoÄŸun olduÄŸu durumlarda yavaÅŸ çalışabilir.
  • HTTP protokolü üzerinden transfer edilecek olan mesajlar ekstra header bilgilerinin yüklenmesinden dolayı yavaÅŸlıklara sebep olabilir.

TCP protokolünün kullanılması durumunda ise şu avantaj ve dezavantajlara sahiptir;

  • TCP protokolü daha alt seviye paketleri algılayabildiÄŸi için network trafiÄŸini önemli ölçüde az kullanacaktır ve bu da sistem hızını arttıracaktır.
  • Özellikle LAN üzerinde çalışan sistemlerde TCP protokolünün kullanılması tavsiye edilir.
  • Firewall gibi güvenlik araçları kullanılıyorsa TCP protokolü üzerinde kullanılacak port’ların yetkilendirmeye dahil edilmesi gerekir.
  • System.Security namespace’i içerisinde bulunan ilgili class’ları kullanarak özel bir güvenlik sistemi geliÅŸtirilmediÄŸi sürece herhangi bir ön güvenlik sistemine sahip deÄŸildir.

IPC protokolünün kullanılması durumunda ise şu avantaj ve dezavantajlara sahiptir;

  • IPC protokolü herhangi bir network connection’ı kullanmamaktadır. Bu sebeple hem TCP hem de HTTP protokollerine göre çok daha hızlı çalışır.
  • IPC protokolü sadece aynı bilgisayar üzerinde bulunan application domain’leri arasında iletiÅŸim kurulması amacıyla kullanılabilir. Bu da IPC protokolünün farklı bilgisayarlar üzerinde çalışan uygulamalar arasında iletiÅŸim kuramayacağı anlamına gelir.

UYARI

IPC protokolünü yalnızca aynı bilgisayar üzerindeki application domain’lerinin iletiÅŸimi amacıyla kullanılabilir. IPC protokolü bilgisayarınızın içerisinde yer aldığı network connection’larını kullanabilme yeteneÄŸine sahip deÄŸildir.

Leave a Comment