Yazan : Şadi Evren ŞEKER
Dağıtık programlamanın bir parçası olan RPC( Remote Procedure Call ) üzerine inşa edilmiş olan ve nesne yönelimli programlama akımıyla birlikte gelişmiş olan RMI yaklaşımı basitçe bir kodun bir parçası olan methodun başka bir kod tarafından çağrılmasını sağlar.
Temel olarak sistemde rmiregistry ismi verilen bir kayıt üzerinde RMI için çağrılması uygun methodların bir kaydı tutulur. Bu methodlardan birisini çağırmak isteyen sınıf (class) ise kayıt üzerinden ilgili methodu çağırıp sonucu bir nesne olarak kendisine alır.
Dağıtık Nesne Mimarisi adı da verilen bu mimaride iki taraf bulunur istemci (client) ve sunucu (server). Klasik bir RMI modelinde sunucu kendi üzerinde objeler oluşturur ve bu objelerin üzerindeki metodların çağrılması (invoke) için bekler. İstemci ise uzaktaki bu nesnelere birer referans oluşturur ve bu referans marifetiyle nesneler üzerindeki methodları çağırır. Bu işlemi sırasıyla 3 aşamada ele almak mümkündür:
- Uzaktaki nesneye erişilmesi: Bu aşamada uzaktaki nesnenin konumunun belirlenmesi ve erişmek için gerekli adımların tamamlanması yapılır. Bu işi yapmanın pek çok farklı yolu olmasına karşılık en temel ve hızlı yollarından birisi RMI isim hizmeti olan RMIregistry üzerinde bir kayıt marifetiyle ulaşmaktır.
- Uzaktaki nesne ile iletişim: Bağlantı kurulduktan sonra bu nesne üzerinde bir fonksiyonun çağrılması, bu fonksiyona parametre geçilmesi veya sonucunun alınması gibi iletişim işlemleri yapılır. Ancak programcı bu işlemlerin hiçbirinden haberdar olmaz. Sanki yerel bir nesneyi çağırıyor gibi kodunu yazar ve çalıştırır.
- Uzaktaki nesnenin, yerel bir sınıf tanımının oluşturulması. Bu aşama ise yerel nesnenin uzaktaki nesneyi tanıması için gerekli olan aşamadır. Yani yereldeki nesneler uzakta bulunan nesnenin hangi fonksiyonlarını çağırabileceklerini bilmelidirler. Bu yüzden yerelde bir kopya sınıf bilgisi tutulur.