Perbedaan Java RMI & Microsoft DCOM

Advertisement

Perbedaan Java RMI & Microsoft DCOM

Artikeli
Friday, July 26, 2019




I. Penjelasan

Java RMI (Remote Method Invocation) adalah sebuah tekhnik pemanggilan method remote yang lebih secara umum lebih baik dari RPC. RMI memakai paradigma pemrograman berorientasi obyek. RMI memungkinkan kita guna mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI menciptakan pemakai bisa mengembangkan software Java yang terdistribusi pada jaringan.

Tujuan Java RMI meluangkan fasilitas untuk programmer guna dapat menyalurkan objek yang dipakai pada sejumlah proses yang berbeda. Dapat berlangsung dalam satu mesin ataupun di sejumlah mesin yang terhubung dengan jaringan.

II. Cara Kerja

Dalam model ini, suatu proses memanggil method dari objek yang terletak pada sebuah host/computer remote. Dalam paradigma ini, penyedia layanan mengikutsertakan dirinya dengan server direktori pada jaringan. Proses yang mengharapkan suatu layanan mengontak server direktori ketika runtime, andai layanan tersedia, maka referensi ke layanan bakal diberikan. Dengan memakai referensi ini, proses bisa berinteraksi dengan layanan tsb. Paradigma ini ekstensi urgen dari paradigma RPC. Perbedaannya ialah objek yang menyerahkan layanan didaftarkan (diregister) ke sebuah layanan direktori global, sampai-sampai memungkinkan guna ditemukan dan diakses oleh software yang meminta layanan tersebut.


Berikut ilustrasi yang terjadi pada cara RMI
Programmer pada client mencatat :

Server_id.service(values_to_server,result_arguments);

Pada sisi server mempunyai manfaat sebagai brkt :

Public service(in type1 arg from client; out type2 arg to_client)
{——-}

Programmer pada client tidak memahami bahwa reply message yang diperoleh berasal dari server yang dikirim melewati jaringan.
Gambar Ilustrasi Implementasi RMI

Komponen-komponen dam RMI(gambar 2.2) :

· Object A(client) : meminta layanan

· Object B(server) : menghantarkan layanan

· Proxy for B

– Ketika object A memiliki remote reference ke object B, maka bakal timbul objek proxy B pada host object A. Proxy terbuat saat remote object reference dipakai kesatu kali.

– Proxy ialah perwakilan objek yang berada pada remote, dengan kata lain saat terjadi invokasi dari A ke B ditangani seolah – olah melulu mengakses Proxy B.

– Ketika invokasi terjadi proxy memakai metode marshals untuk membalut pesan yang bakal dikirim ke server. Dan sesudah menerima hasil dari server proxy memakai metode unmarshal (membuka bungkus) untuk lantas diteruskan ke client (Object A).

Skeleton for object B

– Pada sisi server, ada object kerangka (skeleton) yang bersangkutan  ke class, bila object pada class itu dapat diakses oleh RMI.

– Skeleton menerima pesan lantas melakukan unmarshal dan meneruskan ke method object yang dituju. Dan lantas menunggu hasil dari object B dan lantas membungkus hasil (unmarshal) dan kemudian diantarkan ke client (Objec A).

– Ada unsur dari skeleton B yang dinamakan dengan dispatcher. Dispatcher menerima request dari communication module, dan lantas mengidentifikasi invokasi dan menunjukkan permintaan ke corresponding method ( method pada skeleton yang bermanfaat untuk berkomunikasi dengan object).

Communication Modul (Modul Komunikasi)

– Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilaksanakan melalui cara request dan reply.

Remote Reference Module

– Bagian ini bertugas guna menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka ditabung dalam remote object table.

– Yang menggenerate class guna proxy dan skeleton ialah middleware.

– Contoh : CORBA, Java RMI

Object A dan object B dimiliki oleh software (berada pada Application Layer) Remote Reference Modul dan Communication modul dipunyai oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan software yang di generate oleh middleware.

III. Perbedaan Infrastruktur
·         Arsitektur Remote Method Invocation (RMI)


Gambar: Arsitektur sistem RMI.


Arsitektur RMI terdiri dari tiga bagian :
1. Remote Refrence Layer Digunakan untuk menemukan lokasi remote object, membuat
panggilan point to point dan relokasi secara otomatis. selain itu, bagian ini juga
befungsi untuk mengaktifkan proses server baru jika belum pernah di aktifkan
sebelumnya
2. Stub dan Skeleton merupakan interface antara aplikasi dan RMI system. Stub
bertindak sebagai Client side proxy dan Skeleton Sebagai server side proxy.
3. Transport layer digunakan untuk membuat dan memelihara dua koneksi antara 2 JVM
menggunakan TCP/IP. Transport layer menerima dan merespon setiap panggilan dari
atau ke server dan client.

IV. Contoh Program
Server object akan mencetak ”Hello Huda” ke layar & mengembalikan pesan ke klien.
Pada Sisi Server:

–  Server Method
import java.rmi.*;
public interface SimpleInterface      
String printMessage(String name) throws RemoteException;
}
  Server Object
import java.rmi.*;
import java.rmi.server.*;
public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac
public SimpleServer() throws RemoteException { super(); }
public String printMessage(String name) throws RemoteException {
System.out.println(name);
return(Hello + name);
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
SimpleServer newServer = new SimpleServer();
System.out.println(SimpleServer attempting to
bind to the registry);
Naming.rebind(//ruddy.info:30010/SimpleServer,
newServer);
System.out.println(SimpleServer bound in the registry);
} catch(Exception e) {System.out.println(SimpleServer error: + e.getMessage());
e.printStackTrace();
}}
}

