Tải bản đầy đủ (.ppt) (46 trang)

Tìm hiểu lập trình với corba

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (649.38 KB, 46 trang )

PHÁT TRIỂN PHẦN MỀM HƯỚNG CẤU PHẦN
(Component – Oriented Programming)
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
Chương 4: COP & Corba
Chương 4: COP & Corba

Giới thiệu CORBA

Kiến trúc CORBA

Các thành phần CORBA

Bắt đầu COP với HelloCORBA

Các dịch vụ CORBA

Các công cụ hỗ trợ CORBA
Đặt vấn đề
Đặt vấn đề

Mô hình web hiện nay cho thấy thế mạnh của mô
hình Client – Server

Xu hướng tập trung giải quyết vấn đề mà nguồn lực
là Server

Các phần mềm viết trên các ngôn ngữ khác nhau

Có cách nào để có thể kết nối Client – Server trong
khi mỗi máy triển khai trên một nền tảng ngôn ngữ


khác nhau?
Đặt vấn đề
Đặt vấn đề
C++ Bus Object Delphi Moto Object
Java Passenger Object
? ?
?
CORBA
CORBA
CORBA

Common Object Request Broker Architecture

Được tạo ra bởi công ty
Được tạo ra bởi công ty Object Management Group
(OMG), có liên quan tới khoảng trên 800 công ty
khác nhau.

Corba trợ giúp quá trình đặc tả các thành phần.
Corba trợ giúp quá trình đặc tả các thành phần.

Corba hỗ trợ tốt cho các ứng dụng chạy trên mô
Corba hỗ trợ tốt cho các ứng dụng chạy trên mô
hình Client – Server.
hình Client – Server.

Với đặc tả Corba, các phần mềm chạy trên server
và Client có thể triển khai với nền tảng ngôn ngữ
lập trình khác nhau: Java, C++, Delphi…
Giới thiệu CORBA

Giới thiệu CORBA

Ra đời năm 1991. Đáp ứng nhu cầu xây dựng các
mô hình đối tượng phân tán.

Bao gồm 2 thành phần cơ bản: IDL + API

IDL = Interface Definition Language

API trợ giúp việc gọi hàm từ xa trong mô hình phân
tán.

Hỗ trợ BOA (Basic Object Adapter)
CORBA 1.0
CORBA 1.0

Ra đời năm 1996.

Thay thế BOA bằng POA (Portable Object Adapter
– Bộ điều khiển đối tượng di động)

Hỗ trợ giao thức Internet Inter-ORB Protocol (IIOP)

Cho chép ánh xạ từ IDL sang C, Java, Delphi…

Các công ty phần mềm lớn chú ý và hỗ trợ kĩ thuật:
+ SUN hỗ trợ công cụ: IDLJ – IDLtoJava
+ Microsoft hỗ trợ công cụ DCOM – Sau này được
thay thế bởi Dotnet Framework.
CORBA 2.0

CORBA 2.0

Là phiên bản cuối cùng của CORBA

Chính thức hỗ trợ kiến trúc hướng thành phần

Tích hợp CCM (CORBA Component Model)

OpenCCM, MicoCCM, and EJB 3.0 là những công
cụ giúp triển khai các thành phần với CORBA.

OpenCCM sẽ được giới thiệu trong phần sau.
CORBA 3.0
CORBA 3.0
Kiến trúc cơ bản CORBA
Kiến trúc cơ bản CORBA
Kiến trúc cơ bản CORBA
Kiến trúc cơ bản CORBA

Object Request Braher (ORB)

Object Adapter (OA)

Stub and Skeleton

Interface Repository (IR) and Implementation
Repository IR

Object References (OR)


Interface Definition Language (IDL) and Language
Mapping
Object Request Broker/Braher (ORB)

Đối tượng trung gian xử lý yêu cầu.

Chứa các thư viện và các xử lý định vị và kích hoạt
các đối tượng từ xa.

Là tầng thấp nhất gắn kết máy chủ và máy trạm.

Định vị đối tượng, gọi các phương thức được định
nghĩa thông qua giao diện.

Nhận kết quả trả về từ máy chủ.

ORB có cả trên máy chủ và máy trạm.
Mô hình ORB
Kiến trúc kiểu ORB
Object Adapter (OA)

Bộ điều khiển các đối tượng.

Chịu trách nhiệm nạp các thành phần cho máy chủ.

OA gọi các hàm, tạo lập kích hoạt đối tượng thực
thi và hủy bỏ chúng.

OA có 2 dạng là BOA và POA


BOA có ở phiên bản 1, được thay thế POA ở phiên
bản 2.
Stub and Skeleton

