Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СТП+вопросы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
288.26 Кб
Скачать

1.2. Введение в сом, ActiveX и ole

Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться. Языки (C++, Visual Basic, Java), библиотеки (MFC, ATL, STL), архитектуры (COM, CORBA), кото­рые стали вехами в развитии программирования за последние годы, постепенно уходят в тень лучших или по крайней мере более молодых программных техноло­гий. Вне зависимости от того, нравится это программистам или нет, этот процесс неизбежен. Модель компонентных объектов (Component Object Model, COM) лежит в основе технологии Microsoft ActiveX. Она стала неотъемлемой частью Microsoft Windows, и поэтому изучение ее – обязательная часть дисциплины «Технология программирования». Платформа .NET компании Microsoft — это следующая волна корен­ных изменений, которая идет к нам из Редмонда.

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

Можно сказать, что история программирования - это история попыток написать совершенный код. Разработка как прикладного, так и системного программного обеспечения страдала от бесконечных проволочек, а сами программы отличались чрезвычайной сложностью и непредсказуемым количеством “жучков”. И все же без программ не обойтись, и их надо писать - это ясно. Как написать хорошую программу - вот в чем вопрос. Для этого нужно обладать способностью, чтобы соединять общие принципы программного проекта с желанием (и даже горячим стремлением) вникнуть в миллиарды мелочей. Это требует не только интеллектуальных колоссальных усилий, но и соответствующего инструментария, который, увы, еще далек от совершенства.

Технология программирования ActiveX и OLE на основе СОМ технологии фирмы Microsoft - еще один шаг к более совершенным, т. е. более надежным и эффективным программам. Но не только более совершенные программы должны делать то, что раньше было невозможно, но и решать новые проблемы. В основе ActiveX и OLE лежит очень простая идея, но, как оказалась, она позволяет существенно повысить эффективность программирования.

Основы технологии ActiveX

Терминология меняется столь же стремительно, как и технология, и даже внутри Microsoft нет единства относительно того, как использовать термины ActiveX и OLE. Считайте, что ActiveX — это нечто, возникшее при столкновении «старого» OLE и Интернета. ActiveX включает в себя не только те возможности Windows, основанные на СОМ, которые мы рассмотрим при изучении дисциплины, но и семейство Microsoft Internet Information Server и программный интерфейс WinInet.

Да, OLE по-прежнему жива и теперь вновь расшифровывается Object Linking and Embedding (связывание и внедрение объектов), как и во время OLE 1.0. Сейчас это просто еще одно подмножество технологии ActiveX, содержащее различные операции, например операцию drag-and-drop (перетащить и отпустить). К сожалению (или к счастью, если у вас есть ранее написанный код), исходный MFC-код и Windows API не следуют за последними изменениями терминологии, Поэтому в названиях функций и классов вы увидите множество упоминаний OLE и Оlе, хотя некоторые из этих функций выходят за рамки связывания и внедрения. При использовании кода, сгенерированного MFC Application Wizard, вы можете заметить упоминания о «сервере» (server). Теперь Microsoft резервирует этот термин толь­ко для серверов баз данных и Интернет-серверов. В отношении OLE-серверов применяется новый термин — компонент (component).

Компьютерные секции книжных магазинов забиты книгами по OLE, COM и ActiveX. При изучении дисциплины мы не достигнем той глубины, которой отличаются эти труды, но вы наверняка получите хорошее представление о теории СОМ. Мы уделим боль­шее, внимание связи СОМ с классами библиотеки MFC. Это послужит хорошей подготовкой к практическому использованию СОМ..

COM приносит столько же проблем, сколько решает. Большую часть этой технологии в настоящее время заменяет компонентная модель .NET со своими сборками (assembly) и CLR-средой (common language runtime). Тем не менее СОМ пока в силе, и поэтому первая часть нашего курса будет посвящена изучению СОМ.

Назначение СОМ

СОМ (Component Object Model - модель многокомпонентных объектов) одна из базовых технологий Windows. СОМ — это программная архитектура динамического компоновки ПО. В СОМ предпринята попытка решить проблемы поддержки версий (этим «грешат» DLL) и сложности механизма удаленного вызова процедур (remote procedure call, RPC).Более того, все новые технологии Windows (Shell, Scripting, поддержка HTML и т.п.) реализуют свои программные интерфейсы (Application Program Interface, API) именно в виде COM-интерфейсов. Таким образом, в настоящее время профессиональное программирование требует понимание модели COM и умения с ней работать. СОМ создавалась с прицелом на решение двух проблем, с которыми повсеместно сталкиваются программисты, работающие в операционной среде Windows.

  1. Эта модель предоставляет в распоряжение программиста спецификацию, на основе которой он может создавать объекты, способные функционировать в различной языковой и операционной средах.

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

Краткая история развития СОМ

