Что такое COM?

Просто получите запрос

@RequestMapping //whatever
public void yourEndpointMethod(ServletRequest req){
   req.getInputStream();//here
}
24
задан Shog9 14 April 2009 в 16:36
поделиться

7 ответов

COM - это "объектная модель компонентов". Это одна из первых технологий, разработанных для «повторного использования» компонентов в двоичном формате. Первоначально это было переписано то, что в Microsoft Office примерно в 1988-1992 гг. Называлось Динамическим обменом данными (DDE), технология, позволяющая различным приложениям Office общаться друг с другом. Первая попытка переписать его была названа OLE-Automation (связывание и внедрение объектов). Но когда они закончили, они переименовали его в COM.

Как это работает:

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

С COM,

19
ответ дан 28 November 2019 в 23:31
поделиться

Ваш вопрос является немного большим для полного объяснения здесь. Краткое высокоуровневое введение в COM можно найти в книге Понимание ActiveX и OL E. Более подробное, но все же вводное введение - Inside COM . Лучшая книга на эту тему - «Essential COM» Дона Бокса .

Несколько быстрых ответов:

  • COM - это двоичный стандарт интерфейса для объектов. Это позволяет различным программам писать в интерфейсы без необходимости написания одного и того же языка с одним и тем же компилятором. Также доступны связанные сервисы.
  • GUID - это глобально уникальные номера, которые COM использует для идентификации интерфейсов.
  • COM не решает проблемы с разными версиями DLL. Он позволяет регистрировать только одну DLL для каждого GUID.
13
ответ дан 28 November 2019 в 23:31
поделиться

COM позволяет повторно использовать программное обеспечение. Как и строительные блоки, вы можете создавать COM-объекты (или теперь сборки в .NET), чтобы обеспечить функциональность для большей части программного обеспечения. Я использовал COM для обеспечения интеграции БД для Excel и MS BizTalk. Программное обеспечение, такое как MS BizTalk, использует COM / Assemblies для расширения возможностей обработки стандартного процесса; Вы можете вставить COM в рабочий процесс сообщения, чтобы выполнить больше обработки, чем реализовано Microsoft. COM также позволяет использовать Сервисы Компонентов, обеспечивающие встроенный интерфейс пула объектов, безопасности и управления.

В Википедии есть хорошее определение GUID . Обратите внимание, что у Microsoft есть форматирование, которое не обязательно используется в остальном сообществе разработчиков.

COM сам по себе не решает проблемы версии DLL. Это позволяет постепенно расширять программное обеспечение, если вы используете возможность управления версиями COM. Таким образом, если у вас есть приложение, которое использует COM для преобразования XML в текст (например), и вы хотите улучшить его, вы можете создать новую версию (2.0), которую вы можете медленно разворачивать при обновлении исходного приложения, чтобы использовать новый COM. Таким образом, вы можете (при необходимости) иметь оператор switch, который все еще может использовать старый COM, если этого требуют системные ограничения, или использовать новый (это будут разные DLL).

7
ответ дан 28 November 2019 в 23:31
поделиться

COM - это много разных вещей. Я рекомендую книгу Дона Бокса, Essential COM, как хороший способ изучения.

Как минимум, COM-объект - это объект, который предоставляет один интерфейс, IUnknown. Этот интерфейс имеет 3 метода: AddRef, Release и QueryInterface. AddRef / Release позволяет подсчитывать ссылки на объект и автоматически удалять при освобождении последней ссылки. QueryInterface позволяет запрашивать объект для других интерфейсов, которые он поддерживает.

Большинство объектов COM доступны для обнаружения. Они зарегистрированы в реестре под HKEY_CLASSES_ROOT с идентифицирующим идентификатором GUID, который называется CLSID (идентификатор класса). Это позволяет вам вызывать CoCreateInstance для создания экземпляра зарегистрированного объекта, если вы знаете GUID. Вы также можете запросить реестр через COM API для CLSID, который поддерживает ProgId (идентификатор программы), который является строкой, идентифицирующей объект.

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

Некоторые объекты поддерживают запуск в другом процессе, в другом потоке или на другом компьютере. COM поддерживает сортировку для этих типов объектов. Если возможно, стандартный маршаллер может использовать typelib объекта для маршалинга вызовов к объекту, но также могут быть предусмотрены и специальные маршаллеры.

И есть еще много всего для COM-объектов, я лишь слегка поцарапываю поверхность.

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

