Yönetilen Genişletilebilirlik Çerçevesini nasıl kullanıyorsunuz?


10

MEF ile yaklaşık 2 haftadır çalışıyorum. MEF'in ne olduğunu düşünmeye, MEF'in nasıl kullanılacağını öğrenmek için araştırmaya ve son olarak 3 modüllü bir Sunucu uygulamaya başladım. Sözleşmelerin anlaşılması kolay ve modüller kolayca yönetiliyor.

MEF'in çok pratik bir kullanımı olmasına rağmen, ne ölçüde merak ediyorum? Yani herkes genişletilebilirlik için mevcut uygulamaları yeniden mi yazacak?

Evet, kulağa hoş geliyor ve delicesine pratik değil. Konuşma tarzı:

  • MEF programlamadaki mevcut eğilimleri nasıl etkiler?

  • MEF'i kullanma fırsatı aramaya başladınız mı?

  • genişletilebilirlikten yararlanabilecek mevcut bir uygulamanın büyük bir yeniden yazılmasını planlamaya başladınız mı?

Bununla birlikte, sorularım şunlardır:
Genişletilebilirliğe sahip yeni bir projeyi ne zaman planlamam gerektiğini nasıl bilebilirim?
genişletilebilirlik için mevcut bir projenin yeniden yazılması gerekip gerekmediğini nasıl bileceğim?

MEF kullanan var mı?

Yanıtlar:


8

MEF kullanan var mı?

MVVM desenini kullanarak bir Silverlight projesi üzerinde çalışıyorum. Arayüzler ve manuel bağımlılık enjeksiyonu (ihtiyaca göre yapıcı veya mülk enjeksiyonu) yoluyla tüm VM'leri gerektiği gibi birbirine bağlayarak başladık. Acı çekmeye başladı ve MEF'i temel olarak, görünüm modellerinde kullanılan belirli hizmetleri dışa aktarmak ve bunları ihtiyaç duyan görünüm modellerine aktarmak için bir bağımlılık enjeksiyon çerçevesi olarak kullanmaya başladık. Mükemmel ve çok az kod ile çalışır.

Evet, MEF'in bağımlılık enjeksiyonu için tasarlanmadığını ve gerçek bağımlılık enjeksiyon çerçevesinin çok daha iyi olacağını söyleyecek bazı saflar var . Ancak, MEF, büyük bir artı olan .NET'e doğru pişirilir ve ihtiyaçlarımızı karşılamak için yeterliydi.

genişletilebilirliği olan yeni bir projeyi ne zaman planlamam gerektiğini nasıl bilebilirim? genişletilebilirlik için mevcut bir projenin yeniden yazılması gerekip gerekmediğini nasıl bileceğim?

IMO, endişeleri her zaman uygun şekilde ayırmalı ve farklı modüllerin bağımsız olarak değişmesine izin vermek için arayüzler kullanmalısınız. Bunu doğru yaparsanız , genişletilebilirliğe ihtiyaç duyduğunuzda , MEF'in eklenmesi kolay olmalıdır. Ancak, genişletilebilirlik gereksinimleri olmayan bir projeye başlamam ve MEF'yi her ihtimale karşı koyamazdım. Bir ihtiyaç olmasını beklerdim. Mevcut projeler için, bir ihtiyaç ortaya çıkarsa, bir şey yapmamaya karşı alternatif çözümlere karşı MEF'i kullanmak için projeyi yeniden kablolama çabasını değerlendiririm ve hangi kazançları görürsünüz.


6

İnsanların yaptığı hata ve bence bunun nedeni (Yönetilebilir Genişletilebilirlik Çerçevesi) MEF'in yalnızca genişletilebilirlik için pratik olduğunu varsaymaktır. MEF gerçekten üç temel konuyu ele alır: genişletilebilirlik, keşif ve meta veriler. Son ikisi, hiçbir zaman tek bir eklenti veya uzantı görmeyecek bir uygulama için bile çok güçlüdür.

Bu, bir IOC kapsayıcısı olarak keşif gücü hakkında yazdığım bir makale: http://www.informit.com/articles/article.aspx?p=1635818

MEF'i çoğu kurumsal iş uygulamasında kullanıyorum çünkü Silverlight'ta modüler uygulamalar oluşturmayı ve sürdürmeyi daha hızlı ve daha kolay hale getiriyor.


Makalenizi okudum - en az iki kez;)
IAbstract

4

Şu anda MEF'i Havuz desenini içeren birkaç projede kullanıyorum.

Biri birim sınama sırasında farklı havuz türleri kullanıyor, diğeri ise yerel (doğrudan DB'ye), uzak (WCF) ve test havuzlarını kullanıyor.

Her iki proje de depo türlerini kod veya yapılandırma yoluyla değiştirebilir ve MEF meta verileri / Lazy türlerini temel alır.

Bugüne kadar, her iki proje de inanılmaz derecede iyi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.