Лекция: Технология COM.
COM (Component Object Model) — это метод разработки программных компонентов, небольших двоичных исполняемых файлов, которые предоставляют необходимые сервисы приложениям, операционным системам и другим компонентам. Другими словами, COM определяет стандартный механизм, с помощью которого одна часть программного обеспечения предоставляет свои сервисы другой независимо от способа их реализации.
COM — это не язык программирования, а подход (спецификация) к созданию программ, обеспечивающий взаимодействие программ любых типов. Компоненты COM объединяются друг с другом для создания приложений или систем компонентов. Компоненты можно менять во время выполнения, без перекомпиляции или перекомпоновки приложения. COM — это основа, на которой построены такие технологии Microsoft, как ActiveX, DirectX и OLE.
COM обеспечивает создание распределенных модульных систем в архитектуре «клиент-сервер». COM имеет следующие преимущества по сравнению с традиционной архитектурой программных систем:
· COM предоставляет стандартный набор функций для доступа к провайдеру сервиса (COM-серверу), получения информации о предоставляемых им сервисах и вызова требуемого сервиса. В качестве COM-сервера может выступать операционная система или приложение.
· COM использует объектно-ориентированные концепции для обеспечения модульности при построении сложных распределенных систем, а также для повторного использования готовых компонентов и их разработки с сохранением совместимости с предыдущими версиями.
· COM реализует модель вычислений «клиент-сервер», что обеспечивает преимущества распределенной обработки данных.
· COM обеспечивает вызов сервисов в сетевом окружении, независимо от расположения COM-сервера.
СОМ является объектно-ориентированной технологией, но она отличается от других объектно-ориентированных технологий:
· СОМ-объект поддерживает более одного интерфейса
· Класс в СОМ понимается как описание конкретной реализации набора интерфейсов
· СОМ-объекты поддерживают только наследование интерфейса, т.е. потомок должен самостоятельно определить код методов родителя.