Apa yang dikatakan Danielg baik. Saya akan menambahkan:
Jika Anda menonton video tentang System.Addins, mereka jelas berbicara tentang proyek yang sangat besar. Dia berbicara tentang satu tim yang mengelola aplikasi host, tim lain yang mengelola setiap AddIn, dan tim ketiga yang mengelola kontrak dan saluran pipa. Berdasarkan itu, saya pikir System.Addins jelas untuk aplikasi yang lebih besar. Saya sedang memikirkan aplikasi seperti sistem ERP seperti SAP (mungkin tidak sebesar itu, tetapi Anda mendapatkan idenya). Jika Anda menonton video-video itu, Anda dapat mengatakan bahwa jumlah pekerjaan untuk menggunakan System.Addins sangat besar. Ini akan bekerja dengan baik jika Anda memiliki banyak perusahaan yang memprogram add-in pihak ke-3 untuk sistem Anda dan Anda tidak dapat memutus salah satu dari kontrak add-in itu di bawah hukuman mati.
Di sisi lain, MEF tampaknya berbagi lebih banyak kesamaan dengan skema add-in SharpDevelop, arsitektur plugin Eclipse atau Mono.Addins. Ini jauh lebih mudah dipahami daripada System.Addins dan saya percaya itu jauh lebih fleksibel. Hal-hal yang Anda hilangkan adalah Anda tidak mendapatkan isolasi AppDomain atau kontrak versi yang kuat dengan MEF. Kekuatan MEF adalah bahwa Anda dapat menyusun seluruh aplikasi Anda sebagai komposisi bagian, sehingga Anda dapat mengirimkan produk Anda dalam konfigurasi yang berbeda untuk pelanggan yang berbeda, dan jika pelanggan membeli fitur baru, Anda cukup memasukkan bagian untuk fitur itu ke dalam direktori pemasangan mereka. dan aplikasi melihatnya dan menjalankannya. Ini juga memfasilitasi pengujian. Anda dapat instantiate objek yang ingin Anda uji dan memberi makan objek tiruan untuk semua dependensinya,
Poin paling penting yang ingin saya sebutkan adalah meskipun System.Addins sudah ada dalam framework, saya tidak melihat banyak bukti orang menggunakannya, tapi MEF hanya duduk di sana di CodePlex yang seharusnya dimasukkan dalam .NET 4, dan orang-orang sudah mulai membangun banyak aplikasi dengannya (termasuk saya sendiri). Saya pikir itu memberi tahu Anda sesuatu tentang dua kerangka kerja.