Makale 3: Remoting Formatter’ları
Remoting Formatter’ları
Channel’lar üzerinden gönderilecek ve alınacak olan bilgilerin tamamı, öncesinde serializa edilmeli ve ondan sonra ilgili channel kullanılarak sistemler arasında geçiş yapmalıdır. Bu işlem sırasında hem Remoting server’ı hem de Remoting client’ı aynı sistem üzerinde çalışacak şekilde configure edilmelidir. Aksi durumda server ya da client’ın gönderdiği herhangi bir mesaj, diğer taraf için anlamsız bir paket niteliği taşıyacaktır.
.NET Framework’ün içerisinde kullanılabilecek iki adet formatter bulunmaktadır. Bunlar System.Runtime.Serialization.Formatters.Binary namespace’i içerisinde bulunan BinaryFormatter ve System.Runtime.Serialization.Formatters.Soap namespace’i içerisinde bulunan SoapFormatter class’larıdır. Remoting mimarisi uygulama geliştiricilerin kendi formatter’larını geliştirmelerine izin vermektedir. Bunun için yazılım geliştiren kişilerin System.Runtime.Remoting.Messaging namespace’i içerisinde bulunan IRemotingFormatter interface’ini implement edilmesi yeterlidir.
NOT
System.Runtime.Remoting.Messaging.IRemotingFormatter interface’i System.Runtime.Serialization.IFormatter interface’ini kendi içerisinde implement etmektedir. Formatter’ların yapacağı işin büyük bir kısmı System.Runtime.Serialization.IFormatter interface’i içerisinde tanımlı olan method’ların implementasyonunda belirlenecektir.
Genel olarak avantajlarından ve dezavantajlarından bahsedeceğimiz SoapFormatter ve BinaryFormatter’ların Tcp, Http ya da Ipc channel’ları üzerinde kullanım kısıtlamaları bulunmamaktadır. Yani uygun formatter’a ve uygun channel’a karar verildikten sonra hem SoapFormatter hem de BinaryFormatter istenilen channel’la kullanılabilir. Ayrıca yukarıda anlatılmış olduğu gibi IRemotingFormatter interface’ini implement eden herhangi bir custom formatter da Tcp, Http ya da Ipc channel farkı gözetmeksizin istenilen channel üzerinde kullanılabilir.
SoapFormatter
SOAP kelimesi Simple Object Access Protocol’ün kısaltılmış halidir. Server ve client arasındaki iletişimin XML altyapısı kullanılarak sağlanması mantığına dayanır. Farklı yapılar ve ya farklı programlama dillerinin XML konusunda verdiği desteğe dayanarak birbirlerinden farklı şekillerde çalışan sistemlerin iletişimi için kullanılabilir.. SOAP kullanımında gönderilen paketler içerisinde hem paketin XML dosyasından nasıl deserialize edileceği bilgisi hem de paketin içeriği gönderildiğinden paket boyutları beklenen boyutların üstüne çıkabilir. Bu da SoapFormatter’ın sistemi normalinden daha fazla yorması demektir.
UYARI
SoapFormatter üzerinden sunulacak method’lar yalnızca public olarak tanımlanmış method’lar olabilir.
BinaryFormatter
Binary formatting kullanılması durumunda paketler SOAP formatting’e göre daha ufak boyutlara sahip olacaktır. Bu network trafiği ve hız açısından büyük bir avantaj olarak görülebilir. BinaryFormatter’ın en büyük dezavantajı yalnızca .NET ile geliştirilen uygulamalar tarafından kullanılabilir olmasıdır. Fakat performansın önemli olduğu ve hem server’ın hem de client’ın .NET ile geliştirilmesi durumunda BinaryFormatter SoapFormatter’tan daha performanslı çalışacak ve yalnızca .NET ile geliştirilen uygulamalar arasında çalışabiliyor olmasının getirdiği dezavantajlar sistem açısından bir önem teşkil etmeyecektir.
NOT
BinaryFormatter üzerinden sunulacak method’lar hem public hem de private olarak tanımlanmış method’lar olabilir.