Come stai usando il Managed Extensibility Framework?

10

Ho lavorato con MEF per circa 2 settimane. Ho iniziato a pensare a cosa serva MEF, a cercare di scoprire come utilizzare MEF e infine a implementare un host con 3 moduli. I contratti si dimostrano facili da comprendere e i moduli sono facilmente gestibili.

Sebbene il MEF abbia un uso molto pratico, mi chiedo fino a che punto? Voglio dire, tutti stanno riscrivendo le applicazioni esistenti per l'estensibilità?

Sì, suona, ed è follemente poco pratico. Retoricamente parlando:

  • in che modo MEF influenza la corrente tendenze nella programmazione?

  • hai iniziato a cercare opportunità di usare MEF?

  • hai iniziato a pianificare un maggiore riscrivere un'app esistente che potrebbe beneficia dell'estensibilità?

Detto questo, le mie domande sono:
come faccio a sapere quando dovrei pianificare un nuovo progetto con estensibilità?
come faccio a sapere se un progetto esistente deve essere riscritto per l'estensibilità?

Qualcuno sta usando MEF?

    
posta IAbstract 24.12.2010 - 04:23
fonte

3 risposte

8

Qualcuno sta usando MEF?

Sto lavorando a un progetto Silverlight utilizzando il pattern MVVM. Abbiamo iniziato semplicemente collegando tutte le VM insieme, se necessario, attraverso le interfacce e l'iniezione manuale delle dipendenze (costruttore o iniezione di proprietà a seconda delle necessità). Cominciò a diventare doloroso, e iniziammo a usare MEF come fondamentalmente un'infrastruttura per l'iniezione delle dipendenze per esportare determinati servizi che sono usati attraverso i modelli di vista e importarli nei modelli di visualizzazione che ne hanno bisogno. Funziona perfettamente e con pochissimo codice.

Sì, ci sono alcuni puristi là fuori che diranno che MEF non è destinato all'iniezione di dipendenza e che un framework di iniezione di dipendenza reale farà molto meglio. Tuttavia, MEF è integrato in .NET, che è un grande vantaggio, ed è stato sufficiente per soddisfare le nostre esigenze.

come faccio a sapere quando dovrei pianificare un nuovo progetto con estensibilità? come faccio a sapere se un progetto esistente deve essere riscritto per l'estensibilità?

IMO, dovresti sempre separare le preoccupazioni in modo appropriato e utilizzare le interfacce per consentire a moduli diversi di cambiare in modo indipendente. Se lo fai bene, quando trovi un bisogno di estensibilità, MEF dovrebbe essere facile da aggiungere. Ma non inizierei un progetto che non avesse requisiti di estensibilità e mise MEF in caso di necessità . Aspetterei che ci fosse un bisogno. Per i progetti esistenti, in caso di necessità, valuterò lo sforzo di ricablare il progetto per utilizzare MEF rispetto a soluzioni alternative rispetto a non fare nulla e vedere quali vittorie.

    
risposta data 06.01.2011 - 17:44
fonte
6

L'errore che le persone fanno e penso sia dovuto al naming (Managed Extensibility Framework) sta nell'assumere che il MEF sia solo pratico per l'estensibilità. Il MEF affronta davvero tre aspetti chiave: estensibilità, scoperta e metadati. Gli ultimi due sono molto potenti anche per un'applicazione che non vedrà mai un singolo plug-in o un'estensione.

Questo è un articolo che ho scritto a proposito del suo potere di scoperta come contenitore IOC: link

Uso MEF nella maggior parte delle applicazioni aziendali di business perché rende più semplice e veloce la creazione e la manutenzione di applicazioni modulari in Silverlight.

    
risposta data 13.01.2011 - 19:04
fonte
4

Attualmente sto utilizzando MEF in alcuni progetti che incorporano il modello di repository.

Uno sta utilizzando diversi tipi di repository mentre il test delle unità, l'altro progetto sta utilizzando repository locali (direttamente su DB), remoti (WCF) e di test.

Entrambi i progetti possono modificare i loro tipi di repository tramite codice o configurazione e si basano su metadati MEF / tipi Lazy.

Ad oggi, entrambi i progetti stanno andando molto bene.

    
risposta data 28.12.2010 - 00:11
fonte

Leggi altre domande sui tag