corba
TRANSCRIPT
THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNGTHUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG
CHUYÊN ĐỀ CORBACHUYÊ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 DUNGNỘI DUNG
Giới thiệu CORBAGiới thiệu CORBACORBA và mô hình phân tánCORBA và mô hình phân tánPhương thức động Phương thức động Trình môi giới VisiBrokerTrình môi giới VisiBrokerCORBA services: Naming serviceCORBA services: Naming serviceChương trình ứng dụng (demo)Chương trình ứng dụng (demo)
GIỚI THIỆU VỀ CORBAGIỚI THIỆU VỀ CORBA
Vấn đề phát sinh :Vấn đề phát sinh :Các đối tượng trong ngôn ngữ lập trình 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ữ 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 nào thì chỉ có mã lệnh tương ứng của ngôn ngữ đó mới truy xuất được chúng.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 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ể 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 ?triệu gọi và sử dụng lẫn nhau ?
GIỚI THIỆUGIỚI THIỆU
C++ Bus Object Delphi Moto Object
Java Passenger Object
? ?
?CORBA
CORBACORBA
GIỚI THIỆUGIỚI THIỆU
Các ngôn ngữ lập trình đều có các điểm 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ố chung là các lời gọi hàm, thủ tục, tham số truyền, trị trả về…truyền, trị trả về…
Ngôn ngữ đặc tả ánh xạ các điểm chung 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 đó thành những ngôn ngữ lập trình khác nhau.nhau.
CORBA là ngôn ngữ đặc tả (description CORBA là ngôn ngữ đặc tả (description language)language)
IDLIDL
CORBA còn được gọi là ngôn ngữ đặc tả CORBA còn được gọi là ngôn ngữ đặc tả giao tiếp (IDL – Interface Description giao tiếp (IDL – Interface Description Language)Language)
Mô tả chức năng của đối tượng thông qua Mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính…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 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 Đặc tả đối tượng dựa trên khái niệm
interface trong Java.interface trong Java.
VÍ DỤ VỀ IDLVÍ DỤ VỀ IDL
Đặc tả đối tượng Calculator bằng ngôn ngữ IDL Đặc tả đối tượng Calculator bằng ngôn ngữ IDL của CORBAcủa CORBA
Tạo file Calculator.idl Tạo file Calculator.idl interface Calculator {interface Calculator {
long addNumber ( in long x, in long y );long addNumber ( in long x, in long y );};};
Để chuyển file đặc tả này sang các ngôn ngữ Để 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:lập trình khác chúng ta có thể dùng như sau: idl2cpp Calculator.idl // chuyển sang C++idl2cpp Calculator.idl // chuyển sang C++ idlj Calculator.idl // chuyển sang javaidlj Calculator.idl // chuyển sang java
VÍ DỤ VỀ IDLVÍ DỤ VỀ IDL
Kết quả là chúng ta có được tập tin Kết quả là chúng ta có được tập tin CalculatorOperations.java như sau:CalculatorOperations.java như sau:
public interface CalculatorOperationspublic interface CalculatorOperations
{{
int addNumber(int x, int y);int addNumber(int x, int y);
} // interface CalculatorOperations} // interface CalculatorOperations
Bước cài đặt hàm addNumber() là do lập trình Bước cài đặt hàm addNumber() là do lập trình viên thực hiện.viên thực hiện.
CORBA chỉ giúp triệu gọi hàm addNumber() từ CORBA chỉ giúp triệu gọi hàm addNumber() từ đối tượng CalculatorOperations.đối tượng CalculatorOperations.
ÁNH XẠ TỪ IDL SANG JAVAÁNH XẠ TỪ IDL SANG JAVA
IDLIDL Java Javamodulemodule packagepackageinterfaceinterface interfaceinterfacestringstring java.lang.Stringjava.lang.Stringlonglong intintlong longlong long longlongfloatfloat floatfloatdoubledouble doubledoubleexceptionexception classclassoperation operation MethodMethod
VÍ DỤVÍ DỤ
+ CORBA IDL:+ CORBA IDL:module {module {
interface MathLibrary {interface MathLibrary {long add( in long x, in long y );long add( in long x, in long y ); string About( in string version );string About( in string version );
}}};};
+ Java :+ Java :package Math;package Math;public interface MathLibrary {public interface MathLibrary {
int add (int x, int y);int add (int x, int y);String About(String version);String About(String version);
}}
NHẬN XÉTNHẬN XÉT
Ngôn ngữ đặc tả trong mô hình CORBA Ngôn ngữ đặc tả trong mô hình CORBA gần giống với ngôn ngữ C.gần giống với ngôn ngữ C.
CORBA đưa ra từ khóa CORBA đưa ra từ khóa inin cho các biến cho các biến truyền vào theo trị và từ khóa truyền vào theo trị và từ khóa outout để lấy trị để lấy trị trả về.trả về.
Những thay đổi mới nhất về CORBA có Những thay đổi mới nhất về CORBA có thể tìm thấy ở trang thể tìm thấy ở trang www.omg.orgwww.omg.org
CORBA – MÔ HÌNH PHÂN TÁNCORBA – MÔ HÌNH PHÂN TÁN
Trình môi giới trung gian ORB (Object Trình môi giới trung gian ORB (Object Request Broker)Request Broker)
Cơ chế làm việc của ORBCơ chế làm việc của ORBGiao thức IIOP (Interoperate Internet Giao thức IIOP (Interoperate Internet
Object Protocol)Object Protocol)
ORB (Object Request Broker)ORB (Object Request Broker)
Các đối tượng sau khi tạo ra bởi các ngôn ngữ 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 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 chương trình môi giới trung gian của CORBA gọi là ORB.gọi là ORB.
ORB hoạt động nhờ ngôn ngữ đặc tả IDL.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 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ứ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.thể gọi phương thức của đối tuợng.
ORB hoàn toàn trong suốt (transparent) đối với ORB hoàn toàn trong suốt (transparent) đối với lập trình viên và người sử dụng.lập trình viên và người sử dụng.
ORB (Object Request Broker)ORB (Object Request Broker)
OR
B
OR
B
ORB
Network
C++CorbaObject
DelphiCorbaObject
JavaCorbaObject
CƠ CHẾ HOẠT ĐỘNGCƠ CHẾ HOẠT ĐỘNG
ORB ORB
Intermidiate class_Stub
Intermidiate class_Skel
C++Client
JavaCorbaObject
IIOP
Client Server
GIAO THỨC IIOPGIAO THỨC IIOP
ĐĐược định nghĩa dựa trên TCP/IP.ược định nghĩa dựa trên TCP/IP.Cho phép các ORB của các ngôn ngữ Cho phép các ORB của các ngôn ngữ
khác nhau có thể giao tikhác nhau có thể giao tiếếp với nhau.p với nhau.Nhờ đó các đối tượng CORBA hiện Nhờ đó các đối tượng CORBA hiện
thực bởi các ngôn ngữ khác nhau có thực bởi các ngôn ngữ khác nhau có thể giao tithể giao tiếếp với nhau.p với nhau.
PHƯƠNG THỨC ĐỘNGPHƯƠNG THỨC ĐỘNG
Giới thiệuGiới thiệuMục đíchMục đíchƯu – khuyết điểmƯu – khuyết điểmSử dụngSử dụng
GIỚI THIỆUGIỚI THIỆU
MỤC ĐÍCHMỤC ĐÍCH
Client phát hiện các interface runtimeClient phát hiện các interface runtimePhục vụ các ứng dụng không thể Phục vụ các ứng dụng không thể
dùng cách gọi tĩnhdùng cách gọi tĩnhVí dụ: CORBA design toolVí dụ: CORBA design tool
ƯU - KHUYẾT ĐIỂMƯU - KHUYẾT ĐIỂM
Ưu điểm:Ưu điểm:Client không cần biết interface cho các server Client không cần biết interface cho các server
objectobjectCung cấp lựa chọn khi lấy kết quả trả vềCung cấp lựa chọn khi lấy kết quả trả về
Khuyết điểmKhuyết điểmChương trình phức tạpChương trình phức tạpChi phí caoChi phí caoDễ gây ra lỗiDễ gây ra lỗi
Tạo đối tượng Tạo đối tượng RequestRequest request()request()create_request()create_request()
Đóng gói đối tượng requestĐóng gói đối tượng requestadd_value()add_value() result()result()
Gọi phương thứcGọi phương thức invoke()invoke()send_deferred()send_deferred()
SỬ DỤNGSỬ DỤNG
GỌI PHƯƠNG THỨC ĐỘNGGỌI PHƯƠNG THỨC ĐỘNG
Friend.idlgreeting()
FriendServant.java Setup.java Client.java
IDL
Cài đặt
đối tượng
Đăng ký
đối tượng
Trình khách gọi
đối tượng
Giới thiệuGiới thiệuTrình môi giới trung gianTrình môi giới trung gianGiao tiếp giữa các đối tượng CORBA theo Giao tiếp giữa các đối tượng CORBA theo
giao thức IIOPgiao thức IIOPDo hãng Borland cài đặtDo hãng Borland cài đặtDownload miễn phí tại:Download miễn phí tại:
http://www.borland.com/visibroker
CORBA - ORB VisiBrokerCORBA - ORB VisiBroker
ServerPOA
POA
ROOT POA
Servant Manager
Active Object Map
ObjectID1ObjectID2ObjectID3
Servants
Client
CORBA - VISIBROKERCORBA - VISIBROKER
VisiBroker – các điểm căn bảnVisiBroker – các điểm căn bản
Dịch file IDLDịch file IDL Idl2java XXX.idlIdl2java XXX.idl
Biên dịch mã nguồn:Biên dịch mã nguồn:vbjc *.javavbjc *.java
Khởi động trình ORBKhởi động trình ORBosagent.exeosagent.exe
Chạy trình ứng dụngChạy trình ứng dụngvbj Clientvbj Clientvbj Servervbj Server
SỬ DỤNGSỬ DỤNG
CORBA SERVICECORBA SERVICE
Tương tác giữa các đối Tương tác giữa các đối tượng phân bốtượng phân bố
CORBA SERVICESCORBA SERVICES
Object Request BrokerObject Request Broker
Ob
ject life O
bject life cyclecycle
Nam
ing
Nam
ing
Even
tE
vent
Co
ncu
rency
Co
ncu
rency
Co
ntro
lC
on
trol
Trad
erT
rader
Tran
saction
Tran
saction
Qu
eryQ
uery
CORBA SERVICES
NamingNaming
NAMING SERVICENAMING SERVICE
Là dịch vụ cho phép truy xuất đến các đối Là dịch vụ cho phép truy xuất đến các đối tượng phân bố thông qua tên.tượng phân bố thông qua tên.
Được định nghĩa trong CosNaming.idlĐược định nghĩa trong CosNaming.idl
COSNAMINGCOSNAMING
Gồm có 2 interface chủ yếuGồm có 2 interface chủ yếuNamingComponentNamingComponentNamingContextNamingContext
Lưu trữ đối tượng theo kiến trúc cây phân Lưu trữ đối tượng theo kiến trúc cây phân cấp.cấp.
NamingComponentNamingComponent
Là thành phần chứa tên (tên nhãn hoặc tên Là thành phần chứa tên (tên nhãn hoặc tên tập tin)tập tin)
Có thể ràng buộc tên với một đối tượng Có thể ràng buộc tên với một đối tượng corba bất kỳ.corba bất kỳ.
NamingContextNamingContext
Là đối tượng dùng để tham chiếu đến một Là đối tượng dùng để tham chiếu đến một NamingComponent hay một NamingContext NamingComponent hay một NamingContext khác.khác.
Giống như thư mục trong hệ thống file.Giống như thư mục trong hệ thống file.Đặt tên dựa vào NamingComponent.Đặt tên dựa vào NamingComponent.
MÔ HÌNH LƯU TRỮ ĐỐI TƯỢNGMÔ HÌNH LƯU TRỮ ĐỐI TƯỢNG
MarketMarket
StockStock
ToysToys
FruitFruitShelfShelf
BookBook
PanelPanel
Object Object AA
Object Object BB
Object Object CC
Đối tượng Đối tượng NameContextNameContext
Đố
i tượ
ng
đư
ợc ràn
g b
uộ
cĐ
ối tư
ợn
g đ
ượ
c ràng
bu
ộc
Đối tượng Đối tượng NameComponentNameComponent
Tên ràng buộc của đối tượngTên ràng buộc của đối tượng
CÁC HÀM CƠ BẢNCÁC HÀM CƠ BẢN
Tạo NamingContext:Tạo NamingContext:new_context()new_context()New_bind_context(NameComponent[] path)New_bind_context(NameComponent[] path)
Hủy NamingContext:Hủy NamingContext:Destroy()Destroy()
Lấy về đối tượng NamingContext:Lấy về đối tượng NamingContext:resolve_initial_references(ObjectId id)resolve_initial_references(ObjectId id)Resolve(NameComponent[] path)Resolve(NameComponent[] path)
CÁC HÀM CƠ BẢNCÁC HÀM CƠ BẢN
Tạo một bindTạo một bind Bind(NameComponent[] path, Object obj)Bind(NameComponent[] path, Object obj) Bind_context(NameComponent[] path, NameContext Bind_context(NameComponent[] path, NameContext
nc)nc) Rebind(NameComponent[] path, Object obj)Rebind(NameComponent[] path, Object obj)
Hủy một bindHủy một bind Unbind(NameComponent[] path)Unbind(NameComponent[] path)
Liệt kê các binding trong một contextLiệt kê các binding trong một context List(NameContext nc, BindingList bl, BindingIterator List(NameContext nc, BindingList bl, BindingIterator
bt) bt)
TÀI LIỆU THAM KHẢOTÀI LIỆU THAM KHẢO
Fundamental of distributed object system Fundamental of distributed object system – the CORBA perspective– the CORBA perspective
Teach yourself CORBA in 14 daysTeach yourself CORBA in 14 daysJAVA - Lập trình mạng.JAVA - Lập trình mạng.www.omg.orgwww.omg.orgwww.borland.com/visibrokerwww.borland.com/visibroker
THE ENDTHE END
THE END