Bài giảng "Lập trình mạng - Bài 5: Remote procedure call (RPC)" cung cấp cho người học các kiến thức: Remote procedure call là gì, kiến trúc của Remote procedure call, Java RMI, MS Remote procedure call. . | BÀI 4. REMOTE PROCEDURE CALL (RPC) 1 Nội dung • RPC là gì? • Kiến trúc của RPC • Java RMI • MS RPC • 2 1 1. MÔ HÌNH RPC 3 Đặt vấn đề • Làm thế nào để hai tiến trình client và server giao tiếp với nhau? • Sử dụng socket • Xây dựng giao thức hướng thông điệp (message-oriented protocol) Khó khăn? • Tổ chức thông điệp ở phía gửi như thế nào? • Xử lý thông điệp ở phía nhận • Xử lý trạng thái blocking • Không dễ dàng để triển khai • Khó có tính mở Làm cách nào client chỉ cần “gọi” các thủ tục của server giống như lời gọi trên tiến trình cục bộ? Remote Procedure Call (RPC) 4 2 RPC là gì? • Là cơ chế giao tiếp giữa 2 tiến trình • Thực hiện lời gọi thủ tục trên tiến trình khác giống như lời gọi thủ tục trong một tiến trình cục bộ • Được xây dựng thành framework • Dễ dàng phát triển các giao thức mới, phần mềm sụn (middleware) 5 Nguyên lý cơ bản của RPC • Tiến trình server: cung cấp một giao diện (interface) cho thủ tục/hàm để client gọi: • Tương tự thư viện lập trình API • Tiến trình client: • Gọi thủ tục/hàm • Dừng chờ kết quả trả về • Trao đổi dữ liệu giữa client và server thông qua tham số, giá trị trả về của hàm • Trong suốt: • Cấu trúc thông điệp • Phân tán dịch vụ • Kiến trúc của hệ thống từ xa 6 3 Lời gọi thủ tục trên tiến trình cục bộ count = read(fd, buf, nbytes) 7 RPC 8 4 Asyncronous RPC 9 Lời gọi cục bộ và RPC • Giả sử một thủ tục có khai báo nguyên mẫu: bool verifyUser(char * userID, char *pass) • Lời gọi cục bộ: trả về false hoặc true • Sử dụng socket và giao thức hướng thông điệp: thực hiện như thế nào? • RPC: trong suốt • Giá trị trả về: false hoặc true • ? • I don’t .