Технология СОМ начала развиваться как технология OLE - Object Linking and Embedding (связывание и внедрение объектов). В первую очередь, OLE появилась как одно из направлений развития технологии обмена данными (Dynamic Data Exchange - DDE). Эти технологии позволяли клиентскому приложению получать и сохранять данные от приложения- сервера, а также получать информацию о самом приложении-сервере. Это позволяло при необходимости, по запросу пользователя, запустить его приложение - как правило, после двойного щелчка на пиктограмме, представляющей соответствующие данные.

Первое воплощение OLE - OLE (Object Linking and Embeding 1 - Связывание и внедрение объектов) - представляло собой механизм создания и работы с составными документами (compound documents). С точки зрения пользователя, составной документ выглядит единым набором информации, но фактически содержит элементы, созданные двумя или несколькими разными приложениями. С помощью OLE 1 пользователь мог, например, объединить электронную таблицу, созданную Microsoft Excel, с текстовым документом “производства” Microsoft Word. Идея состояла в том, чтобы документо-ориентированная (document - centric) модель работы с компьютером позволила бы пользователю больше думать об информации и меньше - о приложениях, ее обрабатывающих. Как следует из определения “ связывание и внедрение”, составные документы можно создать, либо связав два разных документа, либо полностью внедрив один документ в другой.

OLE 1, как и большинство первых версий программных продуктов, была несовершенна. Архитекторам следующей версии предстояло улучшить первоначальный проект. Вскоре они поняли, что составные документы - лишь частный случай более общей проблемы: как разные программные компоненты должны предоставлять друг другу сервисы? Для решения этой проблемы архитекторы OLE создали группу технологий, область применения которых гораздо шире составных документов. Основу OLE 2 составляет важнейшая из этих технологий - Модель многокомпонентных объектов (Component Object Model - COM). Новая версия OLE не только обеспечивает поддержку составных документов лучше, чем первая, но и, несомненно, идет куда дальше простого объединения документов, созданных в разных приложениях. OLE 2 позволяет по-новому взглянуть на взаимодействие любых типов программ.

Новые возможности многим обязаны СОМ, которая предоставила общую парадигму взаимодействия программ любых типов: библиотек, приложений, системного программного обеспечения и тому подобного. Вот почему подход, предложенный СОМ, можно использовать при реализации практически любой программной технологии, и его применение дает немало существенных преимуществ.

Благодаря этим преимуществам, СОМ скоро стала частью технологий, не имеющих никакого отношения к составным документам. Однако в Microsoft хотели сохранить общее имя для всей группы технологий, в основе которых лежит СОМ. Компания решила сократить название Object Linking and Embeding до OLE - эта комбинация более не рассматривалась как аббревиатура - и опустить номер версии.

По мере совершенствования технологии OLE фирма Microsoft включала в ее состав все новые функциональные возможности, такие как Automation - автоматизация, OLE-элементы управления, за которыми закрепилась аббревиатура OCX.

При новом порядке термин OLE применялся ко всему, созданному на основе парадигмы, представленной СОМ (хотя СОМ использовалась также в продуктах, в названии которых нет слова OLE). OLE более не обозначало только составные документы, но стало маркой любой технологии на основе СОМ. Вообще объединение под одним именем всего программного обеспечения, написанного с применением СОМ, имеет не больше смысла, чем, скажем, объединение всех программ, написанных на С++. СОМ, как и язык программирования типа С++, является универсальным инструментом, который можно использовать для создания программ любых типов. Тем не менее, как по историческим причинам, так и для того, чтобы обозначить явление новой и перспективной технологии, термин OLE использовался в названиях многих (но отнюдь не всех) технологий на основе СОМ. (Название OLE применялось к любой технологии, использующей СОМ).

В начале 1996 года Microsoft ввела в оборот новый термин - ActiveX. Сначала он относился к технологиям, связанным с Интернетом, и приложениям, выросшим из него, вроде WWW (World Wide Web). Поскольку большинство разработок Microsoft в данной области было основано на СОМ, то и ActiveX была непосредственно связана с OLE. Однако очень скоро новый термин стал захватывать территории, традиционно принадлежавшие OLE, и вот теперь все вернулось на круги своя: OLE, как и ранее, обозначает только технологию создания составных документов связыванием и внедрением, а разнообразные технологии на основе СОМ, ранее объединенные под именем OLE, собраны под именем ActiveX. А некоторые технологии, название которых содержало слово “OLE” даже перекрестили: теперь это технологии ActiveX. Новые технологии на основе СОМ, которым раньше полагался ярлык “OLE” - теперь часто получают пометку “ActiveX”.

Таким образом, если придерживаться точности в терминологии, то СОМ - это техническая реализация OLE, хотя четкой границы между этими терминами не существует и большинство пользователей полагает, что это одно и то же. Термин OLE, в принципе, относится к функциональным возможностям высокого уровня, как надстроенным над СОМ, в число которых входят "погружение", "запуск на месте", хранение структур и т.п.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]