2009-05-22 9 views
5

Attualmente stiamo cercando di utilizzare CAB o MEF per la nostra prossima applicazione. Non ho visto alcun esempio di codeplex su come l'intermediazione di eventi sia gestita per la comunicazione di controllo tra fratelli, forse l'ho persa. Come funziona la comunicazione inter-controllo in MEF?Managed Extensibility Framework (MEF) rispetto a Composite UI Application Block (CAB)

Inoltre, stiamo pianificando di utilizzare Infragistics che ha fornito componenti aggiuntivi per il framework CAB. Quanto bene i controlli di Infragistics si integreranno nel MEF?

Nel complesso, il MEF vale la pena perseguire per un periodo di 15.000 ore di sviluppo rigoroso, applicazione?

risposta

8

Potrei sbagliarmi ma non credo che MEF abbia alcun intermediario di eventi. È un motore di composizione generale simile ai contenitori di ioc, ma destinato a una soluzione di estensibilità plug-in e applicativa più generale. CAB e Prism d'altra parte sono framework UI che consentono applicazioni composite che sono costituite da componenti dell'interfaccia utente. Poiché i componenti dell'interfaccia utente avranno probabilmente bisogno di comunicare tra loro e rispondere alle attività in altre componenti dell'interfaccia utente, il framework sottostante deve fornire un meccanismo per l'eventing (pub/sub) tra le componenti dell'interfaccia utente.

6

Se si utilizza MEF con WPF e il pattern MVVM, le parti in genere esportano classi ViewModel e classi View (ad esempio DataTemplates e così via). La tua vista si lega a ViewModel e usa proprietà e comandi di dipendenza per comunicare avanti e indietro. Pertanto, se la Parte A deve comunicare con la Parte B, la Parte A può importare un riferimento al ViewModel della Parte B e possono effettuare chiamate di metodo avanti e indietro. La parte A può anche registrare gestori di eventi per eventi della parte B, ecc.

2

Sono d'accordo con Scott. Il modello pub/sub "generico" sembra interessante ma raramente ne ho avuto bisogno. Se desidero un messaggio disaccoppiato, con MEF definisco semplicemente un IMessage di contratto e quindi esporto un'implementazione, quindi importa dove ne ho bisogno. Se si tratta di un messaggio fortemente tipizzato, importerò la parte esatta di cui ho bisogno per parlare e lo invierò direttamente.

Problemi correlati