Scott Hanselman ha contribuito a mettere in evidenza le specifiche di MEF nel suo podcast 148 con Glenn Block.
Rispetto a OSGi, MEF è basato su "Inversion of Control" e OSGi non lo è: esso (OSGi) scoprirà il nuovo bundle attraverso un meccanismo diverso basato su un Life Cycle Layer.
MEF si concentra sull'estensibilità dell'applicazione. Utilizza la DI come strategia per comporre le diverse estensioni, ma non è di per sé un contenitore DI generico.
Poiché l'ultimo punto può confondere il transcripts del podcast può aiutare:
Il modo fondamentalmente posiziono però, la differenza tra i due, è che i contenitori IoC sono veramente sulla gestione a noto come insieme di cose in ambienti diversi, come voglio un logger nel mio ambiente del disco, voglio un logger finto nel mio ambiente di test.
Quindi MEF è realmente circa la gestione di un sconosciuta insieme di cose e che cosa si riduce a è che in un IoC Container tendo a fare sia una convenzione-based o una registrazione, meccanismo di registrazione specifici, per dire ecco cosa logger significa, ecco cosa significa, ecco cosa significa.
MEF utilizza il codice e un meccanismo di scoperta e annotazioni sul codice, che sono attributi , dove qualsiasi cosa si presenta nel sistema, questo è ciò che è lì.
Quindi, di nuovo, portandolo ad un livello più alto, si tratta di utilizzare MEF per gestire davvero un insieme di sconosciuti cose, si utilizza IoC Container per gestire una serie di noti cose.
Conclusione: (uno) la differenza principale è il principio scoperta (IOC vs. ciclo di vita)
Hai accettato la risposta più non rappresentativa. Non sapendo nulla di MEF non posso confrontare i due, ma posso confermare con fermezza che IoC NON è affatto un problema per OSGi, quindi come tale non può essere usato come caratteristica distintiva. A proposito, che cosa hai scelto per il tuo progetto? – drozzy