Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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

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

Да, OLE по-прежнему существует, но теперь вновь означает Object Linking and Embedding (связывание и внедрение объектов), как и в дни OLE 1. Сейчас это просто еще одно подмножество технологии ActiveX, включающее всякую всячину, например, операцию drag-and-drop (перетащить и отпустить). К сожалению (или к счастью, если у Вас есть ранее написанный код) исходный MFC-код и Windows API не следуют за последними изменениями терминологии. Поэтому в названиях функций и классов можно увидеть множество упоминаний «OLE» и «Ole», хотя некоторые из этих функций выходят за рамки связывания и внедрения. Для серверов OLE введен новый термин – «компонент».

Модель многокомпонентных объектов

COM – это «индустриальный стандарт» программной архитектуры, поддерживаемый Microsoft, Digital Equipment Corporation и многими другими компаниями. Это без сомнений только стандарт. Есть другие стандарты, такие как Corba от Open Software Foundation (OSF), но, по нашему мнению, COM является ведущим стандартом.

Проблема, которую решает COM

Проблема заключается в том, что в Windows нет стандартного способа взаимодействия между программными модулями. «Но, - скажите Вы, - а как же DLL с их экспортируемыми функциями, DDE, буфер обмена и сами API Windows, не говоря уже об устаревших стандартах вроде VBX и OLE 1? Разве этого мало?» Увы, да. Вы не построите объектно-ориентированную операционную систему будущего из этих разрозненных и предназначенных каждый для своей цели стандартов. А на базе модели COM это возможно.

Сущность COM

У старых стандартов много недостатков. У Windows API слишком велика «площадь поверхности» - свыше 350 функций; VBX – расширения не работают в мире 32-разрядных программ; в DDE чрезмерно запутанная система приложений (application), тем (topics) и элементов (items); обращение к DLL всецело зависит от конкретного приложения. Модель COM предоставляет унифицированный, открытый, объектно-ориентированный протокол связи между программами, который уже сейчас поддерживает:

  • стандартный, не зависящий от языка программирования способ загрузки и вызова Win32-модулей DLL клиентскими Win32-программами;
  • универсальный способ управления одной EXE-программы другой, выполняемой на том же компьютере (замена DDE)
  • замену элементов управления VBX элементами управления ActiveX;
  • новый мощный способ взаимодействия прикладных программ с операционной системой;
  • расширения для поддержки новых протоколов вроде интерфейса баз данных OLE DB;
  • распределенную COM (DCOM), которая позволяет одной программе взаимодействовать с другой программой, выполняющейся на другом компьютере, даже если процессоры этих компьютеров принадлежит к разным семействам.

Итак, что же такое COM? Задать вопрос намного проще, чем ответить на него. Главная линия, проводимая в DevelopMentor (система обучения разработчиков), - это «COM есть любовь». Иными словами, COM – это мощная интеграционная технология, которая позволяет собрать разрозненные части программного обеспечения вместе в период выполнения. COM позволяет разработчику писать интегрируемое программное обеспечение, не вдаваясь в тонкости многопоточности и не привязываясь к конкретному языку программирования.

COM – это протокол, который соединяет один программный модуль с другими, а затем покидает сцену. После того как связь установлена, модули могут взаимодействовать через механизм, называемый интерфейсом (interface). Интерфейсы не требуют статического или динамического связывания точек входа или «зашитых» в программу адресов, за исключением нескольких универсальных COM – функций, активизирующих процесс установления связи. Интерфейс (точнее, COM – интерфейс) – это термин, с которым Вы встретитесь еще не раз.

COM – интерфейс

Одна из основных целей COM как раз и состоит в том, чтобы отделить интерфейс класса от его реализации.

Код будет размещен в отдельном EXE или DLL файле (компоненте), который является COM – модулем. Программа-клиент не сможет вызывать метод или конструктор напрямую, т.к. доступ к объекту можно получить только через стандартную глобальную функцию, предоставляемую COM, а затем клиент и объект общаются посредством интерфейсов. В реальной COM клиенты вначале получают объект класса, а затем запрашивают у него создание реального объекта – во многом тем же способом, каким MFC осуществляет динамическое создание. У GetClassObject есть три следующих параметра:

BOOL GetClassObject(int nClsid, int nIid, void** ppvObj);

Первый параметр – nClsid – это 32-разрядное целое число, которое однозначно идентифицирует класс. Второй параметр, - nIid – уникальный идентификатор нужного нам интерфейса. Третий параметр – указатель на интерфейс объекта. Вспомните, что мы собираемся теперь иметь дело с интерфейсами, а это не то же самое, что классы. Как выясняется, класс может иметь несколько интерфейсов, а поэтому два последних параметра и обеспечивают выбор интерфейса. При благополучном завершении функция возвращает TRUE.


<== предыдущая | следующая ==>
Объектно-ориентированный подход | Интерфейс IUnknown и функция QueryInterface

Date: 2016-05-25; view: 291; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию