Chương 2 Hệ thống đối tượng phân tán
2.2 Sự phân tán trong môi trường Java: RMI
2.2.2 Giới thiệu ứng dụng phân tán với RMI
Trong mô hình đối tượng phân tán Java, một đối tượng từ xa (remote object) là đối tượng có các phương thức có thể được gọi từ một máy ảo Java khác, có thể nằm trên
một máy chủ khác. Đối tượng dạng này sẽ được mô tả bởi một hay nhiều giao diện từ xa (remote interface), đó là các giao diện được viết bởi ngôn ngữ lập trình Java khai báo các phương thức của đối tượng từ xa[10].
Lời gọi phương thức từ xa (Remote method invocation - RMI) là một hành động gọi đến một phương thức của một đối tượng từ xa. Điều quan trọng là việc gọi phương thức trên đối tượng từ xa phải có cú pháp tương tự như gọi phương thức trên đối tượng cục bộ.
Các ứng dụng RMI thường được chia thành hai phần chương trình riêng biệt: một ở phía server và một ở phía client. Ứng dụng phía server sẽ tạo các đối tượng từ xa, tạo các tham chiếu để truy cập đến các đối tượng này và chờ phía client gọi các phương thức trên các đối tượng này. Ứng dụng phía client lấy tham chiếu từ xa tới một hoặc nhiều đối tượng và sau đó sẽ gọi các phương thức trên chúng. RMI cung cấp kỹ thuật cho phép server và client kết nối và truyền thông tin qua lại với nhau. Một ứng dụng như vậy được gọi là ứng dụng đối tượng phân tán.
Các ứng dụng đối tượng phân tán cần phải: - Định vị các đối tượng từ xa
Các ứng dụng có thể sử dụng một trong hai kỹ thuật để giành được các tham chiếu tới các đối tượng từ xa. Kỹ thuật thứ nhất là đăng ký đối tượng từ xa với tiện ích đặt tên đơn giản của RMI, rmiregistry, kỹ thuật thứ hai là gửi và trả lại các tham chiếu đối tượng từ xa như là một phần của vận hành bình thường
- Giao tiếp với các đối tượng từ xa
Các chi tiết của sự giao tiếp giữa các đối tượng từ xa được điều khiển bởi RMI; đối với người lập trình, sự giao tiếp từ xa giống như là một lời gọi phương thức chuẩn.
- Tải các mã bytecode cho các đối tượng được chuyển như các tham số hoặc giá trị trả về.
RMI cho phép một đối tượng gọi (caller) chuyển các đối tượng tới các đối tượng từ xa, RMI sẽ cung cấp các kỹ thuật cần thiết cho việc tải mã của đối tượng (object‟s code) cũng như sự truyền nhận dữ liệu của nó.
Hình minh hoạ dưới đây mô tả một ứng dụng phân tán RMI sử dụng bản đăng ký (registry) để lấy các tham chiếu của một đối tượng từ xa. Phía server gọi đăng ký để gán tên cho một đối tượng từ xa. Phía client sẽ tìm kiếm đối tượng theo tên của nó trên bản đăng ký phía server và sau đó gọi một phương thức trên nó. Hình minh hoạ cũng chỉ ra rằng hệ thống RMI sử dụng một web server để tải các đoạn mã lớp được viết bằng ngôn ngữ lập trình Java, từ server đến client và từ client đến server, cho các đối tượng khi cần thiết. RMI có thể nạp các đoạn mã lớp sử dụng bất kỳ giao thức URL nào hỗ trợ nền Java (HTTP, FTP, File…).