Компонент - готовый к использованию фрагмент двоичного кода, содержащихся либо в динамической библиотеке DLL, либо в ехе файле, который может быть при необходимости загружен в память и стандартным образом динамически подключен к приложению.
Выделяют две основные черты компонентов:
1. динамически связанная - связь компонента и приложения (связь между вызовом функции в приложении, ее кодом в теле компонента) осуществляется не на этапе компоновки приложения, а непосредственно во время выполнения.
2. скрытая внутренняя реализация (инкапсуляция) означает, что для приложения не важно, и приложение не знает как именно реализован компонент внутри, а знает только как вызывать его функции.
При разработке приложения из компонентов основной код приложения и компоненты компилируются отдельно, на этапе исполнения происходит динамическое связывание между вызовами функции в теле приложения и самими функциями, реализованными в компонентах.
Модификация или расширение компонента (приложения) сводится к замене одного из его компонентов новой версией.
Если приложение состоит из компонентов, оно может быть распределенным, к этому располагают 2 особенности:
3. приложение уже разделено на составные части, которые могут находиться в частности на различных ЭВМ;
4. так как компоненты заменяемы, при организации распределенной архитектуры приложения, в него могут быть добавлены специальные компоненты, обеспечивающие связь (например, по локальной сети, Internet).
Приложения, использующие компонент, являются клиентом для данного компонента, при этом компонент подключается к приложению клиенту при помощи единого стандартного интерфейса. В современных версиях Windows в качестве такого интерфейса используется технология СОМ.
Оба эти определения имеют право на существование COM (Component Object Model) - модель многокомпонентных Объектов, позволяющая приложению манипулировать удаленными программными объектами, точнее вызывать те или иные функции (методы) этих объектов так, как будто эти объекты находятся «рядом».
СОМ - стандарт (спецификация), которому должны следовать компоненты и клиенты, чтобы иметь возможность совместной работы. При этом компоненты должны быть стандартным образом зарегистрированы операционной системой. Используя схему объявлений СОМ (список зарегистрированных функций компонентов), клиенты могут динамически находить нужные компоненты.
Интерфейс СОМ включает в себя набор функций, которые реализуются компонентами и используются клиентами. Интерфейсом СОМ является определенная структура, содержащая в памяти массив указателей на функции, имеющиеся в компонентах, зарегистрированных в системе. Для организации взаимодействия между частями распределенного приложения, расположенного на различных ЭВМ, технология СОМ использоваться не может. Связано это с тем, что у ЭВМ, работающих раздельно нет общей области памяти, в которой мог бы располагаться интерфейс СОМ. Для организации распределенного взаимодействия компонентов используется технология DCOM (Distributed Component Object Model) (модель распределенных многокомпонентных объектов).
DCOM - программная архитектура, используемая для организации взаимодействия программных компонентов, расположенных на нескольких компьютерах сети. Приложение на одной из ЭВМ может использоваться DCOM для передачи сообщения (называемого удаленным вызовом процедуры) компоненту на другую ЭВМ. DCOM автоматически устанавливает соединение, передает сообщение и возвращает ответ удаленным компонентам. В принципе в случае использования DCOM неважно, находится ли приложение и компонент на разных ЭВМ или на одной. Однако использование DCOM медленнее, чем СОМ.