Менеджер компонентов
Эта статья нуждается в дополнительных цитатах для проверки . ( июнь 2009 г. ) |
В Apple Macintosh компьютерном программировании Component Manager был одним из многих подходов к совместному использованию кода, которые возникли на Macintosh до PowerPC . Первоначально он был представлен как часть QuickTime , которая оставалась частью классической Mac OS, в которой он использовался наиболее интенсивно. [1]
Технические детали
[ редактировать ]Компонент представлял собой фрагмент кода, предоставляющий различные функции, которые могли вызываться клиентами. Каждая функция идентифицировалась 16-битным целочисленным идентификационным кодом со знаком. Неположительные коды были зарезервированы для предопределенных функций, которые должны были пониматься всеми компонентами — открытие/закрытие экземпляра компонента, запрос о поддержке функции и т. д. Значение положительных кодов функций зависело от типа компонента.
Экземпляр компонента был создан путем открытия компонента. Это вызвало функцию open компонента для выделения и инициализации любого необходимого хранилища для экземпляра. Закрытие экземпляра привело к избавлению от этого хранилища и сделало недействительными все ссылки на этот экземпляр.
На компоненты и экземпляры компонентов ссылались 32-битные значения, которые не были указателями . Вместо этого они интерпретировались как ключи во внутренних таблицах Диспетчера компонентов. Эти ссылки были созданы таким образом, что, как только они станут недействительными, эти значения вряд ли станут действительными в течение длительного времени. Это свело к минимуму вероятность возникновения неясных ошибок из-за висячих ссылок.
Компоненты идентифицировались кодами OSType с указанием их типа , подтипа и « производителя ». Например, типом компонента может быть «компрессор растровых изображений», подтипы которого могут существовать, среди прочего, для JPEG, H.261, Sorenson и Intel Indeo. Можно было зарегистрировать несколько компонентов с одинаковыми идентификационными кодами, что давало альтернативные реализации одного и того же алгоритма, например, с использованием аппаратного и программного обеспечения, соотношения скорости и качества или других критериев. Приложения могли запрашивать существование таких альтернатив и делать явный выбор между ними или позволить системе выбрать значение по умолчанию.
Среди доступных опций компонент может делегировать части своих функций другому компоненту в виде подкласса для повторного использования кода. Также один компонент мог перехватить другой, а это означало, что весь доступ к захваченному компоненту должен был осуществляться через захватывающий компонент.
Компоненты Mac OS
[ редактировать ]Mac OS накопила множество типов компонентов:
- В составе QuickTime были кодеки изображений, обработчики мультимедиа, обработчики медиаданных, драйверы дигитайзеров видео, импортеры и экспортеры форматов файлов и многие другие.
- В версии 3.0 Sound Manager перешел на преимущественно компонентную архитектуру: устройства вывода звука были представлены как компоненты, а также существовали типы компонентов для микширования нескольких каналов, преобразования между различными частотами дискретизации и размерами выборки, а также кодирования и декодирования сжатых форматов.
- AppleScript представил концепцию языков сценариев, реализованных в виде компонентов.
- ColorSync реализовал различные методы сопоставления цветов в качестве компонентов.
- «Масштаберы шрифтов» QuickDraw GX представляли собой средства рендеринга для различных форматов шрифтов.
Ссылки
[ редактировать ]- ^ Вайнштейн, Стивен Б. (2005). Мультимедийный Интернет . Спрингер. стр. 355 . ISBN 0-387-23681-3 .