Вопрос 32: Технология com
COM (англ. Component Object Model — Объектная Модель Компонентов; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих распределённых компонентов, каждый из которых может использоваться во многих программах одновременно. Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования. Стандарт COM мог бы быть универсальным и платформо-независимым, но закрепился в основном на операционных системах семейства Microsoft Windows. В современных версиях Windows COM используется очень широко. На основе COM были реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM.Содержание
История COM
Стандарт COM был разработан в 1993 году корпорацией Microsoft как основа для развития технологии OLE. Технология OLE 1.0 уже позволяла создавать т. н. «составные документы» (англ. compound documents): например, в пакете Microsoft Office эта технология позволяла включать диаграммы Microsoft Excel в документы Microsoft Word.
Путаница в названиях
В 1996 году Microsoft попыталась переименовать технологию OLE в ActiveX, но это удалось лишь частично. Например, технология OLE позволяла создавать так называемые элементы управления OLE (англ. OLE Controls, или OCX) — повторно используемые элементы пользовательского интерфейса, которые были построены на стандарте COM. Эти элементы управления OLE были переименованы в элементы управления ActiveX (англ. ActiveX controls), хотя расширение файлов «.ocx» за ними осталось. Затем Microsoft стала активно продвигать 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», который предоставляет базовые средства для работы с компонентом. Интерфейс «IUnknown» включает в себя три метода: QueryInterface, AddRef, Release.
Windows API предоставляет базовые функции, позволяющие использовать COM-компоненты. Библиотеки MFC и, особенно, ATL/WTL предоставляют гораздо более гибкие и удобные средства для работы с COM. Библиотека ATL от Microsoft до сих пор остаётся самым популярным средством создания COM-компонентов. Но, зачастую, COM-разработка остаётся ещё довольно сложным делом, программистам приходится вручную выполнять многие рутинные задачи, связанные с COM (особенно это заметно в случае разработки на C++). Впоследствии (в технологиях COM+ и особенно .NET) Microsoft попыталась упростить задачу разработки COM-компонентов.
[править]
Технологии, основанные на стандарте COM
DCOM
Выпущенная в 1996 году технология DCOM (англ. Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности RPC). DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети. Главным конкурентом DCOM является другая известная распределённая технология — CORBA.
Как DCOM, так и CORBA решают задачу вызова метода объекта, расположенного на другой машине, а также передачу ссылки на объект с одной машины на другую.
Сетевой уровень DCOM называется ORPC (Object RPC) и является объектно-ориентированным расширением DCE RPC.
Технология DCOM обеспечивает базовые установки безопасности, позволяя задавать, кто и из каких машин (источник про фразу «из каких машин»?) может создавать экземпляры объекта и вызывать его методы.
COM+
Microsoft Transaction Server был включен в Option Pack для Windows NT4 еще в 1997 году.
В составе Windows 2000 была выпущена технология COM+, которая являлась новой версией Microsoft Transaction Server.
Технология расширяла возможности разработчиков COM-компонентов, предоставляя им некоторые готовые услуги, например:
автоматический пул потоков, создаваемый стандартным процессом-загрузчиком mtx.exe
доступ к контексту, в котором выполняется компонент (например, компоненты, используемые в ASP, могут с этой возможностью получить доступ к внутренним объектам той страницы, на которой они выполняются).
интеграция с транзакциями монитора MS DTC (контекст COM+ может автоматически содержать в себе транзакцию MS DTC)
MTS/COM+ использовался внутри ряда версий веб-сервера MS IIS для загрузки и исполнения веб-приложений, как бинарных по технологии ISAPI, так и скриптовых по технологии ASP (сама asp.dll есть ISAPI-приложение).
COM+ объединяет компоненты в так называемые приложения COM+, что упрощает администрирование и обслуживание компонентов. Безопасность и производительность — основные направления усовершенствований COM+. Некоторые идеи, заложенные в основу COM+, были также реализованы в Microsoft .NET.
.NET и будущее COM
В 2002 году была официально выпущена платформа Microsoft .NET, которая на сегодняшний день объявлена Microsoft рекомендуемой основой для создания приложений и компонентов под Windows. По этой причине в .NET включены и средства, позволяющие обращаться к компонентам COM из приложений .NET, и наоборот. По словам представителей Майкрософт, COM (точнее, COM+) и .NET являются отлично взаимодополняющими технологиями.
DCOM через интернет и решение проблемы XP SP2
В 2009 году DComLab опубликовал коммерческий продукт ComBridge. При использовании ComBridge для работы по DCOM через интернет не требуется CIS, не используется 135 порт, в локальной сети не требуются настройки dcomcnfg. ComBridge встраивается в транспортный уровень DCOM, полностью выделяя весь трафик созданного объекта и всех полученных из него объектов в отдельный поток.
OPC
OPC (OLE for Process Control) — семейство программных технологий, предоставляющих единый интерфейс для управления объектами автоматизации и технологическими процессами. Многие из OPC протоколов базируются на Windows-технологиях: OLE, ActiveX, COM/DCOM. Такие OPC протоколы, как OPC XML DA и OPC UA являются платформо-независимыми.
OLE
OLE (англ. Object Linking and Embedding, произносится как oh-lay [олэй] — Связывание и внедрение объекта) — технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.
OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.
Критика
Технология часто критикуется за неоправданную сложность, а также за необходимость регистрации компонент в реестре машины. Более новые аналогичные технологии в мире .NET пытаются решить эти проблемы.
DCOM крайне сложен в настройке при наличии межсетевых экранов.
Однако, учитывая наличие ATL и визардов, позволяющих описывать OLE Automation интерфейсы визуально в среде Visual Studio, DCOM по-прежнему в целом скорее всего проще для разработчиков приложений, чем DCE RPC, и, возможно, самая простая в практическом применении технология межпроцессного и межмашинного общения приложений.
- Часть 1.2. Basic(Знакомство с информационной технологией) 186
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц 198
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией) 204
- Конспект лекций
- Часть 1: Современные информационные технологии (по и оборудовние)
- Вопрос 01. Информация и информатизация.
- Вопрос 02. Устройства хранения информации.
- Вопрос 06. Базы данных. Субд.
- Вопрос 07. Acses
- Вопрос 08. Передача данных.
- Вопрос 09. Сетевые информационные технологии
- Вопрос 10. Интернет. Сервисы, услуги и информационные ресурсы Интернета
- Вопрос 11. Защита информации
- Вопрос 12: Архитектура и структура пк. Назначение составных элементово пк. Сборка пк.
- Часть 2: Разработка информационных технологий. Применение информационных технологий преданазначенных для разработки информационных технологий.
- Вопрос 13. Переменные, объявление переменных, константы, массивы в языке Паскаль.
- Вопрос 14. Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Вопрос 15. Циклы в языке Паскаль
- Вопрос 16. Объявление и использование своих функций и процедур в языке Паскаль
- Вопрос 17. Встроенные функции в языке Паскаль
- Вопрос 23. Понятие класса. Объявление класса.
- Вопрос 25. Среда Delphi и особенности языка
- Вопрос 28. Основные языковые структуры и применение html.
- Вопрос 29. JavaScript.
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- Вопрос 30. Php.
- Вопрос 31. Жизненный цикл информационных технологий
- Часть 3: Концептуальные информационные технологии
- Вопрос 32: Технология com
- Вопрос 33: Технология Java. Java virtual mashin. Особенности и области применения языка Java.
- Технология Java
- Язык программирования Java
- Вопрос 34: Технология .Net. Особенности языка и области применения языка с#.
- Технология .Net.
- Язык с#.
- Вопрос 35: Использование библиотек DirectX и OpenGl.
- Вопрос 36: Создание компьютерных игр. Генераторы комьпьютерных игр.
- Вопрос 37: Проектирование информационных технологий. Язык uml 2.
- Вопрос 38: Интерпретаторы и компиляторы. История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Интерпретаторы
- Компиляторы
- История развития языков. Общая характеристика, назначение и область применения различных языков программирования.
- Вопрос 39: Фриланс в информационных технологиях. Sharovar-ное программирование. Волонтерство в информационных технологиях.
- Фриланс
- Волонтеры
- Вопрос 40: Интерфейс usb.
- Список лабораторных работ (в количестве 5 штук с разделением на составные части)
- Часть 2: Использование ms Acses.
- Часть 3: Использование оборудования.
- Часть 4: Дополнительные лабораторные работы
- Пояснение по содержанию лекций и лабораторных работ
- Условный оператор (If) и оператор выбора (case) в языке Паскаль
- Циклы в языке Паскаль
- Объявление и использование своих функций и процедур в языке Паскаль
- Встроенные функции в языке Паскаль
- (2 Занятие)Лаб. Работа. 1. Часть 2. Особенности применения, особенности языка и среда Delphi (Знакомство с информационной технологией).
- Часть 1.2. Basic(Знакомство с информационной технологией)
- (4 Занятие)Лаб. Работа. 2. Часть 2. Особенности применения, особенности языка и среда Visual Basic (Знакомство с информационной технологией).
- Часть 1.3. Html (Знакомство с информационной технологией). Примечание: Подробно будут изучать (некоторые специальности) в рамках курса языки разметки web-страниц
- Часть 1.4. С-подобные языки(Знакомство с информационной технологией)
- (9 Занятие)Лаб. Работа. 4. Часть 4. Особенности применения, особенности языка и среда ms c# (Знакомство с информационной технологией).
- (10 Занятие)Лаб. Работа. 4. Часть 5. Особенности применения, особенности языка и среда JavaScript (Знакомство с информационной технологией).
- 1. Оператор for
- 2. Оператор while
- 3. Оператор do…while
- 4. Метки операторов
- 5. Оператор break
- 6. Оператор continue
- 5. Оператор for…in
- 6. Оператор with
- (11 Занятие)Лаб. Работа. 4. Часть 6. Особенности применения, особенности языка и среда php (Знакомство с информационной технологией).