Mô hình web hiện nay cho thấy thế mạnh của mô hình Client – ServerXu hướng tập trung giải quyết vấn đề mà nguồn lực là ServerCác phần mềm viết trên các ngôn ngữ khác nhauCó 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?
Trang 1PHÁ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
Trang 2Chương 4: COP & Corba
Giới thiệu CORBA
Trang 3 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?
Trang 4Đặt vấn đề
Java Passenger Object
?
CORBA
CORBA CORBA
Trang 5 Common Object Request Broker Architecture
Được tạo ra bởi công ty Object Management Group Được tạo ra bởi công ty
(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 hỗ trợ tốt cho các ứng dụng chạy trên mô
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
Trang 6 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
Trang 7 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
Trang 8 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
Trang 9Kiến trúc cơ bản CORBA
Trang 10 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
Trang 11Object 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
Trang 12Mô hình ORB
Trang 13Kiến trúc kiểu ORB
Trang 14Object 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
Trang 15Stub 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
Trang 16Interface 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
Trang 17Object 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
Trang 18Interface 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
Trang 19Bắ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
Trang 20Mụ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
Trang 211 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
Trang 221 Tạo file hello.idl
Trang 232 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
Trang 242 Biên dịch IDL sang Java
Sau khi biên dịch, ta được mã java:
Trang 252 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
Trang 262 Biên dịch IDL sang Java
Idlj –fall hello.idl
Idlj –fclient hello.idl
Idlj –fserver hello.idl
Trang 273 Component Client & Server
Trang 283 Component Client & Server
HelloServant.java
Trang 293 Component Client & Server
HelloServer.java
Trang 303 Component Client & Server
HelloClient.java
Trang 314 Biên dịch các file Java
Thư mục HelloApp được sinh ra thực thi IDLJ
Với Option –fall, HelloApp chứa 6 file java
Copy thư mục HelloApp sang ổ D:
Copy 3 file: HelloServer.java, HelloClient.java,
HelloServant.java sang ổ D:
Start – Run: gõ “cmd” để vào Command
Đặt đường dẫn tới thư mục BIN của Java
path C:\ProgramFiles\Java\jdk1.6.0_17\bin
Thực hiện lệnh biên dịch:
javac d:\HelloApp\*.java d:\*.java
Trang 325 Chạy dịch vụ trên Server
Khởi động Server ORB:
start orbd -ORBInitialPort 1050
Thực thi HelloServer với các tham số:
Trang 335 Chạy dịch vụ trên Server
Trang 345 Chạy ứng dụng trên Client
Thực hiện lệnh trong Command:
java HelloClient -ORBInitialPort 1050 -ORBInitialHost
localhost
IDL Expamle
Trang 36NAMING SERVICE
đối tượng phân bố thông qua tên.
Trang 40MÔ HÌNH LƯU TRỮ ĐỐI TƯỢNG
Market
Stock
Toys
Fruit Shelf
Book Panel
Object A
Object B
Object C
Trang 43Các công cụ hỗ trợ CORBA
CCM
Trang 44Tóm tắt kiến thức
thuần là một ngôn ngữ
+ IDL là một ngôn ngữ trung gian đinh nghĩa interface
+ API cũng cấp giao diện hỗ trợ kiến trúc Client – Server
+ Tool: CCM, OmniIDL, Visibroker
Trang 46HẾT CHƯƠNG 4