Câu trả lời:
RPC dựa trên C và do đó, nó có cấu trúc ngữ nghĩa lập trình, mặt khác, RMI là một công nghệ dựa trên Java và nó hướng đối tượng.
Với RPC, bạn chỉ có thể gọi các hàm từ xa được xuất vào máy chủ, trong RMI bạn có thể có các tham chiếu đến các đối tượng từ xa và gọi các phương thức của chúng, đồng thời chuyển và trả lại các tham chiếu đối tượng từ xa có thể được phân phối giữa nhiều phiên bản JVM, vì vậy nó mạnh hơn nhiều .
RMI nổi bật khi có nhu cầu phát triển thứ gì đó phức tạp hơn kiến trúc máy khách-máy chủ thuần túy phát sinh. Rất dễ dàng để phân tán các đối tượng qua mạng cho phép tất cả các máy khách liên lạc mà không cần phải thiết lập các kết nối riêng lẻ một cách rõ ràng.
Sự khác biệt chính giữa RPC và RMI là RMI liên quan đến các đối tượng . Thay vì gọi các thủ tục từ xa bằng cách sử dụng chức năng proxy , thay vào đó chúng tôi sử dụng một đối tượng proxy .
RMI có tính minh bạch cao hơn, cụ thể là do khai thác các đối tượng, tài liệu tham khảo, kế thừa, đa hình và ngoại lệ khi công nghệ được tích hợp vào ngôn ngữ.
RMI cũng tiên tiến hơn RPC, cho phép gọi động , trong đó các giao diện có thể thay đổi khi chạy và điều chỉnh đối tượng , cung cấp thêm một lớp trừu tượng.
1. Cách tiếp cận:
RMI sử dụng mô hình hướng đối tượng trong đó người dùng cần biết đối tượng và phương thức của đối tượng mà anh ta cần gọi.
RPC không đối phó với các đối tượng. Thay vào đó, nó gọi các chương trình con cụ thể đã được thiết lập.
2. Làm việc:
Với RPC, bạn nhận được một cuộc gọi thủ tục trông khá giống cuộc gọi địa phương. RPC xử lý các phức tạp liên quan đến việc chuyển cuộc gọi từ cục bộ đến máy tính từ xa.
RMI thực hiện điều tương tự, nhưng RMI chuyển tham chiếu đến đối tượng và phương thức đang được gọi.
RMI = RPC + Hướng đối tượng
3. Tốt hơn một:
RMI là một cách tiếp cận tốt hơn so với RPC, đặc biệt là với các chương trình lớn hơn vì nó cung cấp một mã sạch hơn, dễ xác định hơn nếu có sự cố.
4. Ví dụ hệ thống:
Hệ thống RPC: SUN RPC, DCE RPC
Hệ thống RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Giao thức truy cập đối tượng đơn giản)
Cuộc gọi thủ tục từ xa (RPC) là một giao tiếp giữa các quá trình cho phép gọi một chức năng trong một quy trình khác nằm trong máy cục bộ hoặc máy từ xa.
Gọi phương thức từ xa (RMI) là một API, thực hiện RPC trong java với sự hỗ trợ của các mô hình hướng đối tượng.
Bạn có thể nghĩ đến việc gọi RPC giống như gọi thủ tục C. RPC hỗ trợ các kiểu dữ liệu nguyên thủy trong đó RMI hỗ trợ các tham số / kiểu trả về như các đối tượng java.
RMI dễ lập trình không giống như RPC. Bạn có thể nghĩ logic kinh doanh của mình theo các đối tượng thay vì một chuỗi các kiểu dữ liệu nguyên thủy.
RPC là ngôn ngữ trung lập không giống như RMI, được giới hạn trong java
RMI chậm hơn một chút so với RPC
Hãy xem bài viết này để thực hiện RPC trong C
RMI hoặc Gọi phương thức từ xa rất giống với RPC hoặc cuộc gọi Thủ tục từ xa ở chỗ máy khách vừa gửi các đối tượng proxy (hoặc sơ khai) đến máy chủ, tuy nhiên điểm khác biệt tinh tế là RPC phía máy khách gọi FUNCTION thông qua chức năng proxy và RMI gọi METHODS thông qua chức năng ủy quyền. RMI được coi là hơi vượt trội vì đây là phiên bản hướng đối tượng của RPC.
Từ đây .
Để biết thêm thông tin và ví dụ, hãy xem ở đây .
Sự khác biệt giữa RMI và RPC là:
method
và a là function
gì? Trong Java không có chức năng ... nhưng trong OOP như xa như tôi có thể nhớ, họ là từ đồng nghĩa, và như vậy là invocation
và call
.
RPC là một giao thức cũ dựa trên C. Nó có thể gọi một thủ tục từ xa và làm cho nó trông giống như một cuộc gọi cục bộ.RPC xử lý sự phức tạp của việc chuyển lời gọi từ xa đó đến máy chủ và nhận kết quả cho máy khách.
Java RMI cũng đạt được điều tương tự nhưng hơi khác một chút. Nó sử dụng các tham chiếu đến các đối tượng từ xa . Vì vậy, điều nó làm là nó gửi một tham chiếu đến đối tượng từ xa cùng với tên của phương thức để gọi. Nó tốt hơn vì nó cho kết quả sạch hơn mã trong trường hợp các chương trình lớn và phân phối các đối tượng qua mạng cho phép nhiều máy khách gọi các phương thức trong máy chủ thay vì thiết lập từng kết nối riêng lẻ.
RMI
trong Java là một cái gì đó giống nhưgRPC
trong .Net ...