Объект СОМ - Dmitry.ch

Download Report

Transcript Объект СОМ - Dmitry.ch

Вводная лекция Введение в современные технологии программирования

План лекции • • • • • •

Понятие технологии программирования.

Требования к современным технологиям программирования.

Введение в СОМ, ActiveX и OLE.

Цели и задачи технологии СОМ. Функционирование СОМ.

Базовые понятия COM

.

Под программирования технологией понимается совокупность систематизированных знаний, или наука, об оптимальных способах (приемах и обобщенных и процедурах) проведения процесса программирования, обеспечивающего продукции с в заданных условиях получение программной заданными свойствами.

Технологии программирования – это некоторое общее базовое понятие, компоненты которого могут использоваться по разному, в разных сочетаниях, в зависимости от условий их применения.

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

• Технология программирования и средства ее поддержки (автоматизации) должны обеспечивать целенаправленную работу прежде всего коллектива программистов, а не отдельных личностей.

• Технология программирования должна быть безбумажной.

• Средства автоматизации технологии должны охватывать все этапы работы коллектива программистов.

• Технология программирования не должна быть связана с языком программирования, так как по современным представлениям он не является определяющим звеном в технологии программирования .

• •

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

Технология программирования должна иметь средства автоматической фиксации всех действий, выполняемых в процессе коллективного изготовления программного изделия – должны вестись и храниться в системе журналы (протоколы, дневники разработки).

Введение в СОМ, 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

позволяет лежит очень простая идея, но, как оказалась, существенно повысить программирования .

эффективность

Терминология меняется столь же стремительно, как и технология, и даже внутри Microsoft нет единства относительно того, как использовать термины ActiveX и OLE. Считайте, что ActiveX — это нечто, возникшее при столкновении «старого» OLE и Интернета.

ActiveX включает в себя не только те возможности Windows, основанные на СОМ, которые мы рассмотрим при изучении дисциплины, но и семейство Microsoft Internet Information Server и программный интерфейс WinInet

При использовании кода, сгенерированного MFC Application Wizard, вы можете заметить упоминания о «сервере» (server). Теперь Microsoft резервирует этот термин только для серверов баз данных и Интернет-серверов. В отношении OLE-серверов применяется новый термин — компонент (component).

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

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

это сокращение от

Component Object Model

(модель составных объектов).

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

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

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

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

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

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

Цели и задачи технологии СОМ

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

Проблемы при использовании DLL: • Программисту, использующему эту библиотеку, потребуется документация — список методов со списком их формальных параметров.

• Сложности использование памяти различными модулями. Например, если в одном из модулей зарезервирована память для хранения данных, то в другом модуле без специальных мер нельзя ни освободить ее, ни изменить ее размер.

• Еще одна проблема возникает при обращении к объекту, созданному другим приложением.

• Очередная проблема возникает при передаче двоичных данных от одного приложения к другому. Многие языки программирования имеют разное внутреннее представление переменных (например строки, логические значения), и при получении данных от заранее неизвестного приложения их интерпретация подчас невозможна.

Другие проблемы традиционного программировании: • поиск установленной копии приложения, реализующего требуемые сервисы, и корректная его инициализация; • обеспечение корректной работы приложения-сервера одновременно с несколькими клиентами; • управление памятью, выгрузка из памяти приложения-сервера, когда необходимость в нем отпадет и, наоборот, предотвращение несвоевременной выгрузки.

Проблемы, решаемые с помощью СОМ • Проблемы вызова методов объектов, освобождения и резервирования памяти решаются с помощью интерфейсов.

• Проблема предоставления среде разработки информации о названиях методов объектов и списков формальных параметров решается при помощи библиотек типов.

• Проблема передачи данных из адресного пространства одного приложения в адресное пространство другого приложения и унифицированного представления данных решается путем маршалинга.

• Проблем автоматического запуска сервера решается использованием фабрики классов и ее регистрации в системном реестре.

Дальнейшее развитие СОМ

Сейчас следующим Microsoft работает поколением над этой технологии -

СОМ+

.

В новой версии будут реализованы два наиболее существенных усовершенствования: • • автоматическая обработка подсчета ссылок;

СОМ

