Bài giảng Lập trình mạng - Bài 5: RPC và RMI - Bùi Minh Quân

pdf 16 trang ngocly 3210
Bạn đang xem tài liệu "Bài giảng Lập trình mạng - Bài 5: RPC và RMI - Bùi Minh Quân", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_mang_bai_5_rpc_va_rmi_bui_minh_quan.pdf

Nội dung text: Bài giảng Lập trình mạng - Bài 5: RPC và RMI - Bùi Minh Quân

  1. RPC và RMI  Khái niệm RPC  Khái niệm RMI  Các bước cài đặt RMI trong Java  Ví dụ về RMI Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 1
  2. RPC (Remote Procedure Call)  Khái niệm  RPC: gọi thủ tục ở xa.  Trong suốt về mặt ngữ nghĩa: gọi thủ tục ở xa cũng có cú pháp tương tự như gọi thủ tục cục bộ.  Định hướng lời gọi đến máy tính đích ở xa thông qua khái niệm Stub.  Đơn giản hóa việc xây dựng các ứng dụng Client-Server  Server : cung cấp các thủ tục ở xa  Client : gọi các thủ tục ở xa trong quá trình tính toán của mình.  Mô hình của ứng dụng phân tán (Distributed Application):  Thực thi của chương trình được trải rộng ra trên nhiều máy tính khác nhau. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 2
  3. RPC (Remote Procedure Call)  Kiến trúc chương trình Gọi thủ tục Thực thi cục bộ thủ tục Đóng gói Mở gói Đóng gói lời mô tả thông điệp kết quả Mở gói về thủ tục yêu cầu kết quả ở xa Đảm bảo việc truyền lại, báo nhận, chọn đường, mã hóa Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 3
  4. RMI (Remote Method Invocation)  Khái niệm  Cài đặt RPC bằng ngôn ngữ Java.  Cho phép 1 phương thức thực thi từ xa trên nhiều máy ảo khác nhau.  Kiến trúc ứng dụng Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 4
  5. RMI (Remote Method Invocation)  Con đường kích hoạt 1 phương thức ở xa Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 5
  6. RMI (Remote Method Invocation)  Cơ chế vận hành của 1 ứng dụng Client-Server theo kiểu RMI • Bước 0: Server tạo ra các đối tượng cho phép gọi từ xa cùng với các Stub và Skeleton của chúng. • Bước 1: Server sử dụng lớp Naming để đăng ký tên cho một đối tượng từ xa. • Bước 2: Naming đăng ký Stub của đối tượng từ xa với Registry Server. • Bước 3: Registry Server sẵn sàng cung cấp tham thảo đến đối tượng từ xa khi có yêu cầu. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 6
  7. RMI (Remote Method Invocation)  Cơ chế vận hành của 1 ứng dụng Client-Server theo kiểu RMI • Bước 5: Naming tải Stub của đối tượng xa từ dịch vụ tên mà đối Bước 6: Cài đặt đối tượng tượng xa đã đăng ký về Client Stub và trả về tham khảo đối tượng xa cho Client. • Bước 4: Client yêu cầu Naming định vị đối tượng xa qua tên đã được đăng ký (phương thức lookup) với dịch vụ tên Bước 7: Client thực thi một lời gọi phương thức từ xa thông qua đối tượng Stub Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 7
  8. RMI (Remote Method Invocation)  Các lớp của Java hỗ trợ xây dựng ứng dụng RMI  Các gói java.rmi và java.rmi.Server  Các lớp thường dùng là:  java.rmi.Naming  java.rmi.RMISecurityManager  java.rmi.RemoteException  java.rmi.Server.RemoteObject  java.rmi.Remote  java.rmi.Server.UnicastRemoteObject Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 8
  9. RMI (Remote Method Invocation)  Xây dựng ứng dụng phân tán với RMI 1. Tạo giao diện (interface) khai báo các phương thức được gọi từ xa của đối tượng. 2. Tạo lớp cài đặt (implements) cho giao diện đã được khai báo. 3. Viết chương trình Server. 4. Viết chương trình Client. 5. Dịch các tập tin nguồn theo dạng RMI (rmic) để tạo ra các lớp tương ứng và stub cho Client, skeleton cho Server. 6. Khởi động dịch vụ registry (rmiregistry). 7. Thực hiện chương trình Server. 8. Thực thi chương trình Client. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 9
  10. RMI (Remote Method Invocation)  Ví dụ minh họa: Xây dựng ứng dụng phân tán theo dạng RMI:  Định nghĩa 1 phương thức String sayHello() cho phép gọi từ xa.  Khi kích hoạt phương thức đó: sẽ trả về kết quả là 1 chuỗi "Hello RMI" cho Client gọi nó. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 10
  11. RMI (Remote Method Invocation)  Bước 1: Tạo interface khai báo phương thức từ xa  Bước 2: Tạo lớp cài đặt cho interface khai báo ở trên Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 11
  12. RMI (Remote Method Invocation)  Bước 3: Chương trình Server, tạo đối tượng cho phép gọi hàm từ xa. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 12
  13. RMI (Remote Method Invocation)  Bước 4: Chương trình Client, tạo đối tượng tham chiếu đến đối tượng từ xa, gọi hàm từ xa trên đối tượng đó. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 13
  14. RMI (Remote Method Invocation)  Bước 5: Dịch các tập tin nguồn theo dạng RMI  javac HelloItf.java Hello.java HelloServer.java HelloClient.java Kết quả: HelloItf.class, Hello.class, HelloServer.class, HelloClient.class  rmic Hello Kết quả: Hello_Skel.class, Hello_Stub.class  Bước 6: Khởi động dịch vụ rmiregistry  start rmiregistry [port]  Cổng mặc định là 1099. Không đóng cửa sổ này lại Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 14
  15. RMI (Remote Method Invocation)  Bước 7: Thực thi Server  java -Djava.security.policy=URL_Of_PolicyFile ServerName  URL_Of_PolicyFile: địa chỉ theo dạng URL của tập tin mô tả chính sách về bảo mật mã nguồn của Server (policy file).  File có dạng sau (tham khảo thêm về tài liệu Security của Java): grant { // Giả sử cho phép mọi người đều được download tập tin trên Server permission java.security.AllPermission; }; Giả sử tập tin policy nằm ở thư mục D:\ViduJava\policy.java Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 15
  16. RMI (Remote Method Invocation)  Bước 8: Thực thi Client Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 16