RMI lập trình phân tán đối tượng RMI lập trình phân tán đối tượng Bởi: Khoa CNTT ĐHSP KT Hưng Yên Thông thường mã lệnh chương trình thực thi tập trung máy, cách lập trình truyền thống Sự phát triển vũ bão mạng máy tính đặc biệt mạng Internet toàn cầu, khiến chương trình truyền thống không đáp ứng yêu cầu Các chương trình yêu cầu phải có hợp tác xử lý, tức mã lệnh không tập trung máy mà phân tán nhiều máy Khi ứng dụng có mã lệnh thực thi phân tán nhiều máy chương trình gọi chương trình phân tán việc lập trình để tạo chương trình gọi lập trình phân tán Có nhiều công nghệ lập trình phân tán như: DCOM, CORBA, RMI, EJB RMI công nghệ Java dễ lập trình Thông thường đối tượng đựơc tập trung máy bạn triệu gọi phương thức cách gửu cho thông báo, câu hỏi đặt làm để triệu gọi phương thức đối tượng nằm máy khác nội dung lập trình phân tán mã lệnh RMI (Remote Method Invoke – tạm dịch triệu gọi phương thức từ xa) RMI cách thức giao tiếp đối tượng Java có mã lệnh cài đặt (bao gồm phương thức thuộc tính) nằm máy khác triệu gọi lẫn Hình sau mô hình triệu gọi đối tượng phân tán Trên máy A đối tượng A1, A2 gọi phương thức gọi triệu gọi phương thức cục (local method invoke) cách lập trình hướng đối tượng truyền thống sử dụng, tương tự đối tượng B1, B2, B3 đối tượng cục Tuy nhiên đối tượng Java triệu gọi phương thức đối tượng nằm máy khác dựa vào giao thức triệu gọi từ xa RMI Trong mô hình lời triệu gọi phương thức đối tượng B2 ( nằm máy B) từ đối tượng A1 ( nằm máy A) lời gọi phương thức từ xa 1/3 RMI lập trình phân tán đối tượng Gọi phương thức từ xa vấn đề phát sinh Việc triệu gọi phương thức từ xa nhìn đơn giản thực tế lại phức tạp triệu gọi phương thức cục Các đối tượng hai máy khác hoạt động hai tiến trình khác (có hai không gian địa khác nhau) nên việc tham chiếu biến địa đối tượng khác Ví dụ bạn truyền đối tượng cho phương thức triệu gọi từ xa thực bạn truyển tham chiếu đối tượng đến phương thức từ xa, nhiên vùng nhớ thực đối tượng lại nằm máy khác Lời gợi phương thức cục trả kết thông qua ngăn xếp lời gợi phương thức từ xa kết trả phải thông qua kết nối mạng cố truyền thông sẩy ra, việc bắt kiểm soát lỗi ứng dụng phân tán đắt Vai trò lớp trung gian Đối với lời gọi phương thức cục bộ, tham số truyền vào phương thức kết trả từ phương thức thực thông qua ngăn xếp (stack) lời gọi phương thức từ xa phải đóng gói chuyển qua mạng Để đơn giản suốt người lập trình đối tượng Java hai máy khác không triệu gọi phương thức cách trực tiếp mà thông qua lớp trung gian Lớp trung gian tồn hai phía: phía máy khách (nơi gọi phương thức đối tượng xa) máy chủ (nơi đối tượng thực cài đặt) Phía máy khác lớp trung gian gọi stub (lớp móc), phía máy chủ lớp trung gian gọi skeletion (lớp nối) 2/3 RMI lập trình phân tán đối tượng Ta hình dung lớp trung gian stub skel hai người trung gian giúp đối tượng xa giao dịch với Trong hình bạn có đối tượng C1 cài đặt máy C trình biên dịch Java giúp ta tạo hai lớp trung gian C1_stub C1_skel Lớp C1_stub mang máy A Khi A1 máy A triệu gọi phương thức đối tượng C1 chuyển lời gọi phương thức cho lớp trung gian C1_stub Lớp trung gian C1_stub có trách nhiệm đóng gói tham số chuyển tham số qua mạng đến phương thức triệu gọi đối tượng C1 Trên máy C lớp trung gian C1_Skel có nhiệm vụ nhận tham số chuyển vào vùng địa thích hợp sau gọi phương thức tương ứng Kết trả (nếu có) phương thức C1 trả lớp C1_Skel đóng gói chuyển ngược cho trình khách Trên máy khách lớp trung gian C1_Stub chuyển giao kết cuối lại cho A1 Bằng chế A1 nghĩ đối tượng C1 tồn máy với đối tượng cục khác Hơn nhờ có lớp trung gian C1_Stub mà kết nối mạng gặp cố lớp trung gian stub biết cách thông báo lỗi đến đối tượng A1 Thực tế làm cách A1 tham chiếu đến C1, đối tượng C1 cài đặt máy A? C1_Stub máy A thực việc chuyển tham số, nhận kết trả có thực giao thức mạng, hình ảnh C1 Để làm điều đối tượng C1 cần cung cấp giao diện tương ứng với phương thức mà đối tượng máy khác triệu gọi Chúng ta tiếp tục làm sáng tỏ đìêu nói giao diện từ xa 3/3 .. .RMI lập trình phân tán đối tượng Gọi phương thức từ xa vấn đề phát sinh Việc triệu gọi phương thức từ xa nhìn đơn giản thực tế lại phức tạp triệu gọi phương thức cục Các đối tượng hai... xa) máy chủ (nơi đối tượng thực cài đặt) Phía máy khác lớp trung gian gọi stub (lớp móc), phía máy chủ lớp trung gian gọi skeletion (lớp nối) 2/3 RMI lập trình phân tán đối tượng Ta hình dung... hai tiến trình khác (có hai không gian địa khác nhau) nên việc tham chiếu biến địa đối tượng khác Ví dụ bạn truyền đối tượng cho phương thức triệu gọi từ xa thực bạn truyển tham chiếu đối tượng