Java RMI - Giới thiệu
RMI là viết tắt của Remote Method Invocation. Nó là một cơ chế cho phép một đối tượng nằm trong một hệ thống (JVM) truy cập / gọi một đối tượng đang chạy trên một JVM khác.
RMI được sử dụng để xây dựng các ứng dụng phân tán; nó cung cấp giao tiếp từ xa giữa các chương trình Java. Nó được cung cấp trong góijava.rmi.
Kiến trúc của một ứng dụng RMI
Trong một ứng dụng RMI, chúng tôi viết hai chương trình, server program (nằm trên máy chủ) và một client program (nằm trên máy khách).
Bên trong chương trình máy chủ, một đối tượng từ xa được tạo và tham chiếu của đối tượng đó được cung cấp cho máy khách (sử dụng sổ đăng ký).
Chương trình khách yêu cầu các đối tượng từ xa trên máy chủ và cố gắng gọi các phương thức của nó.
Sơ đồ sau đây cho thấy kiến trúc của một ứng dụng RMI.
Bây giờ chúng ta hãy thảo luận về các thành phần của kiến trúc này.
Transport Layer- Lớp này kết nối giữa máy khách và máy chủ. Nó quản lý kết nối hiện có và cũng thiết lập các kết nối mới.
Stub- Sơ khai là một đại diện (proxy) của đối tượng từ xa tại máy khách. Nó nằm trong hệ thống khách hàng; nó hoạt động như một cổng cho chương trình khách hàng.
Skeleton - Đây là đối tượng nằm ở phía máy chủ. stub giao tiếp với khung này để chuyển yêu cầu đến đối tượng từ xa.
RRL(Remote Reference Layer) - Là lớp quản lý các tham chiếu được thực hiện bởi máy khách đến đối tượng từ xa.
Hoạt động của một ứng dụng RMI
Các điểm sau đây tóm tắt cách hoạt động của một ứng dụng RMI:
Khi máy khách thực hiện một cuộc gọi đến đối tượng từ xa, nó sẽ được nhận bởi phần khai thác cuối cùng chuyển yêu cầu này đến RRL.
Khi RRL phía máy khách nhận được yêu cầu, nó sẽ gọi một phương thức được gọi là invoke() của đối tượng remoteRef. Nó chuyển yêu cầu đến RRL ở phía máy chủ.
RRL ở phía máy chủ chuyển yêu cầu đến Skeleton (proxy trên máy chủ) mà cuối cùng sẽ gọi đối tượng được yêu cầu trên máy chủ.
Kết quả được chuyển trở lại máy khách.
Marshalling và Unmarshalling
Bất cứ khi nào khách hàng gọi một phương thức chấp nhận các tham số trên một đối tượng từ xa, các tham số sẽ được gói lại thành một thông báo trước khi được gửi qua mạng. Các tham số này có thể thuộc kiểu nguyên thủy hoặc các đối tượng. Trong trường hợp kiểu nguyên thủy, các tham số được đặt cùng nhau và một tiêu đề được đính kèm với nó. Trong trường hợp các tham số là các đối tượng thì chúng được tuần tự hóa. Quá trình này được gọi làmarshalling.
Ở phía máy chủ, các tham số được đóng gói được bỏ nhóm và sau đó phương thức bắt buộc được gọi. Quá trình này được gọi làunmarshalling.
Cơ quan đăng ký RMI
Đăng ký RMI là một không gian tên mà trên đó tất cả các đối tượng máy chủ được đặt. Mỗi khi máy chủ tạo một đối tượng, nó sẽ đăng ký đối tượng này với RMIregistry (sử dụngbind() hoặc là reBind()phương pháp). Chúng được đăng ký bằng một tên duy nhất được gọi làbind name.
Để gọi một đối tượng từ xa, máy khách cần một tham chiếu của đối tượng đó. Tại thời điểm đó, máy khách tìm nạp đối tượng từ sổ đăng ký bằng tên liên kết của nó (sử dụnglookup() phương pháp).
Hình minh họa sau đây giải thích toàn bộ quy trình -
Mục tiêu của RMI
Sau đây là các mục tiêu của RMI -
- Để giảm thiểu sự phức tạp của ứng dụng.
- Để giữ an toàn loại.
- Thu gom rác phân tán.
- Giảm thiểu sự khác biệt giữa làm việc với các đối tượng cục bộ và từ xa.