В чем разница между COM и OLE?

В чем разница между COM и OLE, если таковая имеется?


person Community    schedule 05.02.2009    source источник


Ответы (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 пыталась популяризировать технологию расширения веб-приложений.

person Ben    schedule 19.01.2012

COM - это развитие OLE. OLE представлял собой набор интерфейсов и механизмов хранения данных для облегчения обмена данными между приложениями. COM был естественным продолжением использования интерфейсов не только для обмена данными, но и функциональных возможностей времени выполнения, когда данные обрабатывались реальными механизмами для облегчения использования. Я всегда представлял это примерно как разницу между C и C ++, где с C вы можете делиться файлами заголовков и структурами, а с C ++ вы делитесь инкапсулированными объектами.

Как нечто вроде мыльницы, я все еще скучаю по структурированному хранилищу OLE, поскольку есть что-то приятное в совместном использовании непрозрачного хранилища данных между сотрудничающими системами. Поскольку перетаскивание / буфер обмена все еще зависит от этого, мне интересно, какой будет замена .Net?

person codekaizen    schedule 05.02.2009
comment
OLE не является развитием COM. Оле 1 предшествует COM. Однако OLE2 построен на COM. Структурированное хранилище OLE по-прежнему существует и будет существовать всегда, и вы можете использовать его из .Net, если хотите. Обратите внимание, что большая часть мотивации разработки структурированного хранилища OLE по сравнению с чем-то вроде ZIP заключалась в том, чтобы разрешить изменение структур данных на диске на месте. Это в значительной степени исчезло с концом гибких дисков и медленных HD-дисков. - person Ben; 19.01.2012
comment
Оле 1 предшествует COM. Однако OLE2 построен на COM. Да ... вроде как развилось. Идея использования интерфейсов между взаимодействующими данными, а затем данные + поведение пришла из OLE и стала зародышем COM. - person codekaizen; 19.01.2012
comment
@Ben - Вы поменяли порядок COM и OLE в своей цитате по сравнению с тем, что на самом деле говорится в ответе. - person Martin Smith; 19.01.2014
comment
@MartinSmith, да, опечатка. - person Ben; 20.01.2014
comment
@Ben Я повторил опечатку, поскольку, похоже, вы не понимали, о чем я говорю в ответе. Если бы вы этого не сделали, то как вы можете не видеть, что COM-интерфейсы возникли из императива для перехода OLE2 к следующему этапу компонентного программного обеспечения? - person codekaizen; 20.01.2014
comment
@codekaizen, к сожалению, ваш ответ неверен! Что я могу еще сказать? Я бы хотел, чтобы этого не было! - person Ben; 20.01.2014
comment
@Ben - Быстрый поиск в Google приводит меня к Википедии, в которой есть то же утверждение: OLE 1.0 позже превратился в архитектуру для компонентов программного обеспечения, известную как Component Object Model (COM), а затем и DCOM. - person codekaizen; 20.01.2014
comment
@codekaizen, Википедия цитировала это утверждение? Нет. Тем не менее, я думаю, вы могли бы отредактировать его, чтобы дать здесь свой ответ в качестве цитаты, а затем использовать Википедию, чтобы поддержать свой ответ здесь ... Разве это не так, как работает Википедия? :-) - person Ben; 20.01.2014
comment
@Ben - есть, но, к счастью, история статьи сохраняет изменения. Самая старая версия страницы 2002 года поддерживает идею о ее развитии: en.wikipedia.org/w/. Я думаю, что, возможно, вам не хватает значительного использования OLE, помимо структурированного хранилища, еще в первые дни Office, что сделало COM очевидным следующим шагом. - person codekaizen; 20.01.2014
comment
Очевидный следующий шаг! = Эволюционировал. COM - это строительный материал, OLE - построенная из него структура. DDE = Деревянные доски. OLE 1 = Деревянный сарай. COM = кирпичи. OLE 2 = кирпичный дом. Но сараи из кирпича не развивались. OLE2 - это эволюция OLE1, но кирпичи - это не дерево. - person Ben; 20.01.2014
comment
Хотя это и не обязательно, зародыш COM возник благодаря пониманию потребностей OLE. Термин «объект» здесь только начинал широко понимать разработчиками MS как означающий поведение состояния и, и хотя в OLE 1.0 часть состояния была отключена, необходимость встраивать функциональность в главную программу прояснила, что структурированные интерфейсы тоже были необходимы. Для меня это эволюция мысли. Это моя точка зрения. - person codekaizen; 20.01.2014

Технология OLE на значительное время предшествует COM как отдельному объекту. До этого OLE использовалось как способ встраивания и связывания объектов. Классическим примером является встраивание электронной таблицы в текстовый документ. Базовая технология COM была включена, чтобы другие языки, такие как VB, также могли взаимодействовать с этими объектами.

Исторически сложилось так, что у нас было много программистов серверного типа, которые с завистью смотрели на такие крутые вещи, как независимость от языка, модели подсчета ссылок и потоков, но на самом деле не слишком заботились о технологии встраивания. Логично было разделить базовую функциональность сервера как COM - это был более естественный низкоуровневый API.

Обе технологии все еще существуют. В наши дни OLE как бы связан или может быть таким же, как ActiveX.

person 1800 INFORMATION    schedule 05.02.2009