Được hiểu như là phụ tá của máy chủ và máy trạm.

Stub và Skeleton sẽ có nhiệm vụ trao đổi dữ liệu
cho nhau.

Khi máy trạm có yêu cầu, Stub có nhiệm vụ sắp đặt
mọi tham số (là object) và truyền lên máy chủ.

Skeleton trên máy chủ sẽ giải mã đối tượng này và
xử lý.

Một quá trình ngược lại với quá trình trên, dữ liệu
được trả về cho máy trạm.

Kiên trúc hiện nay chỉ còn lại Stub
Interface Repository (IR) &
Implementation Repository IR

Được hiểu là kho dữ liệu giao diện và kho triển khai

IR bao gồm: Thông tin kiểu dữ liệu, phương thức và
các tham số được định nghĩa thông qua ngôn ngữ
IDL.

Implementation Repository chỉ ra cách thức để kích
hoạt các thành phần máy chủ.


Implementation Repository chứ đầy đủ các thông tin
về các thành phần, các lớp có trong các thành
phần và các đối tượng.
Object References (OR)

Đối tượng tham chiếu.

Là một đối tượng thành phần của CORBA

OR chứa vị trí, chỉ số (id) của những đối tượng yêu
cầu.

Máy trạm cần phải lấy được danh sách các OR.

Khi cần thực hiện lời gọi hàm, máy trạm sẽ tìm tới
OR của phương thức tương ứng.
Interface Definition Language (IDL)

Ngôn ngữ định nghĩa giao diện

Cho phép định nghĩa giao diện thông qua các từ
khóa.

Giao diện được ghi dưới dạng file .idl

Các file idl sẽ được dịch (mapping) sang các ngôn
ngữ tương ứng như: C++, Java, Delphi

Java sử dụng IDLJ để thực thi biên dịch IDL sang

mã Java.

IDL sẽ được giới thiệu ở phần sau.
Bắt đầu CORBA với HelloCORBA
Bắt đầu CORBA với HelloCORBA

Các bước tiến hành:
1. Tạo file hello.idl, định nghĩa giao diện chung.
2. Biên dịch IDL thành file Java, C++
3. Viết lại các thành phần Server và Client kế
thừa các Interface
4. Biên dịch file Java, C++ thành các chương
trình chạy trên Server và Client
5. Chạy dịch vụ trên Server
6. Chạy ứng dụng trên Client
Mục tiêu cần đạt được
Mục tiêu cần đạt được

Tạo ra một ứng dụng Client – Server

Các phương thức xây dựng trên Server
+ sayHello: In ra 1 dòng Hello
+ shutdown: hủy bỏ đối tượng remote

Client gửi một yêu cầu gọi một hàm trên Server

Kết quả lời gọi hàm hiển thị trên Client
1. Tạo file hello.idl
1. Tạo file hello.idl


Có thể soạn thảo file IDL bằng công cụ soạn thảo
bất kì: notepad, wordpad

Với NetBean:
+ Download: jbi4corba-0.7.1-netbeans-plugin
+ Menu – Tools – Plugin – Addnew
+ Chọn các file được giải nén từ file download
+ Từ cửa sổ Project, chọn một project bấm chuột phải
và chọn new IDL File.
1. Tạo file hello.idl
1. Tạo file hello.idl

Code: hello.idl
module HelloApp
{
interface Hello
{
string sayHello();
oneway void shutdown();
};
};
2. Biên dịch IDL sang Java
2. Biên dịch IDL sang Java

Sử dụng công cụ IDLJ có trong thư mục BIN của
Java

Lệnh:
Idlj [option] hello.idl


Option:
-fall: Biên dịch cho cả Client và Server
-fclient: Biên dịch cho phần Client
-fserver: Biên dịch cho phần Server
2. Biên dịch IDL sang Java
2. Biên dịch IDL sang Java

Sau khi biên dịch, ta được mã java:
package HelloApp;
public interface Hello
{
String sayHello ();
void shutdown ();
}

Tuy nhiên đây chỉ là kết quả ta mong đợi
2. Biên dịch IDL sang Java
2. Biên dịch IDL sang Java

Thực tế khi biên dịch, trình biên dịch IDLC không
chỉ tạo ra một file .java.

Kết quả tạo ra khác nhau khi ta đưa các Option
khác nhau.
-fall: _HelloStub, Hello, HelloHelper, HelloHolder,
HelloOperations, HelloPOA
-fserver: Hello, HelloOperations, HelloPOA
-fclient: _HelloStub, Hello, HelloHelper, HelloHolder,
HelloOperations

×