Интерфейс COM
Как было отмечено выше, основу технологии COM составляет спецификация, которая указывает, как создавать динамически взаимозаменяемые компоненты. СОМ определяет стандарт, которому должны следовать компоненты и клиенты, чтобы гарантировать возможность совместной работы.
Компоненты СОМ состоят из исполняемого кода, распространяемого в виде динамически компонуемых библиотек (DLL) или EXE-файлов Win32.
Для динамического подключения друг к другу компоненты СОМ используют DLL. Однако, сама по себе динамическая компоновка не обеспечивает компонентной архитектуры: компоненты должны быть инкапсулированы.
Обеспечение инкапсуляции в компонентах COM достигается за счет соблюдения ряда следующих технологических ограничений:
1. Компоненты полностью независимы от языка программирования (т.е. могут быть разработаны с помощью практически любого процедурного языка).
2. Компоненты могут распространяться в информационной среде в двоичной форме.
3. Компоненты можно модернизировать, не нарушая работы старых клиентов (СОМ предоставляет стандартный способ реализации разных версий компонента).
Финансовая грамотность: обновление содержания программ, технологий и формата обучения
4. Компоненты СОМ можно прозрачно перемещать по сети (компонент на удаленной системе рассматривается так же, как компонент на локальном диске компьютера).
ОС Windows выстроена на основе технологии COM. COM-объекты выполняют разные функции, создаются и уничтожаются системой автоматически (по мере возникновения запросов от пользователей). Достаточно только описать интерфейс COM-объекта и запрограммировать его реализацию, все остальное выполняет компилятор и Windows.
При разработке приложений COM пользуются следующими составные части технологии:
Интерфейс COM – описывает методы и свойства, доступные программам, обращающимся к объекту.
Сервер COM – законченный модуль кода (EXE или DLL), в котором хранится программный код одного или нескольких объектов COM.
Клиент COM – программный код, в котором происходит обращение к интерфейсу с запросом на выполнение услуг сервера COM.
Интерфейсы составляют основу данной технологии. Для клиента компонент представляет собой набор интерфейсов, которые являются единственным каналом взаимодействия клиента с компонентом СОМ.
Компонент можно удалить и заменить другим; если новый компонент поддерживает те же интерфейсы, что и старый, приложение будет работать по-прежнему.
Интерфейс COM позволяет клиентам COM общаться с сервером на основе стандартного механизма публикации интерфейса. После того, как интерфейс COM опубликован (стандартным способом зарегистрирован системой), изменять его нельзя, что гарантирует одинаковую работу объекта COM в любых условиях.
У любого объекта COM имеется базовый интерфейс – IUnknown, который позволяет узнать, какие еще интерфейсы COM доступны для клиента COM. Все эти интерфейсы наследуют характеристики интерфейса IUnknown.
Уникальность интерфейса обеспечивается его глобальным идентификатором – Globally Unique IDentifier (GUID) длиной 16 байтов. Каждый объект COM имеет идентификатор интерфейса – Interface IDentifier (IID) на основе GUID. GUID требуется для избежания проблем при появлении интерфейсов COM с одинаковыми именами.
Технология разработки учебной программы
Благодаря наличию стандартных интерфейсов объект COM может быть реализован на любом языке программирования. Интерфейс IUnknown содержит метод QueryInterface, возвращающий ссылку на другие доступные интерфейсы, а также методы AddRef и Release, которые увеличивают и уменьшают счетчик ссылок на конкретный интерфейс.
Счетчик увеличивается при обращении к интерфейсу и уменьшается при освобождении интерфейса. Как только значение счетчика равно нулю, т.е. к интерфейсу больше нет обращений, соответствующий объект COM может быть удален из памяти до следующего запроса к его интерфейсу.
На основе технологии COM был создан ряд расширений: серверы автоматизации (OLE), активные серверные страницы (.ASP), встраиваемые серверы ActiveX с визуальной настройкой и др.
Источник: studopedia.ru
Технология com что это за программа
Итак, » технология COM «. Аббревиатура COM расшифровывается просто, это — Component Object Model — компонентная объектная модель. Иногда говорят и » модель COM «. Сутью данной технологии является то,что программы строятся из компонент, которые состоят из объектов. Само по себе это обстоятельство не является последней новостью в области программостроения — модульная архитектура и объектно-ориентированный подход к построению программ давно являются признанными стандартами de facto. Новостью является то, что является этими компонентами и объектами — ими является непосредственно исполняемый двоичный код. Да-да, не » включаемые исходные тексты » компилируемые совместно с проектом, не » библиотеки стандартных программ «, присоединяемые линкером, а непосредственно исполняемые файлы, которые никак не надо «связывать» со своим проектом — их достаточно зарегистрировать в операционной системе и они будут доступны любой программе исполняющейся на данной машине. Т.е. их использование в своей программе производится » без использования операций сборки модуля «.
Это ли новость? Такая технология называется «динамическая загрузка», она давно известна и её преимущества очевидны. А модули, которые позволяют загружать себя таким образом, называются DLL . И в системе, именуемой Microsoft Windows такая технология известна от самого её рождения. А DLL и есть тот самый «двоичный исполняемый модуль», который может быть присоединен к программе лишь на стадии её выполнения.
Выходит, если весь проект распределить по нескольким динамическим библиотекам, то получатся «двоичные компоненты»?
Не совсем. Действительно, важнейший признак «компонентности» уже появится — исполняемую программу можно будет собирать из отдельных частей без операций сборки модуля. Но вот DLL — не компонента, DLL есть,если можно так выразиться, только «место обитания компонент» используемых в программе.
Ведь из программы-то вызываются вполне конкретные процедуры и функции, которые только расположены в DLL . Кроме того, вызовы процедур «из своего модуля» и «из DLL » — не одинаковые действия. Вызов процедуры, которая располагается внутри «своего» модуля требует знания только имени этой процедуры, а если процедура располагается в DLL , то нужно знать ещё и имя самой библиотеки. Модель же COM позволяет этого «не знать», т.е. вызов объектов COM из своей программы осуществляется без знания того, где они расположены. Достаточно знать имя объекта.
Другое отличие COM , уже от привычных объектов в стиле объектно-ориентированного программирования ( ООП ), состоит в том, что объекты ООП известны только компилятору. Это — абстракции, в которых мыслит программист и которые компилятор превращает в двоичные структуры » данные + код «. Объекты ООП существующие в разных единицах компиляции и, тем более, помещенные в разные двоичные модули, ничего не могут друг о друге «знать» просто потому, что их там нет и никогда не было. Не случайно заголовочные файлы, содержащие описания всех объектов проекта, подаются на вход именно компилятора — потом они уже никому не нужны. Объекты же COM — действительно существуют в двоичном виде как объекты. И в таком качестве известны всем, кто испытывает в них нужду.
Словом, если ограничить объём этого эссе, только ответом на вопрос «в чём суть?», то технология COM есть технология, которая переносит все преимущества ООП , доступные программисту на уровне исходного текста, на двоичный уровень. Если в исходном тексте программист волен использовать «те» объекты и не использовать «эти», но теряет всяческий контроль над тем, что он делал, как только исходный текст был скомпилирован, то при использовании COM эти возможности сохраняются на протяжении всего жизненного цикла программы.
Дополнительно к этому добавляются возможности разделения проекта на отдельные, повторноиспользуемые, и двоичные компоненты. Т.е., если в результате непосильного труда у программиста получается что-то хорошее и нужное, хотя бы частично, кому-то другому, то, оформив это в виде COM -сервера, он смело может это распространять, не рискуя что-то потерять — ведь контроль за исходным текстом остается у него. В то же время все пользователи этого объекта будут его использовать так же, как и свой, «родной», объект. О других достоинствах COM мы поговорим в следующем выпуске.
Источник: www.developing.ru
Технологии COM, ActiveX и OPC
COM (англ. Component Object Model — Объектная Модель Компонентов; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих распределённых компонентов, каждый из которых может использоваться во многих программах одновременно.
Технология воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования. Технология COM в принципе является универсальной и платформо-независимой, но закрепилась в основном на операционных системах семейства Windows. В современных версиях Windows COM используется очень широко. На основе COM также было создано множество других стандартов: OLE Automation, ActiveX, DCOM, COM+.
История COM
Стандарт COM был разработан в 1993 году компанией Майкрософт как основа для развития технологии OLE. Технология OLE 1.0 уже позволяла создавать т. н. «составные документы» (англ. compound documents): например, в пакете Microsoft Office эта технология позволяла включать диаграммы Microsoft Excel в документы Microsoft Word). Стандарт же COM должен был унифицировать процесс создания, внедрения и связывания таких внедряемых объектов, а также стандартизировать разработку приложений, использующих внедряемые объекты.
Путаница в названиях
В 1996 году Майкрософт попыталась переименовать технологию OLE в ActiveX, но это удалось лишь частично. Например, технология OLE позволяла создавать так называемые элементы управления OLE (англ. OLE Controls, или OCX) — повторно используемые элементы пользовательского интерфейса, которые были построены на стандарте COM. Эти элементы управления OLE были переименованы в элементы управления ActiveX (англ.
ActiveX controls), хотя расширение файлов «.ocx» за ними осталось. Затем Майкрософт стала активно продвигать ActiveX в Интернет, включив поддержку элементов ActiveX в свой популярный браузер Internet Explorer. В результате название OLE осталось только за технологией составных документов и локальных внедряемых объектов. А сетевые OLE-объекты стали называть по-новому — ActiveX.
Некоторая путаница между понятиями OLE и ActiveX сохраняется и до сих пор, но речь идёт об одних и тех же COM-технологиях. Причём, иногда даже путают понятия OLE и COM. Так, внедряемые OLE-объекты иногда называют COM-объектами, а OLE-контейнеры COM-контейнерами, и т. п.
Принципы работы COM
Основным понятием, которым оперирует технология COM, является COM-компонент. Программы, построенные на технологии COM, фактически не являются автономными программами, а представляют собой набор взаимодействующих между собой COM-компонентов. Каждый компонент имеет уникальный идентификатор (GUID) и может одновременно использоваться многими программами. Компонент взаимодействует с другими программами через COM-интерфейсы — наборы абстрактных функций и свойств. Каждый COM-компонент должен, как минимум, поддерживать стандартный интерфейс «IUnknown», который предоставляет базовые средства для работы с компонентом.
Windows API предоставляет базовые функции, позволяющие использовать COM-компоненты. Библиотеки MFC и, особенно, ATL/WTL предоставляют гораздо более гибкие и удобные средства для работы с COM. Библиотека ATL от Майкрософт до сих пор остаётся самым популярным средством создания COM-компонентов. Но, зачастую, COM-разработка остаётся ещё довольно сложным делом, программистам приходится вручную выполнять многие рутинные задачи, связанные с COM (особенно это заметно в случае разработки на C++). Впоследствии (в технологиях COM+ и особенно .NET) Майкрософт попыталась упростить задачу разработки COM-компонентов.
Развитие COM
Выпущенная в 1996 году технология DCOM (англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC) и является развитием COM. DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети. Главным конкурентом DCOM является другая известная распределённая технология — CORBA.
В составе Windows 2000 была выпущена технология COM+, которая расширяла возможности разработчиков COM-компонентов, предоставляя им некоторые готовые услуги, например:
– улучшенную поддержку потоков;
– доступ к контексту, в котором выполняется компонент (например, компоненты, используемые в ASP, могут с этой возможностью получить доступ к внутренним объектам той страницы, на которой они выполняются).
COM+ объединяет компоненты в так называемые приложения COM+, что упрощает администрирование и обслуживание компонентов. Безопасность и производительность — основные направления усовершенствований COM+. Некоторые идеи, заложенные в основу COM+, были также реализованы в Microsoft .NET.
.NET и будущее COM
В 2002 году была официально выпущена платформа Microsoft .NET, которая на сегодняшний день объявлена Майкрософт рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в .NET включены и средства, позволяющие обращаться к компонентам COM из приложений .NET, и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и .NET являются отлично взаимодополняющими технологиями. Также известно, что Windows Vista построена с использованием технологий .NET и COM+.
Источник: studbooks.net
Component Object Model
COM (англ. Component Object Model «объектная модель компонентов»; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов, каждый из которых может использоваться во многих программах одновременно [1] . Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования. Стандарт COM мог бы быть универсальным и кроссплатформенным, но закрепился в основном на операционных системах семейства Microsoft Windows. В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM.
- 1 История COM
- 1.1 Путаница в названиях
- 4.1 DCOM
- 4.2 COM+
- 4.3 .NET и будущее COM
- 4.4 DCOM через интернет и решение проблемы XP SP2
- 4.5 OPC
- 4.6 OLE
Источник: wiki2.org
Описание технологии – COM/DCOM
COM (Component Object Model – модель многокомпонентных объектов) — технология.Для инструментальных систем и систем управления, реализованных на платформе Windows, фирмой Microsoft предложена архитектура компонентных объектов.
Компонент – это готовый к использованию двоичный код, содержащийся либо в динамической библиотеке (DLL), либо в EXE-файле, который может быть при необходимости загружен в память и стандартным образом динамически подключен к приложению. Две основные черты компонентов:
— динамическое связывание – означает, что связь компонента и приложения (т.е. связь между вызовом функции в приложении и ее кодом в теле компонента) осуществляется не на этапе компоновки приложения, а непосредственно во время его выполнения;
— скрытая внутренняя реализация (инкапсуляция) – означает, что для приложения не важно, и приложение не знает, как именно реализован компонент внутри, а только знает, как вызывать его функции.
Традиционно приложение состояло из отдельных файлов, модулей или классов, которые компилировались и компоновались вместе. Разработка приложений из компонентов — так называемых приложений компонентной архитектуры — происходит иначе. Компонент подобен мини-приложению, он поставляется пользователю как двоичный код, скомпилированный, скомпонованный и готовый к использованию. Модификация или расширение приложения сводится к замене одного из составляющих его компонентов новой версией.
Один из наиболее многообещающих аспектов компонентной архитектуры — это быстрая разработка и развитие приложений. Из накапливаемого набора компонентов в библиотеках можно будет собирать, как из деталей конструктора, требуемые цельные приложения.
Распределенные компоненты.С возрастанием производительности и общего значения сетей потребность в приложениях, распределённых по различным узлам сети/сетей, будет обостряться. Компонентная архитектура позволяет упростить процесс разработки подобных распределенных приложений. Приложения клиент-сервер — это шаг в сторону компонентной архитектуры, поскольку они разделены на две части, клиентскую и серверную.
Создать из обычного приложения распределенное, безусловно, легче, если это приложение состоит из компонентов. Во-первых, оно уже разделено на функциональные части, которые могут располагаться вдали друг от друга. Во-вторых, поскольку компоненты заменяемы, вместо некоторого компонента можно подставить другой, единственной задачей которого будет обеспечивать связь с удаленным компонентом. Так, если некоторые компоненты А и В переносятся с локальной машины на удаленные, то на локальной вместо компонент А и В появляются переадресовщики, которые перенаправляют запросы к данным компонентам по сети. При наличии подходящих переадресующих компонентов приложение может совершенно игнорировать фактическое местоположение своих частей.
Приложение, использующее компонент, называется клиентом для данного компонента. Таким образом, компонентная модель имеет аналогию с клиент-серверной архитектурой. Компонент подключается к приложению через интерфейс, единый для приложения-клиента и компонента. Отметим, что, для того, чтобы подключить к приложению компонент, важно знать, какой интерфейс он использует.
Если компонент изменяется без изменения интерфейса, то изменений в клиенте не требуется. Аналогично, если сам клиент изменится без изменения интерфейса, все созданные ранее компоненты можно будет продолжать подключать. Таким образом, достигается одно из важных преимуществ технологии COM – возможность раздельной разработки приложения, а также легкость его модифицирования.
Таким образом, COM — это спецификация, указывающая, как создавать динамически взаимозаменяемые компоненты. COM определяет стандарт, которому должны следовать компоненты и клиенты, чтобы гарантировать возможность совместной работы. Компоненты COM состоят из исполняемого кода, распространяемого в виде динамически компонуемых библиотек (DLL) или EXE-файлов Win32.
Но сама по себе динамическая компоновка не обеспечивает компонентной архитектуры. Компоненты COM объявляют о своем присутствии стандартным способом. Используя схему объявлений COM, клиенты могут динамически находить нужные компоненты. Отметим, что реализация этой возможности возложена на операционную систему.
Интерфейс COM включает в себя набор функций, которые реализуются компонентами и используются клиентами. Интерфейсом в COM является определенная структура в памяти, содержащая массив указателей на функции, как показано на рисунке 12.
Рис. 12. Интерфейс COM.
Сегодня можно с большой уверенностью говорить о том, что современный процесс генерации конечного приложения всё более напоминает не традиционный процесс разработки прикладного программного обеспечения, а процесс компонентной сборки. Соответственно качественно меняется характер труда прикладного программиста.
DCOM (Distributed Component Object Model – модель распределенных компонентных объектов)- программная архитектура, разработанная компанией Microsoft для распределения приложений между несколькими компьютерами в сети. Программный компонент на одной из машин может использовать DCOM для передачи сообщения (его называют удаленным вызовом процедуры) компоненту на другой машине. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленного компонента. В принципе, в случае использования технологии DCOM не важно, находятся клиентская часть приложения и компонент (сервер) на разных ЭВМ или на одной. На рисунке 13 показана схема взаимодействия приложения и компонента при помощи интерфейса DCOM.
Рис. 13. Взаимодействие через интерфейс DCOM.
Распределенная компонентная архитектура DCOM поддерживает множество распространенных сетевых протоколов: TCP/IP, UDP, IPX/SPX, NetBIOS и др., поэтому программы, использующие технологию DCOM, могут работать в различных типах сетей.
Дата добавления: 2018-11-26 ; просмотров: 1782 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Источник: poznayka.org