Menedżer komponentów

W programowaniu komputerów Apple Macintosh Component Manager był jednym z wielu podejść do udostępniania kodu, które powstały na komputerach Macintosh przed PowerPC . Pierwotnie został wprowadzony jako część QuickTime , który pozostał częścią klasycznego systemu Mac OS , który używał go najczęściej.

Szczegóły techniczne

Komponent był fragmentem kodu, który zapewniał różne funkcje, które mogą być wywoływane przez klientów . Każda funkcja została zidentyfikowana przez podpisany 16-bitowy kod identyfikacyjny będący liczbą całkowitą. Kody niedodatnie były zarezerwowane dla predefiniowanych funkcji, które powinny być zrozumiałe dla wszystkich komponentów — otwórz/zamknij instancję komponentu, zapytaj, czy funkcja jest obsługiwana itp. Znaczenie dodatnich kodów funkcji zależało od typu komponentu.

Instancja komponentu została utworzona przez otwarcie komponentu. To wywołało funkcję open komponentu w celu przydzielenia i zainicjowania niezbędnej pamięci dla instancji. Zamknięcie instancji pozbyło się tej pamięci i unieważniło wszystkie odniesienia do tej instancji.

Do komponentów i instancji komponentów odwoływały się wartości 32-bitowe, które nie były wskaźnikami . Zamiast tego zostały zinterpretowane jako klucze do wewnętrznych tabel Menedżera komponentów. Odniesienia te zostały wygenerowane w taki sposób, że gdy staną się nieważne, mało prawdopodobne jest, aby wartości te stały się ponownie ważne przez długi czas. Zminimalizowało to ryzyko wystąpienia niejasnych błędów z powodu zawieszonych odniesień.

Komponenty zostały zidentyfikowane za pomocą kodów OSType podających ich typ , podtyp oraz „ producenta ”. Na przykład typem komponentu może być „kompresor obrazu rastrowego”, którego podtypy mogą istnieć między innymi dla JPEG, H.261, Sorenson i Intel Indeo. Możliwe było zarejestrowanie wielu komponentów z dokładnie tymi samymi kodami identyfikacyjnymi, co dało alternatywne implementacje tego samego algorytmu, na przykład przy użyciu sprzętu kontra oprogramowanie, kompromis między szybkością a jakością lub innymi kryteriami. Aplikacje mogły sprawdzać istnienie takich alternatyw i dokonywać wyraźnych wyborów między nimi lub pozwolić systemowi wybrać domyślną.

Wśród dostępnych opcji komponent może delegować część swoich funkcji do innego komponentu jako formę podziału na podklasy w celu ponownego wykorzystania kodu. Możliwe było również przechwycenie jednego komponentu przez inny , co oznaczało, że wszystkie dostępy do przechwyconego komponentu musiały przechodzić przez ten przechwytujący.

Komponenty systemu Mac OS

Mac OS zgromadził ogromną różnorodność typów komponentów:

  • QuickTime zawierał kodeki obrazu, programy obsługi multimediów, programy obsługi danych multimediów, sterowniki digitalizatora wideo, importery i eksportery formatów plików oraz wiele innych.
  • W wersji 3.0 Menedżer dźwięku przeszedł na architekturę opartą głównie na komponentach: urządzenia wyjściowe dźwięku były reprezentowane jako komponenty, a także istniały typy komponentów do miksowania wielu kanałów, konwersji między różnymi częstotliwościami próbkowania i rozmiarami próbek oraz kodowania i dekodowania skompresowanych formatów.
  • AppleScript wprowadził koncepcję języków skryptowych realizowanych jako komponenty.
  • ColorSync zaimplementował różne metody dopasowywania kolorów jako komponenty.
  • QuickDraw GX były rendererami dla różnych formatów czcionek.