В чем разница между COM и OLE, если таковая имеется?
В чем разница между COM и OLE?
Ответы (3)
- OLE = Связывание и внедрение объектов
- DDE = динамический обмен данными
- COM = объектная модель компонентов
OLE: это метод связывания частей одного документа с частями другого. Например, слайд PowerPoint со встроенной в него диаграммой Excel. При обновлении электронной таблицы Excel должна обновиться и диаграмма. Когда вы снова открываете PowerPoint, волшебным образом это происходит! (Этот пример представляет собой связанный объект.) Встроенные объекты такие же, только таблица Excel не существует во внешнем файле, данные для электронной таблицы содержатся в файле PowerPoint.
Вы можете встраивать документы Excel, Word и PowerPoint друг в друга со связанными объектами. Другие приложения были написаны специально для поддержки встраивания в Word, например, Microsoft Equation Editor.
OLE 1 был построен на основе DDE, который использовал оконные сообщения для уведомления приложений об изменении исходных данных и обычно передавал данные с помощью дескрипторов глобальной памяти HGLOBAL.
OLE 2 был построен на COM.
COM - это не зависящая от языка объектно-ориентированная компонентная модель и ABI, основанная на DCE RPC. В качестве системы RPC она поддерживала удаленные вызовы между процессами на одной машине, а позже, с DCOM, на разных машинах. Первоначально COM использовался как часть архитектуры MAPI (в которой используется объектная модель COM, но не службы регистрации COM), а затем был официально запущен как отдельная общая объектная модель с активацией реестра и объектов, а также другими службами. (Прозвища и структурированное хранилище, например.)
OLE Automation не имеет ничего общего с OLE - это всего лишь торговая марка. OLE Automation - это совместимое с Visual Basic подмножество COM, которое поддерживает только основные типы данных (например, без целых чисел или структур без знака), но включает объекты (интерфейсы COM).
Однако элементы управления OLE связаны с OLE. Это визуальные компоненты, в первую очередь ориентированные на пользователей Visual Basic начиная с VB 4, но визуальные элементы предоставляются с использованием средств встраивания OLE 2. Они также могут быть размещены (теоретически, если они правильно написаны) на любом устройстве, способном поддерживать OLE 2. встроенный объект, а также часто использовались в приложениях C ++. Обычно они используют интерфейсы, совместимые с OLE Automation, для программирования во время выполнения.
Элемент управления ActiveX - это маркетинговый термин для COM-объектов с тех пор, как Microsoft пыталась популяризировать технологию расширения веб-приложений.
COM - это развитие OLE. OLE представлял собой набор интерфейсов и механизмов хранения данных для облегчения обмена данными между приложениями. COM был естественным продолжением использования интерфейсов не только для обмена данными, но и функциональных возможностей времени выполнения, когда данные обрабатывались реальными механизмами для облегчения использования. Я всегда представлял это примерно как разницу между C и C ++, где с C вы можете делиться файлами заголовков и структурами, а с C ++ вы делитесь инкапсулированными объектами.
Как нечто вроде мыльницы, я все еще скучаю по структурированному хранилищу OLE, поскольку есть что-то приятное в совместном использовании непрозрачного хранилища данных между сотрудничающими системами. Поскольку перетаскивание / буфер обмена все еще зависит от этого, мне интересно, какой будет замена .Net?
Технология OLE на значительное время предшествует COM как отдельному объекту. До этого OLE использовалось как способ встраивания и связывания объектов. Классическим примером является встраивание электронной таблицы в текстовый документ. Базовая технология COM была включена, чтобы другие языки, такие как VB, также могли взаимодействовать с этими объектами.
Исторически сложилось так, что у нас было много программистов серверного типа, которые с завистью смотрели на такие крутые вещи, как независимость от языка, модели подсчета ссылок и потоков, но на самом деле не слишком заботились о технологии встраивания. Логично было разделить базовую функциональность сервера как COM - это был более естественный низкоуровневый API.
Обе технологии все еще существуют. В наши дни OLE как бы связан или может быть таким же, как ActiveX.