Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa RPC và RMI

RPC và RMI là các cơ chế cho phép máy khách gọi thủ tục hoặc phương thức từ máy chủ thông qua thiết lập giao tiếp giữa máy khách và máy chủ. Sự khác biệt chung giữa RPC và RMI là RPC chỉ hỗ trợ lập trình thủ tục trong khi RMI hỗ trợ lập trình hướng đối tượng .

Một sự khác biệt lớn giữa hai là các tham số được truyền cho cuộc gọi thủ tục từ xa bao gồm các cấu trúc dữ liệu thông thường . Mặt khác, các tham số được truyền cho phương thức từ xa bao gồm các đối tượng .

Biểu đồ so sánh

Cơ sở để so sánhRPCRMI
Hỗ trợLập trình thủ tục
Lập trình hướng đối tượng
Thông sốCấu trúc dữ liệu thông thường được chuyển đến các thủ tục từ xa.Các đối tượng được truyền cho các phương thức từ xa.
Hiệu quảThấp hơn RMIHơn RPC và được hỗ trợ bởi phương pháp lập trình hiện đại (ví dụ: mô hình hướng đối tượng)
Chi phí chungHơn
Ít so sánh
Tham số ra là bắt buộc.VângKhông cần thiết
Cung cấp dễ dàng lập trình
Cao
thấp

Định nghĩa của RPC

Cuộc gọi thủ tục từ xa (RPC) là một tính năng ngôn ngữ lập trình được tạo ra cho điện toán phân tán và dựa trên ngữ nghĩa của các cuộc gọi thủ tục cục bộ . Đây là hình thức phổ biến nhất của dịch vụ từ xa và được thiết kế như một cách để trừu tượng hóa cơ chế gọi thủ tục để sử dụng giữa các hệ thống được kết nối qua mạng. Nó tương tự như cơ chế IPC trong đó hệ điều hành cho phép các quy trình quản lý dữ liệu được chia sẻ và xử lý môi trường nơi các quy trình khác nhau đang thực thi trên các hệ thống riêng biệt và nhất thiết phải có giao tiếp dựa trên thông báo.

Hãy hiểu cách RPC được thực hiện thông qua các bước đã cho:

  • Quá trình máy khách gọi gốc máy khách với các tham số và quá trình thực thi của nó bị đình chỉ cho đến khi cuộc gọi được hoàn thành.
  • Các tham số sau đó được dịch sang dạng độc lập với máy bằng cách sắp xếp thông qua sơ khai của máy khách. Sau đó, thông điệp được chuẩn bị có chứa đại diện của các tham số.
  • Để tìm danh tính của trang web, máy khách vẫn còn liên lạc với máy chủ tên mà tại đó thủ tục từ xa tồn tại.
  • Sử dụng giao thức chặn, cuống máy khách sẽ gửi tin nhắn đến trang web nơi có cuộc gọi thủ tục từ xa. Bước này tạm dừng ứng dụng khách cho đến khi nhận được phản hồi.
  • Trang web máy chủ nhận được tin nhắn được gửi từ phía máy khách và chuyển đổi nó thành định dạng cụ thể của máy.
  • Bây giờ cuống máy chủ thực hiện một cuộc gọi trên thủ tục máy chủ cùng với các tham số và cuống máy chủ bị ngưng cho đến khi thủ tục được hoàn thành.
  • Quy trình máy chủ trả về kết quả đã tạo cho cuống máy chủ và kết quả được chuyển đổi thành định dạng độc lập với máy tại cuống máy chủ và tạo một thông báo chứa kết quả.
  • Thông báo kết quả được gửi đến gốc máy khách được chuyển đổi thành định dạng máy cụ thể phù hợp với gốc máy khách.
  • Ở ứng dụng khách cuối cùng, sơ khai trả về kết quả cho quy trình khách hàng.

Định nghĩa của RMI

Gọi phương thức từ xa (RMI) tương tự như RPC nhưng là ngôn ngữ cụ thể và là một tính năng của java. Một luồng được phép gọi phương thức trên một đối tượng từ xa. Để duy trì tính minh bạch ở phía máy khách và máy chủ, nó thực hiện đối tượng từ xa bằng cách sử dụng sơ khai và bộ xương. Sơ khai cư trú với máy khách và đối tượng từ xa, nó hoạt động như một proxy.

Khi một máy khách gọi một phương thức từ xa, sơ khai cho phương thức từ xa được gọi. Sơ khai của khách hàng có trách nhiệm tạo và gửi bưu kiện chứa tên của một phương thức và các tham số được sắp xếp theo thứ tự, và bộ xương chịu trách nhiệm nhận bưu kiện.

Các tham số bộ xương unmarshals và gọi phương thức mong muốn trên máy chủ. Bộ xương sắp xếp các giá trị đã cho (hoặc ngoại lệ) với bưu kiện và gửi nó đến gốc máy khách. Sơ khai lắp ráp lại bưu kiện trả lại và gửi cho khách hàng.

Trong Java, các tham số được truyền cho các phương thức và được trả về dưới dạng tham chiếu. Điều này có thể gây rắc rối cho dịch vụ RMI vì không phải tất cả các đối tượng đều có thể là các phương thức từ xa. Vì vậy, nó phải xác định cái nào có thể được thông qua làm tài liệu tham khảo và cái nào không thể.

Java sử dụng quy trình có tên là tuần tự hóa trong đó các đối tượng được truyền dưới dạng giá trị. Đối tượng từ xa được bản địa hóa bằng cách vượt qua giá trị. Nó cũng có thể truyền một đối tượng bằng cách tham chiếu thông qua việc chuyển một tham chiếu từ xa đến đối tượng cùng với URL của lớp sơ khai. Đi qua tham chiếu hạn chế một sơ khai cho các đối tượng từ xa.

Sự khác biệt chính giữa RPC và RMI

  1. RPC hỗ trợ các mô hình lập trình thủ tục, do đó dựa trên C, trong khi RMI hỗ trợ các mô hình lập trình hướng đối tượng và dựa trên java.
  2. Các tham số được truyền cho các thủ tục từ xa trong RPC là các cấu trúc dữ liệu thông thường. Ngược lại, RMI chuyển các đối tượng làm tham số cho phương thức từ xa.
  3. RPC có thể được coi là phiên bản cũ hơn của RMI và nó được sử dụng trong các ngôn ngữ lập trình hỗ trợ lập trình thủ tục và nó chỉ có thể sử dụng phương thức truyền qua giá trị. Đối với, cơ sở RMI được phát minh dựa trên phương pháp lập trình hiện đại, có thể sử dụng vượt qua giá trị hoặc tham chiếu. Một ưu điểm khác của RMI là các tham số được truyền bởi tham chiếu có thể được thay đổi.
  4. Giao thức RPC tạo ra nhiều chi phí hơn RMI.
  5. Các tham số được truyền trong RPC phải là ra vào trong ra, có nghĩa là giá trị được truyền cho thủ tục và giá trị đầu ra phải có cùng kiểu dữ liệu. Ngược lại, không có sự bắt buộc nào trong việc chuyển các tham số ra-ra-ra-ra trong RMI.
  6. Trong RPC, các tham chiếu không thể có thể xảy ra do hai quy trình có không gian địa chỉ riêng biệt, nhưng có thể trong trường hợp RMI.

Phần kết luận

Cả RPC và RMI đều phục vụ cùng một mục đích nhưng được sử dụng trong các ngôn ngữ hỗ trợ các mô hình lập trình khác nhau, do đó có các tính năng riêng biệt.

Top