.NET Remoting merupakan salah satu teknologi yang disediakan oleh .net framework untuk memenuhi kebutuhan dalam pembuatan Distributed Application. Sebelum muncul .net remoting, mungkin kita terbiasa menggunakan teknologi DCOM. Distributed application merupakan sebuah aplikasi yang memungkinkan untuk menggunakan object yang terletak pada komputer yang berbeda, LAN yang berbeda, bahkan bisa diakses via protokol HTTP maupun TCP.
Selain .net remoting sebenarnya kita diberikan alternatif lainnya untuk membuat hal yang serupa, yaitu diantaranya dengan menggunakan object-object yang terdapat didalam namespace System.Net dan System.Web.Services. Sedangkan untuk .net remoting ini namespace yang digunakan yaitu System.Runtime.Remoting. Secara umum di dalam teknologi .net remoting ini terdapat beberapa komponen yang saling berinteraksi, diantaranya adalah :
* Remotable Object
* Host Remoting : Console Application, Windows Services, IIS
* Client
Sebuah aplikasi yang berjalan berada pada suatu unit isolasi yang dinamakan Application Domain (App Domain). Dengan adanya app domain ini maka masing-masing aplikasi yang berjalan mempunyai alokasi address spacenya masing-masing di memory, dan data yang spesifik untuk app domain tsb. Kalau salah satu aplikasi hang maka aplikasi yang lainnya tidak terganggu. Secara default antara app domain tidak bisa dapat secara langsung berinteraksi satu sama lainnya meskipun terletak di dalam komputer yang sama. Dengan adanya teknologi .net remoting maka antara app domain bisa saling berinteraksi satu sama lainnya dengan adanya proxy class.
Untuk transfer message diantara app domain dibutuhkan jalur komunikasi atau biasa disebut channel. Ada dua channel yang dapat digunakan untuk transmisi data, yaitu :
* HTTP Channel
* TCP Channel
Kedua channel tsb memerlukan port yang digunakan untuk meregister service object yang di remote. HTTP channel cocok digunakan untuk arsitektur jaringan internet, WAN, dan sifatnya lebih secure karena bisa memanfaatkan security dari Web Servernya. TCP channel lebih cocok digunakan untuk arsitektur local area network, namun transmisi datanya bisa lebih cepat dibandingkan dengan HTTP channel.
Format data yang dipertukarkan menggunakan format Binary (Binary Formatter) atau SOAP (SOAP Formatter). Binary Formatter membungkus data kedalam mode binary data, sedangkan SOAP Formatter membungkus data ke dalam format XML yang di encapsulate ke dalam protokol SOAP. Secara default HTTP channel menggunakan SOAP formatter sedangkan TCP channel menggunakan Binary formatter. Sebelum client request object yang terdapat di app domain yang berbeda, maka dilakukan terlebih dahulu proses serialisasi, dan ketika diterima oleh app domain tersebut maka proses deserialisasi dilakukan untuk membaca data tsb. Proses transmisi data dengan melibatkan serialisasi dan deserialisasi dinamakan Marshalling.
Ada dua jenis remotable object, yaitu :
* Marshall By Value (MBV) : Object ini di copy kan dari app domain server ke app domain client. Maka setelah itu object ini sifatnya bukan remotable lagi, karena diakses secara locally dan tidak ada lagi proses Marshalling. Untuk membuat object ini class yang digunakan dideklarasikan dengan penambahan attribut Serializable.
* Marshall By Reference (MBR) : Object ini di akses di sisi client lewat proxy class. Semua client yang request hanya hold reference saja ke object yang ada di server. Untuk membuat object ini class yang digunakan diturunkan (inherits) dari class MarshallByRefObject. Member dari class ini yang dapat di remote yaitu : Non static public method, non static public properties, non static public fields.
Sebenarnya object yang dapat di aktivasi secara remote yaitu MBR object, karena MBV object yang digunakan di transfer ke client yang request. Berdasarkan mode aktivasi, MBR object diklasifikasikan ke dalam dua kategori :
* Server Activated Object (SAO) : Lifetime dari object ini dikontrol oleh server. Client berinteraksi via Proxy class. Kekurangannya yaitu client hanya bisa call constructor yang tidak berparameter. Untuk kategori SAO ini digolongkan lagi ke dalam dua jenis activation mode, yaitu : SingleCall activation mode dan Singleton activation mode. Dalam mode SingleCall, server melayani satu object untuk satu request client. Sedangkan untuk mode Singleton, maka object yang diinstatiated hanya satu untuk semua client yang request, dan client tsb hanya hold reference saja.
* Client Activated Object (CAO) : Lifetime dari object ini sepenuhnya diatur oleh client. CAO dapat diinstatiated untuk constructor yang berparameter.
Period waktu dari object - object tersebut yang digunakan sebelum .net framework me reclaims object tsb dari memory diatur oleh Lifetime Leases. Leases ini hanya berlaku untuk Singleton dan CAO, untuk SingleCall object di create dan di destroy untuk setiap pemanggilan method oleh client...itulah sekilas pandang tentang .net remoting :) ...next i'll explain about the code...