Object Linking and Embedding

Object Linking & Embedding (OLE) tạm dịch: liên kết và nhúng đối tượng,  là một công nghệ độc quyền được phát triển bởi Microsoft cho phép nhúng và siêu liên kết với các tài liệu và các đối tượng khác. Đối với các nhà phát triển, nó mang lại OLE Control Extension (OCX), một cách để phát triển và sử dụng các phần tử giao diện người dùng tùy chỉnh. Ở cấp độ kỹ thuật, đối tượng OLE là bất kỳ đối tượng nào thực hiện giao diện IOleObject, có thể cùng với một loạt các giao diện khác, tùy thuộc vào nhu cầu của đối tượng.

Tổng quan

OLE cho phép ứng dụng chỉnh sửa để xuất một phần tài liệu sang một ứng dụng chỉnh sửa khác và sau đó nhập nó với nội dung bổ sung. Ví dụ: một hệ thống xuất bản trên máy tính để bàn có thể gửi một số văn bản tới trình xử lý văn bản hoặc hình ảnh tới trình chỉnh sửa bitmap bằng OLE. Lợi ích chính của OLE là thêm các loại dữ liệu khác nhau vào một tài liệu từ các ứng dụng khác nhau, như trình soạn thảo văn bản và trình chỉnh sửa hình ảnh. Điều này tạo ra một tài liệu định dạng tập tin nhị phân hợp chất và một tập tin chủ mà tài liệu làm cho tài liệu tham khảo. Thay đổi dữ liệu trong tệp chính ngay lập tức ảnh hưởng đến tài liệu tham chiếu đến nó. Điều này được gọi là "liên kết" (thay vì "nhúng").
Việc sử dụng chính của nó là quản lý các định dạng tập tin nhị phân hợp chất, nhưng nó cũng được sử dụng để truyền dữ liệu giữa các phần mềm ứng dụng khác nhau bằng cách sử dụng thao tác kéo và thả và clipboard.

OLE 1.0

OLE 1.0, phát hành năm 1990, là một sự phát triển của khái niệm Dynamic Data Exchange (DDE) ban đầu mà Microsoft đã phát triển cho các phiên bản trước của Windows. Mặc dù DDE bị giới hạn trong việc truyền lượng dữ liệu giới hạn giữa hai ứng dụng đang chạy, OLE có khả năng duy trì liên kết hoạt động giữa hai tài liệu hoặc thậm chí nhúng một loại tài liệu trong một tài liệu khác.
Các máy chủ và máy khách OLE giao tiếp với các thư viện hệ thống bằng cách sử dụng các bảng chức năng ảo hoặc VTBL. VTBL bao gồm một cấu trúc của các con trỏ hàm mà thư viện hệ thống có thể sử dụng để giao tiếp với máy chủ hoặc máy khách. Các thư viện máy chủ và máy khách, OLESVR.DLL và OLECLI.DLL,ban đầu được thiết kế để giao tiếp giữa chúng bằng cách sử dụng thông báo WM_DDE_EXECUTE.
OLE 1.0 sau đó đã phát triển để trở thành một kiến trúc cho các thành phần phần mềm được gọi là Mô hình đối tượng thành phần (Component Object Model-COM), và sau đó là DCOM.
Khi một đối tượng OLE được đặt vào clipboard hoặc được nhúng trong một tài liệu, cả hai biểu diễn trực quan trong các định dạng Windows nguyên bản (chẳng hạn như bitmap hoặc metafile) được lưu trữ, cũng như dữ liệu bên dưới theo định dạng riêng của nó. Điều này cho phép ứng dụng hiển thị đối tượng mà không tải ứng dụng được sử dụng để tạo đối tượng, đồng thời cho phép đối tượng được chỉnh sửa, nếu ứng dụng thích hợp được cài đặt.
Object Packager, một thành phần của OLE, có trong Windows 3.1 đến Windows XP cho phép một đối tượng không phải OLE được "đóng gói" để nó có thể được nhúng vào một chương trình khách OLE.

OLE 2.0

OLE 2.0 là sự phát triển tiếp theo của OLE, chia sẻ nhiều mục tiêu giống như phiên bản 1.0, nhưng đã được triển khai lại trên mô hình đối tượng thành phần (COM) thay vì sử dụng trực tiếp VTBL. Các tính năng mới là tự động hóa OLE, kéo và thả, kích hoạt tại chỗ và lưu trữ có cấu trúc. Các biệt danh phát triển từ các tên đối tượng OLE 1, và cung cấp một đối tượng phân cấp và hệ thống đặt tên tài nguyên tương tự như các  URL hoặc URI, vốn được phát minh độc lập. Windows hiện đã hợp nhất hai công nghệ hỗ trợ loại URL Moniker và lược đồ URL Moniker.

Điều khiển tùy chỉnh OLE

Các điều khiển tùy chỉnh OLE được giới thiệu vào năm 1994 như là một sự thay thế cho các điều khiển mở rộng Visual Basic Extension không được chấp nhận. Thay vì nâng cấp chúng, kiến trúc mới được dựa trên OLE. Đặc biệt, bất kỳ vùng chứa nào hỗ trợ OLE 2.0 đều có thể nhúng các điều khiển tùy chỉnh OLE, mặc dù các điều khiển này không thể phản ứng với các sự kiện trừ khi vùng chứa hỗ trợ điều này. Các điều khiển tùy chỉnh OLE thường được vận chuyển dưới dạng  dynamic link library phần mở rộng.ocx. Năm 1996 tất cả các giao diện điều khiển (ngoại trừ IUnknown) đã được thực hiện tùy chọn để giữ cho kích thước tập tin của điều khiển giảm bớt, để cho chúng sẽ tải xuống nhanh hơn; chúng được gọi là các ActiveX Control.

Chi tiết kỹ thuật

Các đối tượng OLE và các thùng chứa được thực hiện trên Component Object Model; chúng là các đối tượng có thể thực hiện các giao diện để xuất khẩu các chức năng của chúng. Chỉ giao diện IOleObject là bắt buộc, nhưng các giao diện khác cũng có thể cần phải được thực hiện nếu chức năng mà được xuất bởi các giao diện đó là bắt buộc.
Để dễ hiểu những gì nói sau đây, một số thuật ngữ cần phải được giải thích rõ. Trạng thái xem của đối tượng là liệu đối tượng có trong suốt, mờ đục hoặc mờ đục với nền đồng nhất hay không và liệu đối tượng có hỗ trợ vẽ với một khía cạnh được chỉ định hay không. Trang của một đối tượng là một đối tượng biểu diễn vị trí của đối tượng trong vùng chứa của nó. Một vùng chứa làm nhiệm vụ hỗ trợ nơi lưu trữ đối tượng cho mọi đối tượng được chứa.
Sau đây là danh sách các giao diện, được nhóm theo đối tượng thường cần thực hiện chúng. Các giao diện thường được thực hiện bởi đối tượng OLE thường được gọi bởi thùng chứa OLE và ngược lại. Lưu ý rằng trong danh sách sau thụt đầu dòng chỉ ra việc thừa kế giao diện. Tất cả các giao diện không thụt vào được lấy từ  IUnknown.