Complus applications что это за программа и нужна ли она
Перейти к содержимому

Complus applications что это за программа и нужна ли она

  • автор:

Отслеживание COM+

Служба отслеживания COM+ позволяет создавать собственные административные и диагностические программы, которые отслеживают состояние и производительность запущенных приложений COM+. Отслеживание COM+ предоставляет статистические сведения об использовании приложений COM+, а также сведения о состоянии, такие как приостановка или перезапуск экземпляра серверного приложения COM+. Средства могут использовать данные отслеживания при диагностическом мониторинге или в целях отображения. Например, средство администрирования служб компонентов использует отслеживание COM+ для отображения состояния экземпляров приложений COM+ в папках «Приложения COM+ и выполняющихся процессов».

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

Инструментирование COM+ Отслеживание COM+
Детализированные данные. Служба инструментирования COM+ уведомляет зарегистрированных подписчиков об отдельных дискретных событиях (например, метод называется , уничтожен объект), которые происходят в экземпляре приложения COM+. Агрегированные данные. Отслеживание COM+ вычисляет и периодически обновляет часто используемые метрики для состояния и производительности экземпляров приложений COM+.
Подписчики событий обычно вычисляют метрики самостоятельно, используя нерегламентированные алгоритмы и политики. Метрики вычисляются автоматически службой отслеживания COM+. Все потребители получают одни и те же данные без поддержки пользовательских метрик.
После регистрации подписки потребитель не получает никаких сведений об экземпляре приложения COM+, пока не произойдет событие. Данные отслеживания для всех экземпляров приложений COM+ можно получить в любое время.
Поддерживает только механизм подписки на основе событий COM+ для потребителей. Поддерживает как механизм подписки на основе событий COM+, так и опрос в интерфейсе локального сервера COM.
Примеры
Уведомления о вызове или возврате метода. Среднее время отклика на вызов, количество вызовов, которые были успешно завершены или завершились сбоем за последний период времени, количество объектов, которые в настоящее время находятся в вызове метода.
Уведомления о добавлении объекта в пул объектов или получении из этого пула объектов. Количество объектов в пуле, общее количество объектов.
Уведомления о запуске, приостановке или перезапуске серверного приложения COM+. Состояние процесса приложения сервера COM+ (например, приостановлено или переработано).
Уведомления о событиях запуска, подготовки, прерывания и фиксации транзакций. Эквивалент отсутствует.
Уведомления об успешных и неудачных попытках проверки подлинности на уровне вызова метода. Эквивалент отсутствует.

Хотя отслеживание COM+ является более ограниченным с точки зрения область данных и гибкости для вычисления метрик, метрики, которые оно предоставляет, должно быть достаточно для широкого спектра административных и диагностических программ. Использование отслеживания COM+, когда это возможно, может упростить проектирование этих программ. Кроме того, использование отслеживания COM+ в производственных системах может значительно снизить производительность, что делает его более подходящим для средств мониторинга в режиме реального времени.

Как служба отслеживания COM+ собирает данные

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

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

Данные отслеживания организованы в соответствии с процессом, который создал данные. Данные на уровне отдельных приложений или компонентов COM+ в процессе также доступны для потребителей, которым требуется эта информация.

Сравнение событий и опросов

Отслеживание COM+ поддерживает два механизма получения данных отслеживания с сервера отслеживания: механизм подписки на основе событий COM+ и интерфейс локального сервера COM.

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

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

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

Обратная связь

Были ли сведения на этой странице полезными?

Сервисы в Windows XP. Отключаем неиспользуемые и ненужные — часть2

Во время работы Windows XP запускается и работает много служб. Просмотреть весь список служб можно нажав «Пуск»- «Панель управления»- «Администрирование» «Службы». Но не все службы необходимы для нормальной работы компьютера. Ниже приводиться список служб, которые могут быть отключены в большинстве случаев без вреда для стабильности системы и при этом увеличив быстродействие системы в целом. На самом деле служб может быть больше.

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

  • Сервер (Server)
    • Обеспечивает поддержку общий доступ к файлам, принтерам и именованным каналам для данного компьютера через сетевое подключение.
    • Имя службы: lanmanserver
    • Исполняемый файл или название процесса: svchost.exe
    • Эту службу можно отключить если нет сети, поэтому режим — Отключено.
    • Позволяет просматривать страницы папок обмена удаленных компьютеров.
    • Имя службы: ClipSrv
    • Исполняемый файл или название процесса: clipsrv.exe
    • Если эта служба остановлена, программа просмотра страниц папок обмена не может обмениваться информацией с удаленными компьютерами. Если эта служба отключена, любые службы, которые явно зависят от нее, не могут быть запущены. Данная служба у меня в режиме — Отключено.
    • Поддерживает сквозную идентификацию событий входа учетной записи для компьютеров домена.
    • Имя службы: Netlogon
    • Исполняемый файл или название процесса: lsass.exe
    • Данную службу можно перевести в режим — Отключено.
    • Управляет объектами папки Сеть и удаленный доступ к сети, отображающей свойства локальной сети и подключений удаленного доступа.
    • Имя службы: Netman
    • Исполняемый файл или название процесса: svchost.exe
    • Данная служба необходима для поддержки сетевых соединений. Рекомендуется режим — Вручную.
    • Поддержка службы уведомления о системных событиях (SENS), обеспечивающей автоматическое распространение событий подписавшимся компонентам COM.
    • Имя службы: EventSystem
    • Исполняемый файл или название процесса: svchost.exe
    • Если данная служба остановлена, SENS будет закрыта и не сможет предоставлять уведомления входа и выхода. Если данная служба отключена, все явно зависящие от нее службы не смогут запуститься. Рекомендуемый режим — Вручную.
    • Управление настройкой и отслеживанием компонентов COM+.
    • Имя службы: COMSysApp
    • Исполняемый файл или название процесса: dllhost.exe
    • Если данная служба остановлена, большинство компонентов COM+ не будет работать правильно. Если данная служба отключена, все явно зависящие от нее службы не смогут запуститься. Рекомендуемый режим — Вручную.
    • Данная служба осуществляет управление записью компакт-дисков с помощью IMAPI (Image Mastering Applications Programming Interface).
    • Имя службы: ImapiService
    • Исполняемый файл или название процесса: imapi.exe
    • Если стоит популярный пакет для записи дисков Nero, то зачем нужна эта служба? Правда, в журнале событий после каждого запуска системы остаются красные отметки, но это исправимо: Администрирование — Службы компонентов — Корень консоли — Службы компонентов — Компьютеры — Мой компьютер — Настройка DCOM — Microsoft IMAPI. Далее «Свойства», вкладка «Расположение», убираем галочку «Запустить приложение на данном компьютере». Для данной службы режим — Отключено.
    • Выполняет настройку жестких дисков и томов.
    • Имя службы: dmadmin
    • Исполняемый файл или название процесса: dmadmin.exe
    • Эта служба выполняется только во время процессов настройки конфигурации, а затем останавливается. Рекомендуемый режим — Вручную.
    • Выполняет функции восстановления системы. Чтобы остановить данную службу, следует отключить восстановление системы на вкладке Восстановление системы, в которую можно попасть, нажав правой кнопкой мыши на ярлыке Мой компьютер на рабочем столе и выбрав пункт Свойства
    • Имя службы: srservice
    • Исполняемый файл или название процесса: svchost.exe
    • Само название говорит, что служба должна стоять в режиме -Авто. В моём случае эта служба — Отключено.
    • Управляет синхронизацией даты и времени на всех клиентах и серверах в сети.
    • Имя службы: W32Time
    • Исполняемый файл или название процесса: svchost.exe
    • Если эта служба остановлена, синхронизация даты и времени не будет доступна. Если эта служба отключена, любые службы, которые явно зависят от нее, не могут быть запущены. Мне эта служба не нужна. Выставляем режим — Отключено.
    • Обеспечивает службы получения изображений со сканеров и цифровых камер.
    • Имя службы: stisvc
    • Исполняемый файл или название процесса: svchost.exe
    • Выставляем режим — Вручную.
    • Индексирует содержимое и свойства файлов на локальном и удаленных компьютерах, обеспечивает быстрый доступ к файлам с помощью гибкого языка запросов.
    • Имя службы: cisvc
    • Исполняемый файл или название процесса: cisvc.exe
    • Система индексирования может включиться не только во время простоя компьютера, но и в любое самое неподходящее время. Данную службу переводим в режим — Отключено.
    • Включить обнаружение UPnP-устройств в домашней сети.
    • Имя службы: SSDPSRV
    • Исполняемый файл или название процесса: svchost.exe
    • Данную службу отключаем. Режим — Отключено.
    • Позволяет регистрировать ошибки для служб и приложений, выполняющихся в нестандартной среде.
    • Имя службы: ERSvc
    • Исполняемый файл или название процесса: svchost.exe
    • При возникновении ошибки служба отправляет информацию в корпорацию Microsoft. Мне такая служба не нужна — Отключено.
    • Получает серийный номер переносного проигрывателя мультимедиа, подключенного к этому компьютеру.
    • Имя службы: WmdmPmSp
    • Исполняемый файл или название процесса: svchost.exe
    • Если эта служба остановлена, то защищенное содержимое может не загружаться на устройство. Оставим эту службу в режиме — Вручную.
    • Обеспечивает сетевой транспорт и безопасность для динамического обмена данными (DDE) для программ, выполняющихся на одном или на различных компьютерах.
    • Имя службы: NetDDE
    • Исполняемый файл или название процесса: netdde.exe
    • Если Ds не используете Сервер папки обмена (ClipBook), то режим — Отключено.
    • Данная служба собирает и хранит сведения о размещении и настройки сети, а также уведомляет приложения об их изменении
    • Имя службы: Nla
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемый режим — Вручную.
    • Посылает и получает сообщения, переданные администраторами или службой оповещений. Данная служба не имеет отношения к программа Windows Messenger.
    • Имя службы: Messenger
    • Исполняемый файл или название процесса: services.exe
    • Если Вы не используете Windows Messenger, то рекомендуемый режим — Отключено.
    • Предназначена для поддержки подключаемых модулей, которые позволяют сетевым протоколам проходить через брандмауэр и функционировать в случае использования общего доступа к подключению Интернета.
    • Имя службы: ALG
    • Исполняемый файл или название процесса: alg.exe
    • Рекомендуемый режим — Вручную.
    • Управляет политикой IP-безопасности и запускает ISAKMP/Oakley (IKE) и драйвер IP-безопасности.
    • Имя службы: PolicyAgent
    • Исполняемый файл или название процесса: lsass.exe
    • На домашнем компьютере данную службу можно — Отключить.
    • Предоставляет три службы управления: службу баз данных каталога, которая проверяет цифровые подписи файлов Windows; службу защищенного корня, которая добавляет и удаляет сертификаты доверенного корня центра сертификации с этого компьютера; и службу ключей, которая позволяет подавать заявки на сертификаты с этого компьютера.
    • Имя службы: CryptSvc
    • Исполняемый файл или название процесса: svchost.exe
    • Если эта служба остановлена, все эти службы управления не будут работать. По сути, эта служба проверяет подписи файлов Windows. Рекомендуемый режим — Авто.
    • Данная служба предоставляет возможность нескольким пользователям интерактивно подключаться к компьютеру и отображает рабочий стол и приложения на удаленных компьютерах. Является основой для удаленного рабочего стола (включая удаленное администрирование), быстрого переключения пользователей, удаленного помощника и служб терминалов.
    • Имя службы: TermService
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемый режим для этой службы — Вручную, но у меня — Отключено.
    • Данная служба управляет доступом к устройствам чтения смарт-карт.
    • Имя службы: SCardSvr
    • Исполняемый файл или название процесса: SCardSvr.exe
    • Если эта служба остановлена, этот компьютер не сможет считывать смарт-карты. Мне это не надо — Отключено.
    • Данная служба осуществляет управление приложениями, которые требуют поддержки в многопользовательской среде.
    • Имя службы: FastUserSwitching Compatibility
    • Исполняемый файл или название процесса: svchost.exe
    • Службу имеет смысл включить, если в вашей системе работает несколько пользователей, в противном случае нет необходимости в запуске этой службы. Если вы все-таки решили включить службу, то она позволит переключаться между пользователями без закрытия работающих программ, что бывают очень удобно. Рекомендуемый режим — Вручную.
    • Обеспечивает возможность работы центра справки и поддержки на этом компьютере.
    • Имя службы: helpsvc
    • Исполняемый файл или название процесса: svchost.exe
    • Данная служба необходима для запуска справочных документов Microsoft. Рекомендуемый режим — Вручную.
    • Данная служба управляет съемными носителями, дисками и библиотеками. Она необходима для работы со сменными носителями (магнито-оптическими приводами и т.д.).
    • Имя службы: NtmsSvc
    • Исполняемый файл или название процесса: svchost.exe
    • Если у вас стали возникать проблемы (перестал работать автозапуск и т.д.) с вашими CD-ROM, DVD-ROM и т.д., то поставьте значение Авто. Рекомендуемый режим — Вручную.
    • Обеспечивает поддержку Telephony API (TAPI) для программ, управляющих телефонным оборудованием и голосовыми IP-подключениями на этом компьютере, а также через ЛВС — на серверах, где запущена соответствующая служба.
    • Имя службы: TapiSrv
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемый режим — Вручную.
    • Управление темами оформления.
    • Имя службы: Themes
    • Исполняемый файл или название процесса: svchost.exe
    • Если используются темы, то режим — Авто. Меня устраивает классический вид. Режим — Отключено.
    • Управляет созданием теневых копий (контрольных точек состояния) дисковых томов, которые используются для архивации и восстановления или для иных целей.
    • Имя службы: VSS
    • Исполняемый файл или название процесса: vssvc.exe
    • Если эта служба остановлена, теневые копии томов для восстановления не будут доступны и архивация и восстановление могут не работать. Если эта служба отключена, любые службы, которые явно зависят от нее, не могут быть запущены. Рекомендуемый режим — Вручную.
    • Данная служба протоколирует системные события, такие как регистрация в Windows, в сети и изменения в подаче электропитания. Уведомляет подписчиков из разряда COM+ системное событие, рассылая оповещения.
    • Имя службы: SENS
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемое значение — Авто.
    • Эту службу можно назвать ключевой в Windows XP, ваша система не будет без нее работать, именно поэтому это единственная служба, которую вы не можете отключить через консоль Службы
    • Имя службы: RpcSs
    • Исполняемый файл или название процесса: svchost.exe
    • Эта служба всегда должна быть в режиме — Авто.
    • Позволяет удаленным пользователям изменять параметры реестра на этом компьютере
    • Имя службы: RemoteRegistry
    • Исполняемый файл или название процесса: svchost.exe
    • Данную службу рекомендуется перевести в режим — Отключено.
    • Данная служба обеспечивает поддержку универсальных PnP-устройств узла
    • Имя службы: UPNPhost
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемый режим — Отключено.
    • Обеспечивает службы установки программного обеспечения, такие, как назначение, публикация и удаление.
    • Имя службы: AppMgmt
    • Исполняемый файл или название процесса: svchost.exe
    • Рекомендуемый режим — Вручную.
    • Обеспечивает передачу данных между клиентами и серверами в фоновом режиме.
    • Имя службы: BITS
    • Исполняемый файл или название процесса: svchost.exe
    • Если служба BITS отключена, такие возможности, как Windows Update, не могут правильно работать. Особо и не надо. Режим — Отключено.
    • Ведет наблюдение за настройками и параметрами безопасности системы.
    • Имя службы: wscsvc
    • Исполняемый файл или название процесса: svchost.exe
    • Центр обеспечения безопасности не несет никакой дополнительной функциональности кроме облегчения доступа к настройкам защиты вашего компьютера. Рекомендуемый режим — Отключено.

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

    Сервисный Центр «IT-Doctor», ремонт ноутбуков, ремонт материнских плат и видеокарт, персональных компьютеров и оргтехники в Минске.

    Тел: (017) 374-61-01, Велком: (029) 181-61-01, МТС: (033) 661-71-01

    ОДО «ДааС» ,Свидетельсво о гос. Регистрации от 27.07.2000 № 101435641, выдано Мингорисполкомом. Регистрационный номер №196407 в торговом реестре РБ

    Практическое руководство. Развертывание приложения интеграции COM+

    Написанное приложение интеграции COM+ может понадобиться развернуть на другом компьютере. В этом разделе описывается перенос приложения COM+ с одного компьютера на другой.

    Перенос размещенного в COM+ приложения интеграции

    1. Убедитесь, что WCF установлен на обоих компьютерах.
    2. Экспортируйте приложение с компьютера A.
    3. Импортируйте приложение на компьютер B.
    4. Задайте корневую папку приложения. По традиции это %PROGRAMFILES%/ComPlus Applications/.
    5. Скопируйте файлы Application.config и Application.manifest из корневой папки приложения на компьютере A в корневую папку приложения на компьютере B.
    6. Отредактируйте адреса конечных точек службы в файле Application.config на компьютере B так, чтобы они указывали на соответствующий компьютер. Например, измените http://machineA/MyService на http://machineB/MyService .

    Перенос размещенного на веб-сервере приложения интеграции

    1. Убедитесь, что WCF установлен на обоих компьютерах.
    2. Экспортируйте приложение с компьютера A.
    3. Импортируйте приложение на компьютер B.
    4. Создайте виртуальный корневой каталог IIS на компьютере B.
    5. Скопируйте файл .SVC (имя_компонента.svc) и файл Web.config из виртуального корневого каталога на компьютере A в только что созданный виртуальный корневой каталог на компьютере B.

    См. также раздел

    • Общие сведения об интеграции с приложениями COM+
    • Практическое руководство. Настройка параметров службы COM+
    • Практическое руководство. Использование программы командной строки настройки модели служб COM+

    Не умер ли еще Microsoft COM, где можно найти его применение?

    Всем добрый день. Хотел бы получить краткие и понятные для новичка ответы на следующие вопросы:

    1. Что такое COM объект?
    2. Как происходит разработка COM объекта?
    3. Какие особенности реализации COM Microsoft?

    Прошу воздержаться от скидывания многостраничной литературы. Спасибо.

    Ниже предлагаю свой развернутый ответ, который, почему-то, неизменно возбуждает вопрос из нового заголовка статьи. Интересно было получить оценку сообщества профессионалов. Надеюсь и новички смогут найти что то полезное.

    COM объект – это объект, созданный-описанный-реализованный по правилам COM. Одним из основных правил COM является способ идентификации COM объектов по функциональности, которую они реализуют. Чтобы все-таки понять, что такое COM объект нам бы пришлось изучить не только достаточно обширную документацию по разработке COM объектов, но и разобрать хотя бы один практический пример, для которого применяется эта технология. Таким образом ответ на второй вопрос фактически является ответом и на первый вопрос.

    Кстати в документации Майкрософта по DirectX, практически в заголовке мы также, как и 20+ лет назад, видим заявление о необходимости использования СОМ:

    The Microsoft Component Object Model (COM) is an object-oriented programming model used by several technologies, including the bulk of the DirectX API surface. For that reason, you (as a DirectX developer) inevitably use COM when you program DirectX.

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

    Для примера можно рассмотреть задачу создания универсального проигрывателя видео файлов (видеоплеер).

    Проблема сложности реализации (не путать со сложностью вычислений в ран-тайме)

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

    Для осознания масштаба той программы, которая будет претендовать на универсальность, при проигрывании видео, допустим у нас есть по 10 форматов каждого типа. Таким образом наш универсальный проигрыватель видео должен уметь обрабатывать 10 * 10 * 10 = 1000 вариантов конфигурации проигрываемого файла, представьте себе switch на тысячу кейсов! Это конечно очень грубая абстракция для оценки масштаба программы для проигрывания видео, но, как ни странно, она дает очень наглядную и совершенно адекватную оценку масштаба проблемы, которую надо решить. Очевидно что в одном случае сложность определяется произведением целых чисел больших единицы, а в другом суммой плюс некоторая константа сравнимая с единицей. Кстати, по поводу оценки 10 «десять» вариантов – для тех, кто не в курсе – это очень умеренная оценка количества, в реальности это число оценивается в несколько десятков и, типов кодеков на самом деле, гораздо больше, чем три.

    Решение как обычно будет очевидным после того, как оно кем-то сформулировано. Вместо того что бы писать 1000 вариантов алгоритма на каждый из случаев жизни, надо:

    1. Написать отдельную компоненту (библиотеку‑DLL‑ку) для каждого декодера, распаковщика, рендерера, …, то есть в рассмотренном случае всего 30 ДЛЛ‑к вместо 1000 кейсов в свиче!
    2. Написать некоторую логику, которая находит нужные компоненты для проигрывания любого файла с произвольной конфигурацией типов данных внутри, инстанциирует эти компоненты, соединяет в цепочку для обработки входных потоков данных из файла

    Для тех, кто любит считать сложность по формулам, исходная была:

    O (произведение всех ni для всех m типов кодеков) где

    ni – число кодеков одного типа i,

    m – число типов кодеков.

    Во втором случае сложность равна:

    O(суммы Ni для m типов + L) где

    Ni – число кодеков одного типа i оформленных в виде компонент,

    m – число типов кодеков и

    L – сложность логики из пункта 2. Кажется, что N будет несколько выше, чем n так как нужно какое-то дополнительное оформление, на самом деле это оформление зачастую упрощает разработку так как заставляет сосредоточиться на действительно значимых аспектах реализации компоненты и обеспечивает существенный уровень унификации кода.

    Есть отдельный огромный плюс компонентного подхода. У нас появляется возможность разрабатывать декодеры (например, для примера Mpeg4, MP4) совершенно изолированно друг от друга, в разных проектах, разными людьми, параллельно, … как угодно! Единственное условие соответствие разработанной компоненты определенным правилам оформления компонент.

    И теперь можно остановиться на этих правилах оформления компонент поподробнее, их все равно надо понимать в каком-то виде для понимания всей технологии. Чтобы понять эти правила надо попробовать сформулировать логику по которой будет строиться и работать приложение видео плеера, основанное на использовании кодеков, каждый из которых может загружаться из отдельной ДЛЛ-ки.

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

    Как это выглядит на каком-то подобии схемы

    На картинке ниже можно видеть обычный результат работы видеоплеера при открытии файла. Результатом является граф построенный из найденных, загруженных и состыкованных для передачи-приема данных компонент разного типа необходимых для парсинга, декодирования и отображения данных после нажатия кнопки «плей».

    Как это ни странно в мире COM-объектов видео плеер НЕ декодирует, НЕ проигрывает видео сам, он строит связанный граф из компонент, которые будут проигрывать видео, а ПОТОМ транслирует пользовательские команды (такие как нажатие кнопок Стоп-Плей) в команды для этого графа. Уходя немного в сторону, можно отметить что граф тоже представлен некоторым объектом внутри видеоплеера и трансляция пользовательских команд к этому объекту тоже во многом регламентирована, не уверен что в рамках СОМ технологии.

    Я уже отметил, что метод оценки сложности реализации функциональности, который я использовал очень грубый (хотя и адекватный по полученным результатам). Если мы даже немного погрузимся в детали того как выбирается нужный кодек для очередного этапа обработки данных, например декодирования, мы увидим что даже отдельный кодек зависит не только от типа данных в стриме который ему надо обрабатывать но и от того, например, каким образом эти данные ему скармливает предыдущий кодек (например МР4 декодер должен получить данные от файл-реадера который соответствующим образом парсит файл-екстрактит видео и аудио потоки). По поводу всего этого растущего с глубиной реализации многообразия можно отметить, что все это многообразие успешно управляется в рамках концепции COM объектов. COM технологии позволяют поддерживать управляемость кода, избегать древней, но все такой же актуальной проблемы известной под названием DLL HELL.

    Я думаю, теперь вполне понятно, что смысл СОМ технологии или концепции состоит в том чтобы разбить решение одной очень объемной задачи, такой как разработка универсального видео плеера на множество подзадач которые можно решить независимо друг от друга. Нетрудно понять, что решение, которое делит огромную монолитную программу на множество независимых компонент и некоторое легковесное ядро для связывания этих компонент в законченное приложение требует поддержки со стороны операционной системы. Операционная система должна обеспечить поиск нужной компоненты для обработки выявленного формата данных, по сути ОС должна поддерживать базу данных исполняемых компонент и их описаний для того чтобы компоненты (обычно в виде ДЛЛ-к) можно было добавлять/регистрировать в этой базе данных, а потом находить и активировать-использовать эти компоненты по системе идентификации определенной в этой базе данных. Система идентификации компонент также является одной из глобальных инфраструктурных функций ОС, компоненты получают идентификаторы не зависимо от того добавлены они уже в базу данных компонент операционной системы или нет.

    Фабрики классов и другие паттерны проектирования

    Интересно отметить, что, например, применение паттерна проектирования с «фабриками классов» является неотъемлемой частью СОМ технологии. Чтобы иметь возможность создавать объекты классов, реализованных в ДЛЛ-ке по идентификатору (или по некоторой структуре с описанием функциональности требуемого объекта) каждая ДЛЛ-ка реализует один или несколько классов-фабрик для компонент, эти же классы-фабрики вызываются для получения информации о содержимом ДЛЛ-ки при регистрации в базе данных компонент.

    Насколько я это понимаю большинство паттернов проектирования были, как минимум, практически отработаны, если не изначально сформулированы именно в рамках разработки концепции СОМ-объектов, поэтому это очень полезная тема для изучения, и навсегда останется таковой, как мне кажется.

    Третий вопрос: Какие особенности реализации COM Microsoft?

    Честно говоря, для меня вопрос выглядит не корректно. На сколько я знаю СОМ технология реализована только Мелко-Мягкими :). А анализ особенностей предполагает сравнение с какой-то другой реализацией, а другой реализации просто не существует, по крайней мере я таких не знаю.

    Интересно в качестве ответа на 3-й вопрос попытаться сравнить КОМ технологию с какой-то в чем то сравнимой и/или чем-то похожей технологией. Возьмем для примера (неожиданно) технологию инстанциирования (создания, внедрения, …) объектов-бинов из Java Spring.

    MS COM по сути тоже является технологией инстанциирования COM объектов

    В какой-то степени Dependency Injection является интерпретацией идей создания объектов класса по его идентификатору, помноженной на идею создания некоторого универсального алгоритма для инстанциирования объектов на основе анализа кода.

    Таким образом Dependency Injection для бинов из Java Spring мне представляется в каком то смысле развитием и переносом в новый контекст идей, изначально сформулированных в рамках СОМ технологии. При этом я совершенно не исключаю что СОМ технология также в свое время была развитием и переносом в новый контекст идей, изначально сформулированных где-то еще раньше. Я не историк, я разработчик, историческая точность для меня не стоит на первом месте.

    • com
    • patterns and practices
    • directshow

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *