MEF‘in en önemli bileşenlerinden biri katalog(catalog) kavramı. Belli ihtiyaçlar ve yaklaşımlar doğrultusunda MEF içinde kullanabileceğimiz çeşitli kataloglar mevcut. Bunların ne olduğuna geçmeden, bu katalog kavramı tam olarak ne önce bunu anlayalım…

Managed Extensibility Framework(MEF)‘de, “Part”lar bu kataloglar ile framework bünyesine dahil olur. Bir başka deyişle, MEF, [Export] ettiğimiz bileşenlerimizi(ki bunlar “Part”lar oluyor) bu kataloglar yardımı ile bulur. Yapboz parçalarının tutulduğu kutu, ya da bilgisayar parçalarının birleştiği kasa gibi düşünebiliriz aslında. Bu kataloglar neler, kısaca bakalım bir, ne çıkacak içlerinden…:)

DirectoryCatalog

Adından aslında anlaşılıyor. “DirectoryCatalog”, MEF’de “Part”ların, belli bir dizindeki assembly’ler içinde aranmasını sağlıyor. Yani MEF ile geliştirdiğimiz uygulama eğer DirectoryCatalog kullanıyrsa, belirttiğimiz bir dizin içerisindeki dosyalarda(*.dll gibi), [Export] ettiğimiz tipleri arayacaktır. Sanırım MEF’de en çok kullanılan, daha doğrusu tercih edilen katalog budur…Yanlız burda hatırlatmak gereken bir nokta var. DirectoryCatalog’u Silverlight’ın mimarisinden dolayı, Silverlight uygulamalarında kullanamıyoruz.

AssemblyCatalog

MEF’in “Part”ları bellirtilen assembly’de aramasını sağlayan katalog tipi AssemblyCatalog oluyor. Uygulamamızın kendi içinde gizlediğimiz [Export]‘ları kullanabilmek adına kullanımı tercih edilebilir. Ya da “reflection” ile yarattığımız “assembly”leri kullanmak için de kullanabiliriz.

TypeCatalog

MEF’in belli tipte “Part”ları aramasını belirttiğimiz katalog tipi de TypeCatalog oluyor. Bu uygulama içersindeki belirttiğimiz tipte olan tüm [Export]‘ları MEF tarafından kullanılabilir hale getiriyor.

AggregateCatalog

MEF’in birden fazla “Catalog” ile arama yapmasını istediğimiz zaman AggregateCatalog’dan faydalanıyoruz. Bu katalog tipi, çalışma zamanında farklı katalogları bünyesine ekleyerek, birden fazla katalog tipinde MEF Part’larının aranmasını sağlıyor.

Bu sefer hiç kod yazmadık ama MEF için önemli bir kavramı biraz daha netleştirmeye çalıştık. Umarım faydalı olmuştur. Bu kataloglar ile örnekleri ilerleyen yazılarda yapıyor olacağım…Farklarını,artılarını,eksilerini çok daha iyi beraber anlıyor oluruz…Şimdilik bu kadar…