Bileşen Kategorileri Yöneticisi Uygulaması
Kullanılabilir bileşenlerin sayısı arttıkça, bu bileşenleri yönetmek giderek zorlaşır. Kullanıma sundukları arabirimler ve gerçekleştirdikleri görevler açısından birçok bileşen benzer işlevler sunar.
Genellikle belirli bir bağlamda kullanılabilecek bileşenleri listelemek gerekir. Buna örnek olarak OLE bileşik belgelerinde kullanılan Nesne Ekle iletişim kutusu ve OLE denetimlerinde kullanılan Denetim Ekle iletişim kutusu verilebilir. Bu iletişim kutuları, bileşik belgeler veya denetimler için arabirim sözleşmelerini gerçekleştiren (veya yerine getirdiğini iddia eden) tüm bileşenleri listeler. Bu mevcut kategoriler (OLE belgesi, OLE denetimi) tam arabirim imzası anlamına gelmez. OLE belgelerinin belirli bir çekirdek arabirim kümesini (örneğin, IOleObject veya IPersistStorage) kullanıma sunmaları gerekir, ancak IOleLinkgibi ek arabirimleri de kullanıma açabilir.
Geçmişte bileşenler, bileşene karşılık gelen HKEY_CLASSES_ROOT\CLSID\{...} kayıt defteri anahtarına alt anahtar olarak insan tarafından okunabilir bir ad ("Eklenebilir", "Denetim" vb.) eklenerek etiketlenmiştir. Bu, kategorilerin merkezi tanımı için iyi çalışır, ancak birçok bağımsız taraf yeni kategoriler tanımladığında çakışmaları risk eder. COM'un diğer alanlarında olduğu gibi, genişletilebilir bir ad alanı sağlamanın çözümü genel olarak benzersiz tanımlayıcıların (GUID) kullanılmasında yatmaktadır. İnsan tarafından okunabilir bir ad kullanmak yerine, her kategoriye benzersiz bir sayı (CATID) atanır.
Mevcut kategorilere ayırmayla ilgili bir diğer sınırlama, bileşenin kendi özelliklerini ifade etmeyle sınırlı olmasıdır. Birçok bileşen, kapsayıcılardan belirli özellikler gerektirir. Böyle bir bileşen kapsayıcıya eklendiğinde, bileşen kategorilerinden biri tarafından ima edilen sözleşmeleri yerine getirse bile ekleme başarısız olabilir veya beklenmedik şekilde davranabilir. Belirli durumlarda başarıyla kullanılabilecek bileşenleri listelemek için hem bileşenin hem de kapsayıcının özellikleri dikkate alınmalıdır.
Bu önemli noktalar nedeniyle, mevcut kategorilerde aşağıdaki değişiklikler yapılmıştır:
- Kategoriler, genel olarak benzersiz tanımlayıcılar olan CATID'ler kullanılarak belirtilir.
- HKEY_CLASSES_ROOT\CLSID kayıt defteri anahtarının Bileşenleri alt anahtarı altında, "Uygulanan Kategoriler" ve "Gerekli Kategoriler" adlı iki ayrı alt anahtar geliştirilmiştir. Bu alt anahtarlar, bileşen tarafından sağlanan veya bileşenin kapsayıcısının sağlaması gereken CATID listelerini içerir.
Bileşen kategorilerini yönetmeyi kolaylaştırmak için, kategoriler kayıt defterinde merkezi bir yerde listelenir: HKEY_CLASSES_ROOT\Component Categories. Bu anahtar, yüklü kategorileri hem CATID'leriyle hem de yerelleştirilmiş, okunabilir adlarla listeler.
Daha fazla bilgi için aşağıdaki konulara bakın:
- Bileşen Özelliklerine Göre Kategorilere Ayırma
- Kapsayıcı Özelliklerine Göre Kategorilere Ayırma
- Bileşen Kategorileri Yöneticisi
- Varsayılan Sınıfları ve İlişkilendirmeleri
- Bileşen Kategorilerini Tanımlama
- Simgeleri Kategori İlişkili Hale Getirme