Некоторые объекты поддерживают запуск в другом процессе, в другом потоке или на другом компьютере. COM поддерживает сортировку для этих типов объектов. Если возможно, стандартный маршаллер может использовать typelib объекта для маршалинга вызовов к объекту, но также могут быть предусмотрены и специальные маршаллеры.

И есть еще много всего для COM-объектов, я лишь слегка поцарапываю поверхность.

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

Некоторые объекты поддерживают запуск в другом процессе, в другом потоке или на другом компьютере. COM поддерживает сортировку для этих типов объектов. Если возможно, стандартный маршаллер может использовать typelib объекта для маршалинга вызовов к объекту, но также могут быть предусмотрены и специальные маршаллеры.

И есть еще много всего для COM-объектов, я лишь слегка поцарапываю поверхность.

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

Некоторые объекты поддерживают запуск в другом процессе, в другом потоке или на другом компьютере. COM поддерживает сортировку для этих типов объектов. Если возможно, стандартный маршаллер может использовать typelib объекта для маршалинга вызовов к объекту, но также могут быть предусмотрены и специальные маршаллеры.

И есть еще много всего для COM-объектов, я лишь слегка поцарапываю поверхность.

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

Некоторые объекты поддерживают запуск в другом процессе, в другом потоке или на другом компьютере. COM поддерживает сортировку для этих типов объектов. Если возможно, стандартный маршаллер может использовать typelib объекта для маршалинга вызовов к объекту, но также могут быть предусмотрены и специальные маршаллеры.

И есть еще много всего для COM-объектов, я лишь слегка поцарапываю поверхность.

3
ответ дан 28 November 2019 в 23:31
поделиться

Вид 10 000 футов:

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

Идентификаторы GUID достаточно хорошо описаны в Википедии http: //en.wikipedia .org / wiki / Globally_Unique_Identifier

Я всегда понимал, что файлы LIB являются объектными файлами для компоновщика C ++. Они содержат код для всех объектов в файле cpp. Компилятор оптимизирует, когда связывает игнорируемые части объектного файла, которые ему не нужны.

Кто-то, пожалуйста, уточните, я уверен, что я кое-что из этого вырезал.

1
ответ дан 28 November 2019 в 23:31
поделиться

COM - это объектная модель компонентов Microsoft, двоичный интерфейс, совместимый для программ, написанных на разных языках. взаимодействовать друг с другом. Это «эволюционный шаг» между технологиями OLE и .NET.

Если вы хотите узнать о COM с точки зрения C ++, взгляните на Essential COM Дона Бокса или ATL Internals от Rector and Sells.

Группа microsoft.public.vc.atl , вероятно, лучшее место для того, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

двоично-совместимый интерфейс для программ, написанных на разных языках, для взаимодействия друг с другом. Это «эволюционный шаг» между технологиями OLE и .NET.

Если вы хотите узнать о COM с точки зрения C ++, взгляните на Essential COM Дона Бокса или ATL Internals от Rector and Sells.

Группа microsoft.public.vc.atl , вероятно, лучшее место для того, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

двоично-совместимый интерфейс для программ, написанных на разных языках, для взаимодействия друг с другом. Это «эволюционный шаг» между технологиями OLE и .NET.

Если вы хотите узнать о COM с точки зрения C ++, взгляните на Essential COM Дона Бокса или ATL Internals от Rector and Sells.

Группа microsoft.public.vc.atl , вероятно, лучшее место для того, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

между технологиями OLE и .NET.

Если вы хотите узнать о COM с точки зрения C ++, взгляните на Essential COM Дона Бокса или Internals ATL Ректора и Продает.

Группа microsoft.public.vc.atl , вероятно, лучшее место для того, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

между технологиями OLE и .NET.

Если вы хотите узнать о COM с точки зрения C ++, взгляните на Essential COM Дона Бокса или Internals ATL Ректора и Продает.

Группа microsoft.public.vc.atl , вероятно, лучшее место для того, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

atl , вероятно, лучшее место, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

atl , вероятно, лучшее место, чтобы задавать вопросы, ответы на которые вы не можете получить здесь. В первую очередь это группа новостей ATL, но, похоже, это группа новостей с наибольшим трафиком для общих вопросов COM. (просто будьте готовы к обычной краткости и нетерпению группы новостей)

0
ответ дан 28 November 2019 в 23:31
поделиться

COM is a method to develop software components, small binary exe, that provides services for applications, OS and other components. Developing custom COM comnponent is like developing Object oriented API. GUID is a Global unique ID and used to identify a COM component uniquely.

You can refer a very good book by Dale Rogerson for more details. Inside COM

0
ответ дан 28 November 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: