Инна Аринович Антон Григорьев дата публикации 21-01-2005 05:16 урок из цикла:
Урок 1. Введение в COM/DCOMЭта статья открывает новый цикл семинаров в разделе "Лицей" сайта "Королевство Delphi". Цель этих семинаров - обучение использованию COM/DCOM в Delphi. Научить свои приложения использовать COM/DCOM в Delphi не очень сложно - хорошо спроектированная библиотека VCL позволяет программисту получать работоспособные приложения, не вникая в тонкости реализации. Но если бы нашей целью было научить, куда ткнуть мышкой, чтобы сделать COM-клиент или COM-сервер, такой объёмный цикл семинаров не был бы нужен - хватило бы небольшой заметки. Мы здесь будем рассказывать о внутренних механизмах работы COM/DCOM, чтобы человек, использующий эту технологию, понимал, что происходит в результате нажатия мыши. Будет уделено немало внимания вопросу о том, в каких случаях возможностей VCL недостаточно, и нужно пользоваться стандартными системными средствами напрямую.
Из-за большого количества таких подробностей курс получается достаточно сложным. Тем не менее, он рассчитан на человека, начинающего изучение COM/DCOM с нуля, и не требует никаких предварительных знаний в этой области.
Охватить все аспекты технологии COM/DCOM очень сложно, и мы не ставили перед собой такой цели. Данный курс содержит только сведения о базовых возможностях COM/DCOM. Но начинать изучение новой области всегда сложнее, чем продолжать, поэтому мы надеемся, что наш курс будет полезен не только тем, кто хочет ограничиться изучением основ COM/DCOM, но и тем, кто пойдёт дальше.
После этого небольшого вступления переходим непосредственно к знакомству с COM/DCOM.
В Windows 3.1 и более ранних версиях основным средством обмена данных между программами была технология DDE - Dynamic Data Exchange (динамический обмен данными). На этой технологии основывалась технология OLE - Object Linking and Embedding (связывание и внедрение объектов). OLE позволяет делать документы одного приложения частью документов другого приложения. Таким образом, пользователь получил возможность использовать функции многих различных программ для редактирования одного документа.
В основе DDE лежит обмен сообщениями между окнами Windows. Подобный механизм затрудняет распараллеливание процессов и обмен данными через сеть между приложениями, работающими на разных компьютерах (существует сетевое расширение DDE - NetDDE, но оно работает медленно и не всегда устойчиво).
Начиная с 1993-его года в Windows NT 3.51 появилась технология OLE 2 - дальнейшее развитие OLE. OLE 2 дополнительно содержит в себе технологии ActiveX, Automation (первоначально называвшаяся OLE Automation) и другие расширения, далеко выходящие за рамки связывания и внедрения объектов, поэтому фирма Microsoft с выходом OLE 2 объявила, что слово "OLE" больше не является аббревиатурой, это просто термин, не имеющий расшифровки.
Технология DDE была недостаточной для поддержки OLE 2, поэтому специально под неё была создана новая технология взаимодействия между программами - COM (Component Object Model, модель компонентных объектов). COM оказалась очень удачной технологией, поэтому, начиная с Windows 95, DDE была объявлена устаревшей, а основной технологией обмена данными в системе стала технология COM.
С появлением в 1996 г. Windows NT 4.0 технология COM была существенно расширена. Добавилась поддержка различных нитевых моделей и возможность организации взаимодействия программ через локальную сеть. Последнее расширение получило название DCOM - Distributed COM (распределённая модель компонентных объектов). Можно установить данное расширение в Windows 95, скачав необходимую бесплатную утилиту с сайта Microsoft. В Windows 98 эти расширения включены по умолчанию.
Модель COM/DCOM построена по принципу клиент-сервер. Сильно упрощая, можно сказать, что сервер экспортирует функции, которые клиент может вызывать, вынуждая сервер выполнить то или иное действие. Если взаимодействие между клиентом и сервером подразумевает обмен данными, эти данные передаются в качестве параметров функций. При необходимости клиент также может экспортировать функции, которые могут быть вызваны сервером.
На данный момент DCOM является межплатформенной технологией. Существуют средства для поддержки DCOM в различных UNIX-системах (в том числе Linux), Solaris, MacOS, VxWorks. Сетевой протокол DCOM опубликован в открытых источниках, поэтому реализовать его, в принципе, возможно на любой системе.
[Технологии ActiveX, COM, DCOM]
Обсуждение материала [ 23-01-2005 13:08 ] 1 сообщение |