COM,DCOM и OLE - взгляд системного программиста

Тема в разделе "WASM.WIN32", создана пользователем Serzh, 11 июл 2007.

  1. Serzh

    Serzh New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2006
    Сообщения:
    20
    Приветсвую всех. Возможно, что тема топика кого-то рассмешит, но все же:) Большую часть времени я занимаюсь сугобо системным и сетевым програмиированием, а сейчас просто хочу прояснить себе некоторые моменты (знаю, что гугл и msdn рулят, но объем информации очень большой, а мне требуется понять только концепиции). Вопрос: что технически из себя представляет сабж? Насколько я понимаю, СOM(OLE) объект - это именованный кусок кода,состоящий из именованных же функций (методов) и экспортируемых переменных (полей). В каком-то месте (полагаю, что в реестре) хранится некий список из идентификаторов (длинные hex-значения в фигурных скобках вроде - {995c996e-d918-4a8c-a302-45719aa6f4ea7} это они?), названия объекта и размещения собственно объектного файла. Но что представляют из себя эти файлы? Это просто DLL с экспортируемыми символами (функции и переменные)? Или эти объекты хранятся в каком-то особом формате? Очень удобно все выглядит в объектных языках: в WScript присвоили obj = CreateObject("имя") и дальше как с обычным объектом работаем. Мне же интересно что за кулисами происходит, как если бы я писал на Си или ассемблере. И как относятся между собой COM,DCOM и OLE? Кто на чем основан, иерархия интересна, что лежит в основе чего. Исправьте меня, если где насочинял и по возможности дополните:) И если можно дайте ссылку на мат. часть:)) Заранее спасибо всем
     
  2. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Ну судя по тому количеству "факов", которые пишут в сорцах программеры WDM дров, COM - есть великое зло, и индуское проклятье от майкрософт, всем белым кодерам-системщикам. Умом там сложно чего понять, пожалуй куда проще нарисовать обходные пути.
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    https://wasm.ru/publist.php?list=15
     
  4. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Очень рекомендую почитать книгу "Дейл Роджерсон: Основы COM" http://proklondike.com/contentview.php?content=263

    Если вкратце то COM обьект наиболее приближен по виду к классу из С++. Но есть свои нюансы, которые связаны с тем, что программа должна выяснить, есть ли в системе нужный ей COM-обьект. COM- обьекты могут хранится не только внутри DLL, но и внутри exe-файла, или вообще на другом компьютере (Distributed COM, DCOM). OLE - это технология вообще более обширная и включает в себя COM и много других вещей.
     
  5. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Это GUID!!!
    В реестре найдешь по адресу: /root/HKLM/CLSID
     
  6. Serzh

    Serzh New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2006
    Сообщения:
    20
    Спасибо большое всем за помощь!
    ntcdm, очень признателен Вам за ссылку, бегло просмотрел содержание - как раз то, что мне сейчас нужно, обязательно прочту:)