Pada Sisi Client:
import java.rmi.*;
public class SimpleClient {
private static SImpleInterface server = null;
public static void main(String args[]) {
try {
server = (SimpleInterface)
Naming.lookup(//ruddy.info:30010/SimpleServer);
System.out.println(server.printMessage (Huda));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}}
}


MICROSOFT DCOM

I. Penjelasan

DCOM adalah (Distributed COM) merupakan suatu teknologi cara melakukan distribusi COM. Istilah COM sama seperti komponen. Tujuan DCOM adalah agar komponen yang telah kita buat dan diregister di suatu komputer dapat di akses oleh banyak komputer lain. DCOM sendiri bukan merupakan teknologi baru karena teknologi ini banyak dipakai dalam sistem distribusi pada sistem jaringan TCP/IP. Protokol yang digunakan oleh DCOM dapat meliputi:
- Protokol TCP/IP
- Protokol UDP/IP
- Protokol HTTP
- Protokol RPC
Secara umum DCOM menerapkan sistem Client-Server sehingga terdapat istilah DCOM client dan DCOM server
II. Cara Kerja



DCOM merupakan ektensi dari Component Object Model (COM). Pada COM kita melihat bagaimana suatu komponen client saling berinteraksi. Interaksi ini dapat didefinisikan sebagai hubungan secara langsung antara komponen (COM Server) dan COM Client. Aplikasi client memanggil method yang ada di komponen COM tanpa perantara apapun dan terjadi dalam suatu proses baik pada aplikasi client maupun komponen itu sendiri.
Salah satu kegunaan DCOM adalah distribusi dan remoting suatu objek ke komponen lain dalam suatu jaringan komputer. Ketika kita akan membuat suatu komponen COM dan komponen ini akan diakses banyak komputer bahkan dalam waktu bersamaan, maka kita harus melakukan sistem distribusi untuk objek yang kita buat belum lagi kita akan menghadapi load balancing karena banyaknya yang mengakses data objek oleh komputer lain. Dengan DCOM ini,kita akan mendapatkan solusi untuk masalah sistem distribusi.
Kita telah ketahui bahwa aplikasi dikatakan berbasis sistem remoting bila apabila aplikasi itu mengakses suatu onjek yang dapat berupa data, suara, informasi dan sebagainya dari suatu komputeryang ada dalam suatu jaringan tertentu. Dalam kasus ini DCOM client akan berfungsi sebagai remoter yaitu objek yang melakukan remote ke komputer serer melalui DCOM Server.
Kita akan melihat bahwa komunikasi antara komputer dilakukan dan melalui DCOM. Misalkan komputer A meminta data dari database, maka komputer A akan merequest data melalui objek yang ada di DCOMClient. Kemudian DCOM client akan melakukan validasi mengenai komponen objek yang dieksekusi, jika ditemukan objek yang meminta, maka DCOM client akan mengecek sumber objek berasal sebagai contohnya suber objek berasal dari komputer server S, maka DCOM client akan melakukan remoting ke komputerS melalui DCOM server yang dimilikinya.
DCOM server akan mengecek authorisasinyayang dimilki oleh komputer A. Jika komputer A mmpunyai hak akses maka DCOM server akan mengeksekusi sesuai permintaan komputer A dan hasilnya dikembalikan ke DCOM Client. Proses ini akan sama untuk setiap komputer yang ingin melakukan remoting melalui DCOM.

III. Perbedaan Infrastruktur
Arsitekturnya hubungan antara DCOM Server, DCOM Client dan Server Database:



Pada bagian Back-End yang merupakan jembatan antara layer user dan layer data (database) memiliki empat syarat:
1.       Atomicity
Transaksi harus berhasiil atau gagal sama sekali.
2.       Consistenty
Traksaksi harus konsisten secara keseluruhan, memang traksaisi pada awalnya
tidak konsisten namun harus konsistm pada alhirnya.
3.       Isolation
Semua aplikasi yang terlibat traksaksi tidak boleh melihat bagaimana transaksi
berlangsung, hanya melihat bagian awal sebagai inisialisasi dan bagian akhir
sebagai status apakah transaksi berhasil atau gagal.
4.       Durability
Ketika transaksi selesai maka update bersfat permanen dan tidak bisa dihapus
dengan cara apapun.
Ke empat kriteria diatas dikenal sebagi ACID test. Untuk menghubungkan bisnis layer dengan data layer digunakan teknologi UDA (universal Data Access).
Dalam database server kita harus memilih aplikasi yang dapat mendukung untuk DBMS salah satnya adalah: Microsoft SQL Server 2000. SQL Server juga mempunyai kelebihan OLAP. Selain mendukung bahasa SQL standar SQL, SQL Server juga mennunjang T-SQL (Transact-SQL) yang merupakan pengembangan dari SQL standart yang ada. Kesemuanya itu sangat mendukung adanya ACID dalam transaksi.

IV. Contoh Program
// INTERFACE DCOM
[ uuid(E7E50ECE-B3DA-4E50-AD5E-94ED50DFE9AC),version(1.0) ]
library HelloWorld
{
importlib("stdole32.tlb");
[ uuid(BC4C0AB0-5A45-11d2-99C5-00A02414C655), ]
Interface IHello : IDispatch
{
HRESULT get_String_Hello([in] BSTR p1,
[out, retval] String * rtn);
}
};
// KODE IMPLEMENTASI DI SISI SERVER DCOM
import com.ms.com.*;
import HelloWorld.*;
public class Hello implementsIHello
{
private static final String CLSID =
"E7E50ECE-B3DA-4E50-AD5E-94ED50DFE9AC";
public String get_String_Hello (String name)
{
String h = “Hello”;
h = h + name;
return h;
}
}
// KODE DI SISI KLIEN DCOM
import HelloWorld.*;
public class HelloClient
{
public static void main(String[]args)
{
try
{
IHello h = (IHello) new HelloWorld.Hello();
System.out.println
(h.get_String_Hello ("Adi Nugroho"));
}
catch
(com.ms.com.ComFailException e)
{
System.out.println("COM Exception:");
System.out.println(e.getHResult());
System.out.println(e.getMessage());
}}


}


Tonton Video Berikut