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
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
©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:
- bai_giang_he_thong_dieu_khien_phan_tan_chuong_8_cong_nghe_hu.pdf