Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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