объекты можно будет инспектировать во время выполнения.

Сейчас Microsoft вовсю работает над .NET. Пару лет назад для создания сайта нужно было лишь установить сервер, приобрести IP-адрес и «выложить» на сайт какую-то информацию. После этого сайт становился доступен всем — достаточно было знать URL-адрес. Коммерческие предприятия использовали Web для размещения данных, которые могли пригодиться клиентам. Web-среда также оказалась ценным исследовательским инструментом и средством распространения информации

В ИТ-мире ближайшего будущего Web будет играть первую скрипку. Однако ситуация изменится: до этого содержимое Web-сайтов предназначалось пользователям, теперь же с этой информацией будут работать другие компьютеры.

То есть доступ к содержимому Web сайтов станет возможен из программ — благодаря Web-сервисам. Согласно концепциям .NET

ответственность за организацию многофункционального пользовательского интерфейса возлагается на сервер.

В условиях эйфории относительно Web-сервисов и пользовательских интерфейсов, поддерживаемых сервером, может показаться, что автономные приложения и клиентские сценарии — прерогатива таких средств, как библиотека MFC. (Microsoft Foundation Class Library), — окажутся за бортом истории.

Однако вряд ли исчезнет потребность в полнофункциональном пользовательском интерфейсе. Многие полагали, что «персоналки» и распределенные технологии естественным путем вытеснят мейнфреймы и миникомпьютеры, а оказалось, что ПК и распределенные вычисления лишь дополнили общую картину ИТ-мира. Принципы Web сервисов в .NET и поддерживаемые сервером многофункциональные пользовательские интерфейсы стали еще одним вариантом, доступным разработчикам.

MFC — зрелый, хорошо изученный инструмент, компаний.

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

А что будет с СОМ? Эта технология позволила решить массу проблем организации распределенных вычислений, но у нее есть ряд серьезных недостатков, как правило, связанных с поддержкой версий и информации о типах. Работа .NET основана на

общеязыковой среде исполнения,

или CLR (Common Language Runtime). Она берет на себя функции СОМ по обеспечению совместимости. И .NET и CLR среда будут рассмотрены во второй части курса.

СОМ и CLR-среда основаны на различных компонентных архитектурах, и все же Microsoft позаботилась о механизмах «мирного сосуществования» этих технологий. Обычно удается без проблем обеспечить совместимость СОМ и CLR. Маловероятно, что в мире .NET вы станете использовать СОМ в качестве компонентной архитектуры, однако вряд ли откажетесь от ATL (Active Template Library) Server — высокопроизводительного инструмента создания Web-сайтов.

Понятие о СОМ

Приложение Операционная система Приложение1 Библиотека Вызовы функций Сообщения через механизм межпроцессо рных связей Приложение2 Операционная система

В этой схеме для доступа к сервисам, предоставляемых библиотеками, локальными процессами, операционной системой или удаленными процессами применяются разные механизмы.

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

Общая архитектура сервисов в библиотеках, приложениях, системном программном позволяет Object СОМ Model и сетевом обеспечении (Component Модель многокомпонентных изменить подход программ.

объектов) к созданию

Функционирование СОМ

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

Метод - это функция, или процедура, которая выполняет некоторое действие и может быть вызвана программным обеспечением, использующим данный объект (клиентом объекта).

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

Корректор реализованный в виде объекта СОМ типа: может орфографии, поддерживать интерфейс, включающий методы

•LookUpWord

( НайтиСлово ); •

AddToDictionary

( ДобавитьКСловарю ); •

RemoveFromDictionary

( УдалитьИзСловаря ).

Если позднее разработчик объекта СОМ захочет добавить к этому объекту поддержку словаря синонимов, то объекту потребуется еще один интерфейс, возможно, с единственным методом, вроде ReturnSynonym (НайтиСиноним).

Первый интерфейс объекта СОМ, представляющий счет в банке, содержит методы: • Deposit (ПоложитьНаСчет).

• Withdraw (СнятьСоСчета).

• CheckBalance (ПроверитьОстаток ).

Второй интерфейс объекта СОМ, представляющий счет в банке, содержит методы: • ChangeAccountNumber (ИзменитьНомерСчета).

