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.