...

Режим com что это за программа

Модель COM

Microsoft Component Object Model (COM) — это независимая от платформы распределенная объектно-ориентированная система для создания двоичных программных компонентов, которые могут взаимодействовать. COM — это базовая технология ole (составные документы), ActiveX (компоненты с поддержкой Интернета) корпорации Майкрософт, а также другие.

Чтобы понять COM (и, следовательно, все технологии на основе COM), важно понимать, что это не объектно-ориентированный язык, а стандарт. Com также не указывает, как должно быть структурировано приложение; Сведения о языке, структуре и реализации предоставляются разработчику приложения. Вместо этого COM задает объектную модель и требования к программированию, которые позволяют COM-объектам (также называемым com-компонентами или иногда просто объектами) взаимодействовать с другими объектами. Эти объекты могут находиться в одном процессе, в других процессах и даже на удаленных компьютерах. Они могут быть написаны на разных языках, и они могут быть довольно непохожими, поэтому COM называется двоичным стандартом; Стандарт, который применяется после перевода программы в двоичный машинный код.

Единственное требование к языку для COM заключается в том, что код создается на языке, который может создавать структуры указателей и явно или неявно вызывать функции через указатели. Объектно-ориентированные языки, такие как C++ и Smalltalk, предоставляют механизмы программирования, упрощающие реализацию COM-объектов, но для создания и использования COM-объектов можно использовать такие языки, как C, Java и VBScript.

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

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

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

  • Com-объекты и интерфейсы
  • Использование и реализация IUnknown
  • Повторное использовать объекты
  • Библиотека COM
  • Управление выделением памяти

Что такое COM объект, как происходит его разработка, какие особенности реализации COM Microsoft?

Всем добрый день. Хотел бы получить краткие и понятные для новичка ответы на следующие вопросы:
1) Что такое COM объект?
2) Как происходит разработка COM объекта?
3) Какие особенности реализации COM Microsoft?
Прошу воздержаться от скидывания многостраничной литературы.
Спасибо.

  • Вопрос задан более трёх лет назад
  • 9588 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 3

gbg

Любые ответы на любые вопросы

1) Еще одна безумная инкарнация попытки микрософта по встраиванию одной программы в другую. До этого были DDE, OLE, ActiveX и прочий зоопарк. Про это даже легенды слагают.

Сначала были Windows API и DLL Hell. Революцией N1 было DDE — помните, как ссылки позволили нам создавать статусные строки, отражающие текущую цену акций Microsoft? Примерно тогда же Microsoft создала ресурс VERSION INFO, исключающий DLL Hell. Но другая группа в Microsoft нашла в DDE фатальный недостаток — его писали не они!

2) Долго, мучительно и с кучей копания в дебаггере. Спецификация COM — огромный многостраничный документ, которых вы боитесь.
3) Они были популярны в 1998 году и около того времени. Тогда даже рабочий стол форточки сделали таковым объектом. За 10 лет популярность пошла на спад, так как оказалось что кроме встраивания экселя в ворд, это все нафиг никому не надо (особенно в ТАКОМ виде), а программы могут общаться между собой не при помощи монструозного бинарного интерфейса с маршалингом, и даже не при помощи километров XML в SOAP, а гораздо более легковесными посылками и обращениями к REST API. Сейчас это чудо можно встретить разве что при работе с DirectX.

Ответ написан более трёх лет назад
Нравится 6 6 комментариев
Очень плохой ответ.

gbg

NewDevLab, Пишите хороший ответ, кнопик рядом.

gbg

NewDevLab, Впрочем, правы, как я мог забыть об Истории компьютерных революций от Microsoft — добавил ссылку. Теперь — лучше?

Армянское Радио, ну что такое. это эволюцией называется.
Java++ называлась их реинкарнация Java.
Концепция OLE была расширена до COM, который подразумевает не только то, что делал OLE, который да, изначально был предложен командой Офиса.
ActiveX — это больше маркетинговое название, с технической точки зрения обычно означает — компонент COM, который может встраиваться и активироваться в COM-контейнере путем реализации некоторых интерфейсов. COM+ и DCOM — это про межпроцессорное взаимодействие, в т.ч. по сети.
всё это успешно работает до сих пор.
разработка и использование COM-серверов на VB и Делфи не стоила ничего.
разработка и использование COM-серверов на .Net сейчас не стоит ничего.
задаётся декларативно.
бинарные протоколы и форматы, так понятно, что они эффективней по ресурсам, чем текстовые. а машины тогда какие были. я не говорю, что сейчас так надо делать, но они всё равно всегда будут быстрее, в т.ч. и сейчас.
COM — это соглашение про то, как надо делать. ООП в абстракции от различных ЯП. вносит минимальный оверхед при решении задач, которые требовалось решить.
это было отличное решение для своего времени и шаг в правильном направлении.
тогда была только еще одна реализация этого подхода — Corba.

точнее Visual J++, забыл уже.

gbg

бинарные протоколы и форматы, так понятно, что они эффективней по ресурсам, чем текстовые

По ресурсам на разработку, внедрение, развитие и поддержку, они категорически проигрывают текстовым. В вопросе речь идет как раз о разработке.
А если вы пытаетесь соединить, например, по сети, тупоконечнкую архитектуру с остроконечной, вам придется каждое, мать его, целочисленное значение перетряхивать.
А потом у вас еще будет x32/x64 битные архитектуры, это просто праздник.

Собственно, по этой причине нынче популярно бросаться XML/JSON, которые давлены GZIP, а не изобретать бинарный формат.

Nie_yar

nik rik @Nie_yar Автор вопроса

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

При подготовке материала использовались источники:
https://learn.microsoft.com/ru-ru/windows/win32/com/the-component-object-model
https://qna.habr.com/q/796975

Оцените статью