intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình mạng Java: Chương 5 - ThS. Nguyễn Minh Thành

Chia sẻ: You Can | Ngày: | Loại File: PDF | Số trang:43

52
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 5 cung cấp những kiến thức về phân tán đối tượng trong Java. Trong chương này sẽ giúp người học hiểu được những nội dung tổng quan về hệ thống phân tán, hiểu được phân tán đối tượng với RMI và phân tán đối tượng với CORBA. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng Java: Chương 5 - ThS. Nguyễn Minh Thành

  1. Chương 5: Phân Tán Đối Tượng Trong Java GIẢNG VIÊN : THS. NGUYỄN MINH THÀNH EMAIL : THANHNM@ITC.EDU.VN
  2. Nội Dung 1. Giới thiệu về hệ thống phân tán 2. Phân tán đối tượng với RMI 3. Phân tán đối tượng với CORBA MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 2
  3. Giới thiệu về hệ thống phân tán  Phần mềm đang ngày càng trở nên phức tạp quá mức và dường như đang vượt khỏi khả năng kiểm soát của các mô hình phát triển hiện có.  Việc kinh doanh phần mềm không còn chỉ là bán nguyên một ứng dụng, mà còn có thể chỉ bán một dịch vụ của hệ thống.  Ví dụ : Google bán dịch vụ bản đồ, quảng cáo… cho phép nhúng vào các ứng dụng của các công ty khác  Mô hình phân tán đối tượng giúp cho việc truy xuất các dịch vụ của các đối tượng từ xa trở nên phổ biến. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 3
  4. Phân Tán Đối Tượng Với RMI MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 4
  5. Phân Tán Đối Tượng Với RMI Giới Thiệu về RMI RMI (Remote Method Invoke) là một cơ chế triệu gọi phương thức từ xa đã được thực hiện và tích hợp trong ngôn ngữ Java. RMI còn cho phép một Client có thể gửi tới một đối tượng đến cho Server xử lý, và đối tượng này cũng có thể được xem là tham số cho lời gọi hàm từ xa, đối tượng này cũng có những dữ liệu bên trong và các hành vi như một đối tượng thực sự. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 5
  6. Phân Tán Đối Tượng Với RMI Mục đích của RMI • Hỗ trợ gọi phương thức từ xa trên các đối tượng trong các máy ảo khác nhau • Tích hợp mô hình đối tượng phân tán vào ngôn ngữ lập trình Java theo một cách tự nhiên trong khi vẫn duy trì các ngữ cảnh đối tượng của ngôn ngữ lập trình Java • Làm cho sự khác biệt giữa mô hình đối tượng phân tán và mô hình đối tượng cục bộ không có sự khác biệt. • Tạo ra các ứng dụng phân tán có độ tin cậy một cách dễ dàng • Duy trì sự an toàn kiểu được cung cấp bởi môi trường thời gian chạy của nền tảng Java • Hỗ trợ các ngữ cảnh tham chiếu khác nhau cho các đối tượng từ xa • Duy trì môi trường an toàn của Java bằng các trình bảo an và các trình nạp lớp. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 6
  7. Phân Tán Đối Tượng Với RMI Lưu ý  Cũng như tất cả các chương trình khác trong Java, chương trình RMI cũng được xây dựng bởi các giao tiếp và lớp.  Chỉ có những phương thức khai báo trong giao tiếp hoặc lớp thừa kế từ giao tiếp Remote hoặc các lớp con của Remote mới được Client gọi từ xa.  Giao tiếp Remote nằm trong packet java.rmi QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 7
  8. Phân Tán Đối Tượng Với RMI Các lớp trung gian Stub và Skeleton Trong kỹ thuật lập trình phân tán RMI, để các đối tượng trên các máy Java ảo khác nhau có thể truyền tin với nhau thông qua các lớp trung gian: Stub và Skeleton. Vai trò của lớp trung gian: Lớp trung gian tồn tại cả ở hai phía client và server  Phía client lớp trung gian này gọi là Stub (lớp móc)  Phía server lớp trung gian này gọi là Skeleton(lớp nối) QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 8
  9. Phân Tán Đối Tượng Với RMI Cơ chế hoạt động của RMI Các hệ thống RMI phục vụ cho việc truyền tin thường được chia thành hai loại: client và server. Server RMI phải đăng ký với một dịch vụ tra tìm và đăng ký tên. Dịch vụ này cho phép các client truy tìm chúng, hoặc chúng có thể tham chiếu tới dịch vụ trong một mô hình khác. Mỗi khi server đựơc đăng ký, nó sẽ chờ các yêu cầu RMI từ các client. Các client RMI sẽ gửi các thông điệp RMI để gọi một phương thức trên một đối tượng từ xa trên Server. Trước khi thực hiện gọi phương thức từ xa, client phải nhận được một tham chiếu từ xa. Ứng dụng client yêu cầu một tên dịch vụcụthể, và nhận một URL trỏtới tài nguyên từ xa theo mẫu : rmi://hostname:port/servicename QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 9
  10. Phân Tán Đối Tượng Với RMI Cơ chế hoạt động của RMI (tt) Mỗi khi có được một tham chiếu, client có thể tương tác với dịch vụ từ xa. Các chi tiết liên quan đến mạng hoàn toàn được che dấu đối với những người phát triển ứng dụng làm việc với các đối tượng từ xa đơn giản như làm việc với các đối tượng cục bộ. Điều này có thể có được thông qua sự phân chia hệ thống RMI thành hai thành phần, stub và skeleton. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 10
  11. Phân Tán Đối Tượng Với RMI Các lớp và giao tiếp trong gói java.rmi  Giao tiếp Remote  Giao tiếp rỗng, các giao tiếp hoặc lớp muốn khai báo các phương thức gọi từ xa phải kế thừa hoặc thực thi giao tiếp này.  Lớp Naming  Truyền tin trực tiếp với một trình đăng ký đang chạy trên server để ánh xạ các URL rmi://hostname/myObject thành các đối tượng từ xa cụ thể trên host xác định.  Public static Remote lookup(String url)throws RemotException, NotBoundException, AccessException, MalformedURLException : Client sử dụng phương thức này để tìm kiếm một đối tượng từ xa gắn liền với tên đối tượng.  Public static void bind(String url, Remote object)throws RemotException, AlreadyBoundException, MalformedURLException, AccessException : Server sử dụng phương thức để liên kết một tên với một đối tượng ở server khác. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 11
  12. Phân Tán Đối Tượng Với RMI Các lớp và giao tiếp trong gói java.rmi Lớp Naming  Public static void rebind(String url,Remote obj)throws RemoteException, AccessException, MalformedURLException : Phương thức này giống như phương thức bind() ngoại trừ việc là nó gán URL cho đối tượng ngay cả khi URL đã được gán.  Public static String[] list(String url) throws RemotException : Phương thức này trảvề một mảng chuỗi, mỗi chuỗi là một URL đã được gắn với một tham chiếu. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 12
  13. Phân Tán Đối Tượng Với RMI Các lớp và giao tiếp trong gói java.rmi.registry Giao tiếp Registry và lớp LocateRegistry cho phép các client tìm kiếm các đối tượng ở xa trên một server theo tên. Giao tiếp Registry • bind() để gán một tên với một đối tượng từ xa cụthể • list() liệt kê tất cảcác tên đã được đăng ký với trình đăng ký • lookup() tìm một đối tượng từ xa cụthểvới một URL cho trước gắn với nó • rebind() gán một tên với một đối tượng ởxa khác • unbind() loại bỏmột tên đã được gán cho một đối tượng ởxa trong trình đăng ký Registry.REGISTRY_PORT là cổng mặc định để lắng nghe các các yêu cầu. Giá trị mặc định là 1099. QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 13
  14. Phân Tán Đối Tượng Với RMI Các lớp và giao tiếp trong gói java.rmi.registry Lớp LocateRegistry : Lớp java.rmi.registry.LocateRegistry cho phép client tìm trong trình đăng ký . • Public static Registry getRegistry() throws RemoteException • Public static Registry getRegistry(int port) throws RemoteException • Public static Registry getRegistry(String host) throws RemoteException • Public static Registry getRegistry(String host, int port) throws RemoteException • Public static Registry getRegistry(String host, int port, RMIClientSocketFactory factory) throws RemoteException Mỗi phương thức trên trả về một đối tượng Registry được sử dụng để nhận các đối tượng từ xa thông qua tên. • Public void LocateRegistry.createRegistry(port) : khởi tạo một trình đăng ký trên Server QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 14
  15. Phân Tán Đối Tượng Với RMI Cài đặt chương trình Ví dụ minh họa :  Xây dựng chương trình tính tổng 2 số. Trong đó :  Server đóng vai trò thực hiện tính tổng bằng cách cho phép client triệu gọi hàm từ xa.  Client triệu gọi hàm tính tổng từ Server và nhận kết quả hiện ra màn hình QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 15
  16. Phân Tán Đối Tượng Với RMI Xây dựng các file Source Bước 1: Xây dựng giao diện chứa các phương thức có thể triệu gọi từ xa public interface Calculator extends Remote{ public int sum(int num1, int num2)throws RemoteException; } Bước 2: Viết lớp thực thi giao tiếp public class CalculatorImpl implements Calculator{ public CalculatorImpl()throws RemoteException{ super(); } @Override public int sum(int num1, int num2)throws RemoteException{ return num1 + num2; } } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 16
  17. Phân Tán Đối Tượng Với RMI Xây dựng các file Source (tt) Bước 3: Viết chương trình cho Server public class RMIServerDemo { public static void main(String[] args) throws RemoteException, UnknownHostException, MalformedURLException { Calculator cal = new CalculatorImpl(); UnicastRemoteObject.exportObject(cal); Naming.bind("rmi://169.254.80.80/Calculator", cal); System.out.println("Server ready for client requests..."); } } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 17
  18. Phân Tán Đối Tượng Với RMI Xây dựng các file Source (tt) Bước 4: Viết chương trình cho Client public class RMIClientDemo { public static void main(String[] args) throws IOException, NotBoundException{ BufferedReader user =new BufferedReader(new InputStreamReader(System.in)); System.out.println("Nhap so 1:"); Integer num1= Integer.parseInt(user.readLine()); System.out.println("Nhap so 2:"); Integer num2= Integer.parseInt(user.readLine()); String name="rmi://169.254.80.80/Calculator"; Calculator cal = (Calculator) Naming.lookup(name); Integer kq = cal.sum(num1, num2); System.out.println("Tong =" + kq.toString()); } } QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 18
  19. Phân Tán Đối Tượng Với RMI Triển khai ứng dụng Bước 6: Thực hiện biên dịch các file java, tạo ra các file .class C:\MyJava>javac Calculator.java C:\MyJava>javac CalculatorImpl.java C:\MyJava>javac RMIServerDemo.java C:\MyJava>javac RMIClientDemo.java Bước 7: Tạo các lớp trung gian Stub và Skeleton C:\MyJava>rmic CalculatorImpl //file class Bước 8: Tổ chức chương trình Phía Server Phia Client Calculator.class Calculator.class CalculatorImpl.class CalculatorImpl_Stub.class CalculatorImpl_Stub.class RMIClientDemo.class RMIServerDemo.class QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 19
  20. Phân Tán Đối Tượng Với RMI Triển khai ứng dụng (tt) Bước 6: Thực hiện biên dịch các file java, tạo ra các file .class C:\MyJava>javac Calculator.java C:\MyJava>javac CalculatorImpl.java C:\MyJava>javac RMIServerDemo.java C:\MyJava>javac RMIClientDemo.java Bước 7: Tạo các lớp trung gian Stub và Skeleton C:\MyJava>rmic CalculatorImpl //file class Bước 8: Khởi động phía Server ◦ Khởi động đăng ký C:\MyJava>start rmiregistry ◦ Khởi động Server C:\MyJava>start java RMIServerDemo Bước 9: Chạy chương trình phía Client C:\MyJava>java RMIClientDemo QUẢN LÝ ĐỊA CHỈ KẾT NỐI MẠNG TRONG JAVA 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2