Bài giảng Hệ thống điều khiển phân tán - Chương 8: Công nghệ hướng đối tượng trong điều khiển phân tán

Chương 8: Công nghệ ₫ối tượng trong

₫iều khiển phân tán

8.1 Qui trình công nghệ phần mềm

8.2 Công nghệ đối tượng là gì

8.3 Ngôn ngữ mô hình hóa thống nhất UML

8.4 Khái niệm đối tượng phân tán

8.5 Mô hình COM/DCOM

8.6 Lập trình với COM/DCOM

pdf 51 trang phuongnguyen 6780
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống điều khiển phân tán - Chương 8: Công nghệ hướng đối tượng trong điều khiển phân tán", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hệ thống điều khiển phân tán - Chương 8: Công nghệ hướng đối tượng trong điều khiển phân tán

Bài giảng Hệ thống điều khiển phân tán - Chương 8: Công nghệ hướng đối tượng trong điều khiển phân tán
©2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
C
h
ư
ơ
n
g
1
C
h
ư
ơ
n
g
1
Hệ thống 
₫iều khiển phân tán
13.09.06
Chương 8: Công nghệ hướng ₫ối
tượng trong ₫iều khiển phân tán
2©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Chương 8: Công nghệ ₫ối tượng trong
₫iều khiển phân tán
8.1 Qui trình công nghệ phần mềm
8.2 Công nghệ đối tượng là gì
8.3 Ngôn ngữ mô hình hóa thống nhất UML
8.4 Khái niệm đối tượng phân tán
8.5 Mô hình COM/DCOM
8.6 Lập trình với COM/DCOM
Tài liệu: Tự động hóa ngày nay 5/04-8/04 (CD: \papers\ )
UML Reference Manual (CD:\UML\refman.pdf)
Dr. GUI on COM and ATL (CD: \com-dcom\)
3©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
MÔ HÌNH
PHÂN TÍCH
Phân tích
MÔ HÌNH
THIẾT KẾ
Thiết kế
Mã hóa
Thử nghiệm
THẾ GIỚI 
THIẾT KẾ
THẾ GIỚI 
THỰC
BÀI TOÁN GIẢI PHÁP?
8.1 Qui trình công nghệ phầnmềm
4©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Phân tích yêu cầu (Requirement analysis)
ƒ Bởi vì: Khách hàng thường không biết là họ muốn gì, 
nhưng họ biết chắc chắn là họ không muốn gì
ƒ Cho nên: Cần phải cùng với khách hàng làm rõ
những yêu cầu về phạm chức năng, về giao diện sử
dụng
ƒ Kết quả: Mô hình đặc tả (Specification Model), một 
phần của hợp đồng
ƒ Cần một ngôn ngữ mô hình hóa dễ hiểu để trao đổi 
giữa khách hàng và nhóm phân tích
Ö Trả lời câu hỏi: Khách hàng cần những gì
5©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Phân tích hệ thống (System analysis)
ƒ Phân tích mối liên hệ của hệ thống với môi trường xung 
quanh
ƒ Tìm ra cấu trúc hệ thống và các thành phần quan trọng
ƒ Định nghĩa chức năng cụ thể của các thành phần
ƒ Nhận biết các đặc điểm của từng thành phần
ƒ Phân loại các thành phần, tổng quát hóa, đặc biệt hóa
ƒ Nhận biết mối liên hệ giữa các thành phần
ƒ Kết quả: Mô hình hệ thống (System model)
ƒ Cần một ngôn ngữ mô hình hóa để trao đổi giữa các 
thành viên trong nhóm phân tích và với nhóm thiết kế
Ö Trả lời câu hỏi: Những gì sẽ phải làm
6©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Thiết kế hệ thống (System Design)
ƒ Dựa trên mô hình hệ thống, xây dựng các mô hình chi 
tiết phục vụ sẵn sàng mã hóa/cài đặt
ƒ Bao gồm:
– Thiết kế cấu trúc (structured design): chương trình, kiểu dữ
liệu, đối tượng, quan hệ cấu trúc giữa các đối tượng và kiểu)
– Thiết kế tương tác (interaction design): quan hệ tương tác giữa 
các đối tượng
– Thiết kế hành vi (behaviour design): sự kiện, trạng thái, phép 
toán, phản ứng
– Thiết kế chức năng (funtional design): tiến trình hành động, 
hàm, thủ tục)
ƒ Kết quả: Mô hình thiết kế (các bản vẽ và lời văn mô tả)
Ö Trả lời câu hỏi: Làm như thế nào
7©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Các bước khác
ƒ Mã hóa/cài đặt (Coding/Implementation): Thể hiện mô
hình thiết kế bằng một ngôn ngữ/công cụ lập trình cụ
thể
ƒ Thử nghiệm (Testing, Verification): Chạy thử, phân 
tích và kiểm chứng:
– Thử đơn vị (Unit Test)
– Thử tích hợp (Integration Test)
ƒ Gỡ rối (Debugging): Tìm ra và sửa các lỗi chương 
trình chạy (các lỗi logic)
ƒ Xây dựng tài liệu (Documenting): Xây dựng tài liệu 
phát triển, tài liệu hướng dẫn sử dụng
ƒ Đào tạo, chuyển giao
ƒ Bảo trì, bảo dưỡng
8©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
8.2 Công nghệ (hướng) ₫ối tượng là gì?
ƒ Mô hình hóa hướng đối tượng
ƒ Phân tích, thiết kế hướng đối tượng
ƒ Lập trình hướng đối tượng
ƒ Phần mềm thành phần
ƒ Đối tượng phân tán
ƒ ...
Các nội dung của công nghệ phần mềm, được xây
dựng trên cơ sở phương pháp luận hướng đối tượng
Công nghệ hướng đối tượng có vai trò then chốt
trong công nghiệp phần mềm hiện nay và trong
tương lai
9©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Đối tượng là gì?
ƒ Mô hình/đại diện của một đối tượng vật lý:
– Tank, Heater, Furnace
– Motor, Pump, Valve
– Sensor, Thermometer, Flowmeter
– Control Loop, Control System 
ƒ Hoặc một đối tượng logic ("conceptual object):
– Trend, Report, Button, Window
– Matrix, Vector, Polynomial
ƒ Đóng gói dữ liệu + phép toán áp dụng
10
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Một ₫ối tượng có...
 Các thuộc tính (attributes)
 Trạng thái (state)
• Dữ liệu 
• Quan hệ
 Hành vi (behavior)
• Các phép toán
• Đặc tính phản ứng
 Căn cước (identity)
 Ngữ nghĩa/trách nhiệm 
(semantic/responsibilities)
Hành vi
sủa, cắn, chạy
chạy khi gặp nguy hiểm
Trạng thái
tư thế
sức khỏe
Căn cước
Tên: Rex
ID: 007
Ngữ nghĩa
Chó giữ nhà
Thuộc tính
màu lông: vàng
giống: Berge
11
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Nguyên lý cơ bản của phương pháp 
luận hướng ₫ối tượng
ƒ Trừu tượng hóa (abstraction): giúp đơn giản hóa vấn 
đề, dễ sử dụng lại
ƒ Đóng gói dữ liệu/che dấu thông tin (data encapsulation/ 
information hiding): nâng cao giá trị sử dụng lại và độ
tin cậy của phần mềm
ƒ Dẫn xuất/thừa kế (subtyping/inheritance): giúp dễ sử
dụng lại mã phần mềm và thiết kế
ƒ Đa hình/đa xạ (polymorphism): giúp phản ánh trung 
thực thế giới thực và nâng cao tính linh hoạt của phần 
mềm
12
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Tại sao lại “hướng ₫ối tượng”
ƒ Thế giới thực cấu thành bởi các đối tượng và mỗi liên 
hệ giữa chúng 
ƒ Mô hình nhất quán cho toàn bộ qui trình công nghệ
phần mềm
ƒ Trừu tượng hóa vấn đề tốt hơn
ƒ Bền vững hơn với thay đổi
ƒ Khả năng sử dụng lại cao
ƒ Khả năng phù hợp với nhiều qui mô khác nhau
ƒ Hỗ trợ tốt hơn cho phát triển các hệ tin cậy và an toàn
ƒ Hỗ trợ tốt hơn cho xử lý cạnh tranh
Phương pháp luận hướng đối tượng cho phép tư duy ở
mức trừu tượng cao nhưng gần với thế giới thực
13
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Sự tiến hóa của công nghệ ₫ối tượng
Công nghệ RPC Phương pháp luận hướng đối tượng
(Phương pháp lập trình, mô hình hóa, 
phân tích và thiết kế)
Kiến trúc đối tượng phân tán
(DCOM, CORBA)
PM module
(Khối hàm, Thư
viện động)
Phần mềm thành phần
(JavaBeans, ActiveX, VBX)
Công nghệ đối tượng thành phần phân tán
Đối tượng phân tán thông minh, 
công nghệ Agent
14
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Vai trò của công nghệ ₫ối tượng trong
các hệ thống ₫iều khiển?
ƒ Vai trò của công nghệ phần mềm trong các hệ thống
điều khiển?
ƒ Có một công cụ phần mềm nào trong hệ thống điều
khiển không được lập trình hướng đối tượng?
ƒ Ví dụ về các đối tượng cụ thể:
– Các khối chức năng: PID, AI, AO,...
– Các khối đồ họa Windows Controls, ActiveX-Controls: Đồ thị, 
phím bấm, cửa sổ, bình chứa, van điều khiển, băng tải,...
– OPC server, Web server,...
15
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
8.3 Ngôn ngữmô hình hóa UML
ƒ Một ánh xạ thế giới thực (đang tồn tại hoặc cần xây 
dựng)
ƒ Mô tả thế giới thực từ một góc nhìn
ƒ Các dạng mô hình:
– Mô hình toán học
– Mô hình đồ họa
– Mô hình máy tính
ƒ Một mô hình tốt cần đơn giản nhưng thể hiện được 
các đặc tính quan trọng cần quan tâm của thế giới 
thực
ƒ "Không có mô hình nào chính xác, nhưng có một 
số mô hình có ích!"
Mô hình là gì?
16
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mô hình ₫ể làm gì?
ƒ Trừu tượng hóa (đơn giản hóa) vấn đề
ƒ Phương tiện giao tiếp trong nhóm phát triển
ƒ Phương tiện giao tiếp giữa nhóm phát triển và
khách hàng
ƒ Phương tiện phân tích, thiết kế và kiểm chứng
ƒ Tài liệu phần mềm
ÂCần một ngôn ngữ mô hình hóa tốt và một 
phương pháp mô hình hóa thích hợp !
17
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Thế nào là một ngôn ngữmô hình hóa tốt
ƒ Đơn giản, trực quan, dễ hiểu, dễ xây dựng (đồ họa)
ƒ Khả năng biểu diễn mạnh (toán, văn bản, đồ họa)
ƒ Khả năng thực thi (máy tính, văn bản, đồ họa máy 
tính)
ƒ Linh hoạt, khả mở
ƒ Nhất quán: cho suốt qui trình công nghệ phần mềm
ƒ Chuẩn hóa quốc tế
18
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
UML: Unified Modeling Language
ƒ Ngôn ngữ mô hình hóa rất mạnh, có đầy đủ các đặc 
tính tốt đã nêu
ƒ Hỗ trợ mô hình hóa hướng đối tượng, hướng thành 
phần và các phương pháp luận khác
ƒ Thống nhất Rumbaugh‘s OMT, Booch‘94 và Ivar 
Jacobson‘s Use Case
ƒ Chắt lọc, thừa kế nhiều phương pháp luận khác
ƒ Ngôn ngữ mô hình hóa trung lập
ƒ Kết hợp biểu tượng đồ họa + văn bản 
ƒ Chuẩn công nghiệp (OMG consortium: www.omg.org), 
đặc tả hiện tại V1.5
19
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mô hình hóa cấu trúc
ƒ Static view
Ö Biểu đồ lớp: class, interface, inheritance, association, ... 
ƒ Use case view
Ö Biểu đồ use case: use case, scenario, ...
ƒ Implementation view
Ö Biểu đồ thành phần: component, package, module, ...
ƒ Deployment view
Ö Biểu đồ phân bố: node, processor, component,...
20
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Lớp, ₫ối tượng và giao diện
ƒ Một lớp là thực thi của các 
đối tượng có chung:
– Ngữ nghĩa
– Thuộc tính
– Quan hệ
– Hành vi
ƒ Một giao diện là một kiểu 
dịch vụ của đối tượng, ví
dụ
– Truy nhập thuộc tính
– Thực hiện các phép toán
21
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Ví dụ: Hệ thống ₫iều khiển 
Process
Controller 
A 
B z-1 C 
Sensor Actuator
uy
w
-
22
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Lớp và giao diện trong UML
Sensor
- rangeMin : double
- rangeMax : double
+ getValue()
+ getStatus()
# doGetValue()
Thermometer
+ getValue()
PressureSensor
+ getValue()
LevelIndicator
+ getValue()
DigitalMeter
+ display()
Device
+ getStatus()
>
Signal
Generator
+ initValue()
23
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Quan hệ lớp/₫ối tượng
ƒ Generalization/Specialization: Thừa kế (Inheritance), 
Dẫn xuất (Subtyping)
ƒ Association: Quan hệ chung chung
ƒ Aggregation: Quan hệ sở hữu
ƒ Composition: Quan hệ cấu thành
ƒ Dependency: Quan hệ sử dụng
24
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Quan hệ lớp trong UML
Sensor Actuator
Controller
>+input +output
Thermometer ValveControlSystem
1 +controller
*
+sensors
1..*
+valves
Plant
1 +plant
PT2
>>
25
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Quan hệ lớp - Meta model
Class relationship 
Association Generalization Dependency
Aggregation 
Composition 
26
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Use case
Operator Interface System
Operator 1 Operator 2
Startup&Shutdown H/A 
Engineer
Reconfiguring
27
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mô hình hóa hành vi
ƒ Hành vi đối tượng:
– Biểu đồ trạng thái (Statecharts)
– Biểu đồ hành động (Activity diagramm)
ƒ Tương tác giữa các đối tượng
– Biểu đồ trình tự (Sequence diagram)
– Biểu đồ cộng tác (Collaboration diagram)
28
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Biểu ₫ồ trạng thái (bộ ₫iều khiển)
MANUAL
entry: ^output.setValue(um)
do: i^nput.getValue
do: u=calcOutput
exit: updateState
AUTOMATIC
entry: ^input.getValue
do: u = calcOuput
do: ^output.setValue(u)
exit: updateState
WAITING
IDLE
onTimer[ auto = false ] onTimer[ auto = true ]
setAuto( true )[ u ~ um ]
setAuto( false )
stop
changeParams / setAuto(false)
start
29
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Biểu ₫ồ hành ₫ộng (calcOutput)
Read Setpoint
Scaling
Calculate Error
Calculate Output
Time
event?
y
n
30
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Tương tác ₫ối tượng
A B A B
A B
Event
System manager
A B
File
1: call
2: return 1: send
1: send 1: write
2: send
2: callback 2: read
31
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Biểu ₫ồ trình tự
TempControl Loop
: ControlSystem
TempCtrl : 
Controller
H/A-Indicator : 
LED
Start : 
Button 
Operator SetpointInput : 
Slider
H/A : 
Button
setManual ( ) display (Yellow)
click ( ) 
setValue (0 )
click ( ) start ( )
setpoint ( )
init ( )
setInput ( )
setAutomatic ( )
display (Green)
process ( )
Ta
T 
32
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Biểu ₫ồ cộng tác
TempControlLoop : ControlSystem
TempCtrl : Controller
H/A : Button
SetpointInput : Slider
H/A-Indicator : LED
Start : Button
Operator
1: click ( )2: setManual ( )
4: setValue ( )
6: click ( )
8: init ( )
11: process ( )
7: start ( )
5: setpoint ( )
3: display (Yellow)
10: display (Green)
9: setAutomatic ( )
33
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Tóm tắt
 Use case và kịch bản cho phân tích yêu cầu, phân 
tích hệ thống
 Biểu đồ lớp cho thiết kế cấu trúc
 Biểu đồ tương tác cho thiết kế giao diện và quan 
hệ tương tác giữa các đối tượng
 Biểu đồ trạng thái cho thiết kế hành vi đối tượng 
và thiết kế cụ thể các phép toán
 Biểu đồ hành động cho thiết kế thuật toán, chi tiết 
thực thi phép toán
34
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
8.4 Khái niệm ₫ối tượng phân tán
ƒ Câu hỏi: Làm thế nào để gọi một hàm thành viên của một đối
tượng viết trên C++ từ một chương trình khác?
// File A.h
class A {
int x;
public:
A(int y = 0) : x(y) {}
int getX() const {return x; }
void setX(int y) {x = y;}
...
};
// Prog2.cpp
#include "A.h"
void main() {
int i = obj.getX();
...
}
// Prog1.cpp
#include 
#include "A.h"
A obj(5);
void main() {
obj.setX(6);
while (!kbhit()) {}
}
35
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
// File A.h
class A {
int x;
public:
A(int y = 0) : x(y) {}
int getX() const {return x; }
void setX(int y) {x = y;}
...
};
A obj(5);
// Prog2.cpp
#include "A.h"
void main() {
int i = obj.getX();
...
}
// Prog1.cpp
#include 
#include "A.h"
void main() {
obj.setX(6);
while (!kbhit()) {}
}
36
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Đối tượng phân tán là gì?
ƒ Giống với đối tượng cổ điển
– Có những đặc tính của đối tượng cổ điển (thuộc tính, phép
toán, hành vi, trạng thái, căn cước)
ƒ Khác với đối tượng cổ điển:
– Không gắn với một ngôn ngữ lập trình
– Không gắn với một nền cài đặt, nền mạng
– Có thể tạo, hủy và gọi hàm từ xa
Đối tượng phân tán là các đối tượng phần mềm trong
một hệ thống phân tán, có khả năng giao tiếp ngầm, có
thể sử dụng từ xa (từ một chương trình khác, từ một
nút mạng khác) 
37
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mẫu thiết kế: Proxy
 B A 
client proxy server
1: request ( ) 2: request ( )
serverServer
request( )
Proxy
request( )
...
server->request()
Client
Base
request( )
Sử dụng đối tượng từ xa thông qua một đại diện (Proxy)
38
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mẫu thiết kế: Broker + 
Marshaling/Unmarshaling
B A 
client proxy server
1: op (params )
broker_A broker_B
2: dispatch (datagram) 3: upcall(op_data)
IPC 
4: op (params )
Sử dụng đối tượng trung gian (Broker) để Proxy thực hiện giao tiếp
với Server một cách trong suốt, không phụ thuộc cơ chế truyền thông
cụ thể phía dưới
Marshaling: Đóng gói dữ liệu thành một bức điện, mã hóa căn cước
đối tượng, tên hàm cần gọi và các tham số
Unmarshaling: Ngược lại với Marshaling.
39
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mẫu thiết kế: Broker + 
Marshaling/Unmarshaling
Server
+ op()
Broker
+ dispatch()
ServerBase
+ upcall()
//... extract operation data
if (op_name == "op")
 op(params);
else
 //... other operations
Proxy
+ op()
Client
Base
+ op()
>
40
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mẫu thiết kế: Adapter
Client Server
op( )
Adaptee
old_op( )
Adapter
op( )
old->old_op() old
Sử dụng một đối tượng có sẵn thông qua giao diện thích ứng
(Adapter)
class Adapter : public Server {
Adaptee *old;
public:
void op() { old->old_op(); }
...
};
41
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Kiến trúc tổng thể
B A 
client proxy adapter
1: op ( )
broker_A broker_B
2: dispatch ( ) 3: dispatch ( )
IPC 
server 
4: upcall( )
5: op( )
42
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Mẫu thiết kế: Interface Mapping
// Server.idl
// Interface Definition
// Language
interface Server {
bool op();
};
// ServerImp.cpp
class Server_s { 
virtual bool op()=0;
virtual upcall() {
...
op();
}
};
class MyServer: 
public Server_s {
bool op() { ... }
};
// Proxy.h
class Server_p {
public: 
boolean op() {
// Marshaling Codes
}
...
}
// Client Program
// Client.cpp
#include 
void main() {
Server_p *obj =
NewObject("ServerID");
bool result = obj->op();
...
obj->DeleteObject();
}
IDL-to-C++
Compiler
IDL-to-C++
Compiler
Broker
43
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
8.5 Mô hình COM và DCOM
ƒ COM (Component Object Model)
– Chuẩn của Microsoft, chủ yếu thực hiện trên nền Windows
– Kiến trúc giao tiếp bậc cao giữa các thực thể phẩn mềm (đối 
tượng thành phần) trong hệ thống
– Là nền tảng cho các công nghệ khác: OLE, ActiveX-Control, 
ASP, ADO, ...
– Công nghệ then chốt trong các sản phẩm của Microsoft ngày 
nay
– Hỗ trợ rất mạnh trong các sản phẩm phần mềm khác
ƒ DCOM (Distributed COM)
– Giao thức hỗ trợ giao tiếp với COM qua mạng
– Kiến trúc đối tượng phân tán (so sánh với CORBA)
44
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Đối tượng COM và giao diện COM
pointer
Interface Function Table
Interface Pointer
Pointer to Function1
Function1(...)
{
...
}
Pointer to Function2
Pointer to Function3
...
Function2(...)
{
...
}
Function3(...)
{
...
}
...
Object
Application
Object
Application
45
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Giao tiếp với COM
Quá trình client
client
object
server
Quá trình client
client
proxy
Proxy server
COM 
Engine
object
Quá trình dịch vụ cục bộ
Stub
server
Giao tiếp liên quá trình
Giao tiếp nội trình
46
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Giao tiếp qua mạng với DCOM
Client ComponentProxy 
DCE RPC
Protocol Stack
Stub 
DCOM network-
protocol
Security
Provider
DCE RPC
Protocol Stack
Security
Provider
SCM SCM
COM 
Runtime 
CoCreateInstance() 
(Remote) 
Activation 
CoCreateInstance()
47
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
8.6 Lập trình với COM/DCOM
ƒ Tạo một đối tượng COM
ƒ Sử dụng một đối tượng COM
48
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Tạomột ₫ối tượng COM
ƒ Định nghĩa giao diện và căn cước đối tượng bằng IDL
/* COM-IDL */
[ object,
uuid(793D8ABD-3E1B-11D3-A3E3-00A0C910AB98) ]
interface ISensor : IUnknown
{
// Eigenschaften
[propget] HRESULT status([out, retval] short *pVal);
[propget] HRESULT rangeMin([out, retval] double *pVal);
[propget] HRESULT rangeMax([out, retval] double *pVal);
// Methoden
HRESULT getValue([out, retval] double *pVal);
// ...
};
[ uuid(793D8ABE-3E1B-11D3-A3E3-00A0C910AB98) ]
coclass Sensor
{
[default] interface ISensor;
};
49
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
ƒ Dịch sang C++ với IDL-Compiler
/* C++ */
class ISensor : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE get_status(short *pVal) = 0;
virtual HRESULT STDMETHODCALLTYPE get_rangeMin(double *pVal) = 0;
virtual HRESULT STDMETHODCALLTYPE get_rangeMax(double *pVal) = 0;
virtual HRESULT STDMETHODCALLTYPE getValue(double *pVal) = 0; 
... // Marshaling Codes
};
‰ Dẫn xuất lớp và thực thi đối tượng COM
/* C++ */
class Thermometer : public ISensor
{
public:
virtual HRESULT get_status(short *pVal) {...}
virtual HRESULT get_rangeMin(double *pVal) {...}
virtual HRESULT get_rangeMax(double *pVal) {...}
virtual HRESULT getValue(double *pVal) {...}
};
50
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
ƒ Biên dịch mã thực thi đối tượng
ƒ Đăng ký với hệ điều hành Windows trên các trạm cài
đặt và trạm sử dụng
Các bước trên có thể thực hiện đơn giản với sự
hỗ trợ của Visual C++ và ATL/COM Wizard
51
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 8: Công nghệ hướng đối tượng trong ĐKPT © 2005 - HMS
Sử dụngmột ₫ối tượng COM
/* C++ */
ISensor *pSensor;
HRESULT hr = CoCreateInstance(CLSID_Sensor, 0, CLSCTX_ALL,
IID_ISensor,(void**)&pSensor);
if (SUCCEEDED(hr)) {
double value = 0;
pSensor->getValue(&value);
//...
}
//...
pSensor->Release();

File đính kèm:

  • pdfbai_giang_he_thong_dieu_khien_phan_tan_chuong_8_cong_nghe_hu.pdf