• CloseAccount(ЗакрытьСчет).

Интерфейсы Объект

СОМ

Сервер Интерфейс

LookUpWord() AddToDictionary() RemoveFromDictionary()

Объект СОМ

ReturnSynonym() Клиент

Любой СОМ-объект — это экземпляр определенного

класса.

счета.

Объекты одного класса могут, например, реализовывать сервисы корректировки орфографии и словаря синонимов, тогда как объекты другого класса — представлять банковские

Обычно знать класс объекта необходимо для запуска экземпляра этого объекта, выполняемого с помощью

библиотеки СОМ.

СОМ-объектов.

Эта библиотека присутствует на любой системе, поддерживающей СОМ, и имеет доступ к справочнику всех доступных на данной машине классов

Приложение Операционная система Приложение 1 Библиотека Приложение 2 Операционная система

Базовые понятия СОМ

В технологии

СОМ

приложение предоставляет для использования свои сервисы, применяя для этого объекты СОМ .

Одно приложение содержит как минимум один объект.

Каждый объект имеет один или несколько

методы интерфейсов.

Каждый интерфейс объединяет объекта, которые обеспечивают доступ к

свойствам

(данным) и выполнение операций. Обычно в интерфейсе объединяются все методы, выполняющие операции одного типа или работающие с однородными свойствами.

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

Объект всегда работает в составе

сервера СОМ.

Сервер может быть динамической библиотекой или исполняемым файлом. Объект может иметь собственные свойства и методы или использовать данные и сервисы сервера.

Для доступа к методам объекта клиент должен получить указатель на соответствующий интерфейс. Для каждого интерфейса существует собственный указатель. После этого клиент может использовать сервисы объекта, просто вызывая его методы. Доступ к свойствам объектов осуществляется только через его методы.

Интерфейс

IUnknown

Интерфейс ILinear Интерфейс

IAggreate

Объект

СОМ Сервер

Взаимодействие между клиентом и объектом обеспечивается базовыми механизмами

СОМ

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

СОМ

называется

маршалингом

(marshalling).

Схема взаимодействия клиента и объекта

СОМ

Указатель на интерфейс

IAggregatte

объекта

СОМ Клиент

Интерфейс ILinear Интерфейс

IUnknown

Интерфейс

IAggreate

Объект

СОМ Сервер

Объект

Центральным элементом поддерживающие

СОМ

несколько объектов собой экземпляр интерфейсов

СОМ

является объект. Приложения, , имеют в своем составе один или

СОМ

. Каждый объект представляет соответствующего класса и содержит один или несколько

Каждый интерфейс имеет два атрибута: • • имя, составленное из символов. Каждое имя должно начинаться с символа “

I ”

;

глобальный уникальный идентификатор

(

Globally Unique IDentifier, GUID

), который представляет собой гарантированно уникальное сочетание символов.

Любой объект является экземпляром некоторого класса, то есть представляет собой переменную объектного типа. Поэтому объект обладает набором свойств и методов, которые работают с этими свойствами. К объектам применимы три основные характеристики: инкапсуляция, наследование и полиморфизм. Объекты

СОМ

всем этим требованиям удовлетворяют

Интерфейс

Интерфейсы являются центральным звеном идеологии

СОМ

.

Интерфейс — это не класс.

Интерфейс строго типизирован.

Интерфейс является неизменным контрактом.

Формат интерфейса

СОM

Клиент Указатель 1 Метод 1 Метод 2 Указатель на интерфейс Внутренний указатель на виртуальную таблицу Указатель N Метод N

Объект СОМ

Интерфейс lUnknown

состоит из трех методов: •

QueryInterface.

AddRef.

Release.

Сервер Сервер

СОМ

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

Различают три типа серверов: • • •

Внутренний сервер

process server).

Локальный сервер

server).

(in (local

Удаленный сервер

server).

(remote

После получения указателя клиент обращается к интерфейсу

Клиент

Указатель на IID2_A CoCreateIstance(CLSID_2, IID2_A)

Библиотека СОМ Объект СОМ

CLSID_1 CLSID_2 C:\SERVER1.EXE

C:\SERVER2.DLL

Библиотека обращается к реестру По записи из реестра СОМ запускается сервер