THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG
THUYẾT TRÌNH MÔN HỌC LẬP TRÌNH MẠNG
CHUYÊN ĐỀ CORBA
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
NỘI DUNG
Giới thiệu CORBA
Giới thiệu CORBA
CORBA và mô hình phân tán
CORBA và mô hình phân tán
Phương thức động
Phương thức động
Trình môi giới VisiBroker
Trình môi giới VisiBroker
CORBA services: Naming service
CORBA services: Naming service
Chương trình ứng dụng (demo)
Chương trình ứng dụng (demo)
GIỚI THIỆU VỀ CORBA
GIỚ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ỆU
GIỚI THIỆU
C++ Bus Object Delphi Moto Object
Java Passenger Object
? ?
?
CORBA
CORBA
CORBA
GIỚI THIỆU
GIỚ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)
IDL
IDL
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Ề IDL
VÍ 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 CORBA
củ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ữ lập
Để 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:
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 java
idlj Calculator.idl // chuyển sang java
VÍ DỤ VỀ IDL
VÍ 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 CalculatorOperations
public 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
IDL
IDL
Java
Java
module
module
package
package
interface
interface
interface
interface
string
string
java.lang.String
java.lang.String
long
long
int
int
long long
long long
long
long
float
float
float
float
double
double
double
double
exception
exception
class
class
operation
operation
Method
Method
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ÉT
NHẬ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
in
in
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
out
out
để 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.org
www.omg.org
CORBA – MÔ HÌNH PHÂN TÁN
CORBA – 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 ORB
Cơ chế làm việc của ORB
Giao 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 gọi
chương trình môi giới trung gian của CORBA gọi
là ORB.
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)
CƠ CHẾ HOẠT ĐỘNG
CƠ CHẾ HOẠT ĐỘNG
GIAO THỨC IIOP
GIAO 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 ti
khá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 ti
thể giao ti
ế
ế
p với nhau.
p với nhau.
PHƯƠNG THỨC ĐỘNG
PHƯƠNG THỨC ĐỘNG
Giới thiệu
Giới thiệu
Mục đích
Mục đích
Ưu – khuyết điểm
Ưu – khuyết điểm
Sử dụng
Sử dụng
GIỚI THIỆU
GIỚI THIỆU
MỤC ĐÍCH
MỤC ĐÍCH
Client phát hiện các interface runtime
Client phát hiện các interface runtime
Phụ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ĩnh
dùng cách gọi tĩnh
Ví dụ: CORBA design tool
Ví 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
Client không cần biết interface cho các
server object
server object
Cung 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ểm
Khuyết điểm
Chương trình phức tạp
Chương trình phức tạp
Chi phí cao
Chi phí cao
Dễ gây ra lỗi
Dễ gây ra lỗi
Tạo đối tượng
Tạo đối tượng
Request
Request
request()
request()
create_request()
create_request()
Đóng gói đối tượng request
Đóng gói đối tượng request
add_value()
add_value()
result()
result()
Gọi phương thức
Gọi phương thức
invoke()
invoke()
send_deferred()
send_deferred()
SỬ DỤNG
SỬ DỤNG
GỌI PHƯƠNG THỨC ĐỘNG
GỌI PHƯƠNG THỨC ĐỘNG
Giới thiệu
Giới thiệu
Trình môi giới trung gian
Trình môi giới trung gian
Giao 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 IIOP
giao thức IIOP
Do hãng Borland cài đặt
Do hãng Borland cài đặt
Download miễn phí tại:
Download miễn phí tại:
/>CORBA - ORB VisiBroker
CORBA - ORB VisiBroker
CORBA - VISIBROKER
CORBA - VISIBROKER
VisiBroker – các điểm căn bản
VisiBroker – các điểm căn bản
Dịch file IDL
Dịch file IDL
Idl2java XXX.idl
Idl2java XXX.idl
Biên dịch mã nguồn:
Biên dịch mã nguồn:
vbjc *.java
vbjc *.java
Khởi động trình ORB
Khởi động trình ORB
osagent.exe
osagent.exe
Chạy trình ứng dụng
Chạy trình ứng dụng
vbj Client
vbj Client
vbj Server
vbj Server
SỬ DỤNG
SỬ DỤNG