(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

COM, OLE và Automation

COM, OLE và Automation được giới thiệu bởi Microsoft trong đó OLE và Automation là các kỹ thuât dựa trên COM.

Tôi hay sử dụng kỹ thuật COM trong các sản phẩm phần mềm của mình. Sử dụng lại(reusing) là một nguyên lý của COM. Tiếp theo, OLE kết nối và lồng ghép đối tượng, và Automation phơi bày các thuộc tính và phương thức của đối tượng được chuẩn hóa để các công cụ lập trình có thể host các đối tượng phổ biến chẳng hạn các đối tượng bộ phận của Microsoft Office.

Qt- bộ công cụ lập trình hỗ trợ hệ thống nguồn mở, và các nền tảng khác, còn có thể được dùng để tạo, truy cập và tùy biến các đối tượng Automation.

Hoạt động bên trong của các đối tượng COM không đơn giản. Trong góc độ sử dụng và phục vụ đối với COM, Qt cũng giống như Visual basic chỉ đóng vai trò của phần mềm khách. Về kỹ thuật, Qt(và Visual basic) chỉ như một ngôn ngữ kịch bản.

Bài này giới thiệu các khái niệm về COM, OLE và Automation. Trong bài sau tôi sẽ trình bày các mã C++ host trực tiếp COM để các bạn có thể thấy được các kỹ thuật bên trong mà một ngôn ngữ kịch bản ít nhiều gặp phải hạn chế, hoặc những phần ngôn ngữ kịch bản thực hiện được, song ẩn dấu đi để đơn giản cho người sử dụng và hướng người sử dụng theo lối tiếp cận nhẹ nhàng hơn.

COM- Component Object Model(Mô hình đối tượng thành phần)

COM là đối tượng chuẩn hóa nhị phân sao cho nó có thể được tạo ra từ các ngôn ngữ lập trình khác nhau, sau khi biên dịch sang mã máy, đều trở về chuẩn này.

Mỗi lớp đối tượng COM có một số nhận dạng kiểu GUI(Global Unique Identification). Đó là một giá trị 128 bits, có thể chuyển đổi tương đương thành một xâu kí tự là một chuỗi có 32 chữ số hexa chia thành 5 nhóm các dãy chữ số cách nhau bởi các dấu gạch nối, toàn bộ nằm trong một cặp dấu ngoặc nhọn, ví dụ: {b50a71db-c4a7-4551-8d14-49983566afee}. Số hexa là số theo hệ đếm thập lục phân được cấu tạo từ 16 phần tử 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f. Các phần tử a,b,c,d,e,f được hiểu là các chữ số chứ không phải chữ cái. Theo lý thuyết, 128 bits dùng cho mã hóa, là trường hợp chỉnh hợp lặp chập 128 của 2 phần tử, có thể phân biệt 2¹²⁸ giá trị. Đây là một con số rất rất lớn, đủ dùng cho số lượng lớn các GUI phân biêt.

Đối tượng COM có các thành phần giao diện(interface). Mỗi giao diện cũng có một GUI nhận dạng và có các hàm(function) hay phương thức(method). Giao diện tương đương với lớp cơ sở ảo trong C++, có định nghĩa hàm thành phần nhưng không có thi hành. (Trong C++ khai báo là định nghĩa, còn định nghĩa được hiểu là thi hành. Đó chỉ là khái niệm). Thi hành chỉ được áp dụng khi có một lớp đối tượng cụ thể sử dụng giao diện. Đạt được con trỏ giao diện là cách duy nhất truy cập một đối tượng COM.

Tôi không biết ý nghĩa của cụm từ “thành phần” trong câu “Mô hình đối tượng thành phần”. Không có tài liệu nào giải thích rõ ràng. Tôi nghĩ một đối tượng C++ chỉ có một con trỏ trỏ vào toàn bộ đối tượng, còn đối tượng COM có nhiều giao diện và tương ứng có nhiều con trỏ trỏ vào các giao diện thành phần bên trong đối tượng. Hình thức này liên tưởng trong đời sống có hai loại bộ giàn âm thanh: giàn một cục và giàn nhiều cục rời. Giàn nhiều cục rời là một bộ bao gồm các bộ phận cấu thành. Có thể hiểu đối tượng COM ứng với bộ giàn nhiều cục, là kiểu đối tượng bộ phận cấu thành.

OLE- Object Linking and embedding(Kết nối và lồng ghép đối tượng)

OLE là kỹ thuật kết nối và lồng ghép đối tượng để tạo ra phần mềm tài liệu ghép, ở dạng phần mềm container(khung, thùng đựng) hoặc phần mềm server. Phần mềm container chứa đựng sự kết nối hoặc lồng ghép với đối tượng server. Đối tượng có thể được kích hoạt tại chỗ trong phần mềm container do người lập trình tạo ra.

Automation

Automation còn gọi là OLE Automation, nhưng Automation không phải là OLE, có thể chạy độc lập đối với OLE trong khi lại có thể sử dụng các chức năng của OLE. Automation là kỹ thuật phơi bày đối tượng theo chuẩn để các công cụ lập trình và phần mềm ứng dụng có thể truy cập và thao tác điều khiển đối tượng, mang tính tự động hóa. Chuẩn hóa cụ thể là chuẩn hóa về đối tượng, các thuộc tính và phương thức bắt buộc của đối tượng, chuẩn tên và cách đặt tên cho các thuộc tính và phương thức của đối tượng. Các đối tượng Automation phải thi hành giao diện IDispatch để các công cụ lập trình và phần mềm khách có thể truy cập các thuộc tính và phương thức của đối tượng theo tên của chúng mà không phải truy cập trực tiếp giao diện chứa các thuộc tính và phương thức này. Điều này là thuận tiện và có tính tự động hóa vì không đỏi hỏi các công cụ lập trình và phần mềm khách phải có thư viện kiểu mô tả bảng hàm ảo trong cách truy cập trực tiếp giao diện của đối tượng(VTBL- Virtual Function Table: bảng hàm ảo này bao gồm tất cả các hàm thành phần của tất cả các giao diện trong đối tượng, như nêu trên, giao diện tương đương lớp cơ sở ảo nên hàm thành phần của nó cũng được coi là hàm ảo). ActiveX control là một kiểu Automation.

Nếu bạn muốn sử dụng Qt để làm việc với các đối tượng COM thì nội dung sơ lược nêu trên mang tính chất khái niệm hy vọng là có thể hữu ích giúp bạn dùng Qt để host các đối tượng COM một cách linh hoạt.

Advertisements

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

%d bloggers like this: