BAB V Remote Procedure Call (RPC) Remote Procedure Call (RPC) sangat mirip dengan Remote Method Invocation, pada program client yang memanggil sebuah program yang sedang berjalan di server. Server ini mungkin sebuah client dari server yang lain. Dalam service interface-nya, suatu server proses mendefinisikan prosedur-prosedur yang tersedia. RPC, seperti RMI dapat diimplementasikan untuk mengambil satu dari sekian pilihan invocation semantic yang biasa dipilih adalah at-least- once atau at-most-once. RPC umumnya diimplementasikan request reply protocol yang disederhanakan dengan menghilangkan beberapa referensi objek dari pesan-pesan permintaan. Software yang mendukung RPC ditunjukan pada gambar 5.1. Client yang mengakses suatu servis memasukkan satu stub procedure untuk setiap prosedur dalam service interface. Fungsi dari stub procedure sama dengan fungsi di sebuah proxy. Stub procedure bertindak seperti lokal prosedur kepada client, tetapi dia tidak melaksanakan panggilan, melainkan stub procedure mengatur identifikasi prosedur dan argument ke dalam suatu request message yang kemudian dikirimkan oleh stub procedure kepada server melalui communication module. Ketika reply message datang maka stub procedure V-1
mengatur hasil-hasilnya. Procedure process memiliki sebuah pengirim bersama dengan satu stub procedure server dan satu prosedur servis untuk setiap prosedur dalam service interface. Pemanggil ini memilih satu dari sekian stub procedure sesuai dengan pengidentifikasi prosedur dalam request message. Stub procedure Server menyerupai skeleton method dalam hal cara stub procedure server mengacak argument dalam request message, memanggil prosedur servis yang berkaitan dan mengatur pengembalian hasil untuk sebuah reply message. Prosedur servis mengimplementasikan prosedur-prosedur di dalam service interface. 5.2 Sun RPC (Studi Kasus) Sun RPC di-design untuk komunikasi client-server pada Sun NFS (Network File System). Sun RPC sering disebut dengan ONC (Open Network Computing) RPC. Ini disediakan oleh Sun dan operating sistem UNIX yang lain, juga disediakan oleh instalasi NFS yang lain. Seseorang yang mengimplementasikan memiliki pilihan untuk menggunakan RPC melalui UDP atau TCP. Ketika Sun RPC digunakan pada UDP, panjang dari request dan reply message sangat ditentukan dengan ketat. Sun RPC sistem menyediakan interface language yang disebut dengan XDR V-2
dan interface compiler yang disebut dengan rpcgen, yang menggunakan bahasa pemrograman C. Sun XDR Language, yang mulanya di-design untuk representasi spesifik data eksternal. Kemudian dikembangkan menjadi interface definition language. Itu mungkin digunakan untuk mendefinisikan service interface untuk Sun RPC oleh spesifik kumpulan procedure definition dan supporting type definition. Notasi yang digunakan agak terbelakang jika dibandingkan dengan yang digunakan oleh CORBA IDL atau Java. 5.3 Java RMI (Studi Kasus) Java RMI mengembangkan java objek model untuk menyediakan dukungan bagi objek-objek yang didistribusikan dalam bahasa pemrograman java. Secara mengkhusus java RMI memungkinkan objek untuk memanggil metode pada remote object dengan menggunakan sintaks yang sama seperti pada pemanggilan lokal. Kemudian pengecekan tipe berlaku sama baik untuk penggilan remote atau pemanggilan lokal. Namun suatu objek yang melakukan pemanggilan remote menyadari bahwa targetnya jauh karena objek ini harus menangani Remote Exceptions; dan pengimplementasi objek remote ini juga sadar bahwa dia itu jauh karena dia harus mengimplementasikan V-3
remote interface. Meskipun model objek yang disebarkan dintegrasikan ke dalam Java secara alami, semantik parameter parsingnya berbeda karena pemanggil dan targetnya berjauhan. Pemrograman aplikasi-aplikasi yang terdistribusi pada Java RMI seharusnya cukup sederhana karena Java merupakan sistem single-language remote interface didefinisikan dalam Java. Jika digunakan sistem multi language seperti CORBa. Pemrogram perlu belajar mengenai IDL dan perlu memahami bagaimana IDL memetakan ke dalam implementasi sebuah bahasa pemrograman. Namun, dalam sistem single-language pun pemrogram remote objek harus memperhitungkan kebiasaan objek tersebut dalam lingkungan yang sering dialaminya. Pada studi kasus ini, kita menggunakan sebuah shared whiteboard sebagai contoh. Ini adalah sebuah program tersebar yang memungkinkan sekelompok pengguna untuk menggunakan secara bersama-sama pandangan umum drawing surface yang berisi objek grafis seperti, bujur sangkar, baris dan lingkaran, yang sudah digambar oleh salah satu pengguna. Server mempertahankan kondisi terkini suatu drawing dengan menyediakan operasi untuk client untuk menginformasikan gambar-gambar terakhir yang sudah dibuat oleh pengguna dalam kelompok itu dan untuk menyimpan semua bentuk yang sudah diterima. V-4
Server juga menyediakan operasi-operasi yang memungkinkan client untuk memanggil bentuk-bentuk terakhir yang dibuat oleh pengguna lain dengan pilihan server. Server memiliki nomor versi (integer) yang selalu bertambah setiap bentuk baru datang dan dicantumkan ke dalam bentuk yang baru. Server menyediakan operasi-operasi yang memungkinkan client untuk menyakan nomor versinya dan nomor versi setiap bentuk, sehingga mereka dapat menghindari pengambilan bentuk-bentuk yang sudah dimiliki. V-5