370 likes | 653 Views
THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG. CHUYÊN ĐỀ CORBA. GVHD : Phùng Hữu Phú SVTH : Trương Nghĩa An – 50000017 Phạm Trần Ngọc Bảo – 50000123 Hồ Nguyên Đạt – 50000486 Đỗ Thanh Hải - 50000628. NỘI DUNG. Giới thiệu CORBA CORBA và mô hình phân tán Phương thức động
E N D
THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG CHUYÊN ĐỀ CORBA GVHD: Phùng Hữu Phú SVTH: Trương Nghĩa An – 50000017 Phạm Trần Ngọc Bảo – 50000123 Hồ Nguyên Đạt – 50000486 Đỗ Thanh Hải - 50000628
NỘI DUNG • Giới thiệu CORBA • CORBA và mô hình phân tán • Phương thức động • Trình môi giới VisiBroker • CORBA services: Naming service • Chương trình ứng dụng (demo)
GIỚI THIỆU VỀ CORBA Vấn đề phát sinh : • Các đối tượng trong ngôn ngữ lập trình hướng đối tượng thiết kế bằng ngôn ngữ nào thì chỉ có mã lệnh tương ứng của ngôn ngữ đó mới truy xuất được chúng. • Làm sao các đối tượng được thiết kế bằng các ngôn ngữ lập trình khác nhau có thể triệu gọi và sử dụng lẫn nhau ?
GIỚI THIỆU C++ Bus Object Delphi Moto Object Java Passenger Object CORBA ? ? ? CORBA CORBA
GIỚI THIỆU • Các ngôn ngữ lập trình đều có các điểm chung là các lời gọi hàm, thủ tục, tham số truyền, trị trả về… • Ngôn ngữ đặc tả ánh xạ các điểm chung đó thành những ngôn ngữ lập trình khác nhau. • CORBA là ngôn ngữ đặc tả (description language)
IDL • CORBA còn được gọi là ngôn ngữ đặc tả giao tiếp (IDL – Interface Description Language) • Mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính… • Không chứa bất kỳ cài đặt mã lệnh nào • Đặc tả đối tượng dựa trên khái niệm interface trong Java.
VÍ DỤ VỀ IDL • Đặc tả đối tượng Calculator bằng ngôn ngữ IDL của CORBA • Tạo file Calculator.idl interface Calculator { long addNumber ( in long x, in long y ); }; • Để chuyển file đặc tả này sang các ngôn ngữ lập trình khác chúng ta có thể dùng như sau: • idl2cpp Calculator.idl // chuyển sang C++ • idlj Calculator.idl // chuyển sang java
VÍ DỤ VỀ IDL • Kết quả là chúng ta có được tập tin CalculatorOperations.java như sau: public interface CalculatorOperations { int addNumber(int x, int y); } // interface CalculatorOperations • Bước cài đặt hàm addNumber() là do lập trình viên thực hiện. • CORBA chỉ giúp triệu gọi hàm addNumber() từ đối tượng CalculatorOperations.
ÁNH XẠ TỪ IDL SANG JAVA IDL Java module package interface interface string java.lang.String long int long long long float float double double exception class operation Method
VÍ DỤ + CORBA IDL: module { interface MathLibrary { long add( in long x, in long y ); string About( in string version ); } }; + Java : package Math; public interface MathLibrary { int add (int x, int y); String About(String version); }
NHẬN XÉT • Ngôn ngữ đặc tả trong mô hình CORBA gần giống với ngôn ngữ C. • CORBA đưa ra từ khóa incho các biến truyền vào theo trị và từ khóa outđể lấy trị trả về. • Những thay đổi mới nhất về CORBA có thể tìm thấy ở trang www.omg.org
CORBA – MÔ HÌNH PHÂN TÁN • Trình môi giới trung gian ORB (Object Request Broker) • Cơ chế làm việc của ORB • Giao thức IIOP (Interoperate Internet Object Protocol)
ORB (Object Request Broker) • Các đối tượng sau khi tạo ra bởi các ngôn ngữ lập trình khác nhau phải được gọi thông qua một chương trình môi giới trung gian của CORBA gọi là ORB. • ORB hoạt động nhờ ngôn ngữ đặc tả IDL. • Dựa vào IDL, ORB sẽ biết được tên phương thức cần gọi, đối số, trị trả về,…Từ đó ORB có thể gọi phương thức của đối tuợng. • ORB hoàn toàn trong suốt (transparent) đối với lập trình viên và người sử dụng.
GIAO THỨC IIOP • Được định nghĩa dựa trên TCP/IP. • Cho phép các ORB của các ngôn ngữ khác nhau có thể giao tiếp với nhau. • Nhờ đó các đối tượng CORBA hiện thực bởi các ngôn ngữ khác nhau có thể giao tiếp với nhau.
PHƯƠNG THỨC ĐỘNG • Giới thiệu • Mục đích • Ưu – khuyết điểm • Sử dụng
MỤC ĐÍCH • Client phát hiện các interface runtime • Phục vụ các ứng dụng không thể dùng cách gọi tĩnh • Ví dụ: CORBA design tool
ƯU - KHUYẾT ĐIỂM • Ưu điểm: • Client không cần biết interface cho các server object • Cung cấp lựa chọn khi lấy kết quả trả về • Khuyết điểm • Chương trình phức tạp • Chi phí cao • Dễ gây ra lỗi
SỬ DỤNG • Tạo đối tượng Request • request() • create_request() • Đóng gói đối tượng request • add_value() • result() • Gọi phương thức • invoke() • send_deferred()
CORBA - ORB VisiBroker • Giới thiệu • Trình môi giới trung gian • Giao tiếp giữa các đối tượng CORBA theo giao thức IIOP • Do hãng Borland cài đặt • Download miễn phí tại: http://www.borland.com/visibroker
SỬ DỤNG VisiBroker – các điểm căn bản • Dịch file IDL • Idl2java XXX.idl • Biên dịch mã nguồn: • vbjc *.java • Khởi động trình ORB • osagent.exe • Chạy trình ứng dụng • vbj Client • vbj Server
CORBA SERVICE • Tương tác giữa các đối tượng phân bố
CORBA SERVICES CORBA SERVICES Naming Object life cycle Event Concurency Control Naming Transaction Trader Query Object Request Broker
NAMING SERVICE • Là dịch vụ cho phép truy xuất đến các đối tượng phân bố thông qua tên. • Được định nghĩa trong CosNaming.idl
COSNAMING • Gồm có 2 interface chủ yếu • NamingComponent • NamingContext • Lưu trữ đối tượng theo kiến trúc cây phân cấp.
NamingComponent • Là thành phần chứa tên (tên nhãn hoặc tên tập tin) • Có thể ràng buộc tên với một đối tượng corba bất kỳ.
NamingContext • Là đối tượng dùng để tham chiếu đến một NamingComponent hay một NamingContext khác. • Giống như thư mục trong hệ thống file. • Đặt tên dựa vào NamingComponent.
MÔ HÌNH LƯU TRỮ ĐỐI TƯỢNG Market Object A Tên ràng buộc của đối tượng Stock Toys Object B Đối tượng được ràng buộc Đối tượng NameContext Fruit Shelf Object C Book Panel Đối tượng NameComponent
CÁC HÀM CƠ BẢN • Tạo NamingContext: • new_context() • New_bind_context(NameComponent[] path) • Hủy NamingContext: • Destroy() • Lấy về đối tượng NamingContext: • resolve_initial_references(ObjectId id) • Resolve(NameComponent[] path)
CÁC HÀM CƠ BẢN • Tạo một bind • Bind(NameComponent[] path, Object obj) • Bind_context(NameComponent[] path, NameContext nc) • Rebind(NameComponent[] path, Object obj) • Hủy một bind • Unbind(NameComponent[] path) • Liệt kê các binding trong một context • List(NameContext nc, BindingList bl, BindingIterator bt)
TÀI LIỆU THAM KHẢO • Fundamental of distributed object system – the CORBA perspective • Teach yourself CORBA in 14 days • JAVA - Lập trình mạng. • www.omg.org • www.borland.com/visibroker
THE END THE END