Những gì Danielg nói là tốt. Tôi sẽ thêm:
Nếu bạn xem các video về System.Addins, họ rõ ràng đang nói về các dự án rất lớn. Anh ấy nói về một nhóm quản lý ứng dụng máy chủ, một nhóm khác quản lý mỗi AddIn và một nhóm thứ ba quản lý hợp đồng và đường ống dẫn. Dựa vào đó, tôi nghĩ System.Addins rõ ràng dành cho các ứng dụng lớn hơn. Tôi đang nghĩ các ứng dụng như hệ thống ERP như SAP (có thể không lớn lắm, nhưng bạn hiểu ý). Nếu bạn đã xem những video đó, bạn có thể nói rằng khối lượng công việc để sử dụng System.Addins là rất lớn. Nó sẽ hoạt động tốt nếu bạn có nhiều công ty lập trình bổ trợ bên thứ 3 cho hệ thống của bạn và bạn không thể phá vỡ bất kỳ hợp đồng bổ trợ nào dưới hình phạt tử hình.
Mặt khác, MEF dường như chia sẻ nhiều điểm tương đồng hơn với lược đồ bổ trợ của SharpDevelop, kiến trúc plugin Eclipse hoặc Mono.Addins. Nó dễ hiểu hơn nhiều so với System.Addins và tôi tin rằng nó linh hoạt hơn rất nhiều. Những điều bạn mất là bạn không bị cô lập AppDomain hoặc các hợp đồng phiên bản mạnh mẽ vượt trội với MEF. Điểm mạnh của MEF là bạn có thể cấu trúc toàn bộ ứng dụng của mình dưới dạng một bộ phận, do đó bạn có thể gửi sản phẩm của mình theo các cấu hình khác nhau cho các khách hàng khác nhau và nếu khách hàng mua một tính năng mới, bạn chỉ cần bỏ phần cho tính năng đó vào thư mục cài đặt của họ và ứng dụng nhìn thấy nó và chạy nó. Nó cũng tạo điều kiện cho thử nghiệm. Bạn có thể khởi tạo đối tượng bạn muốn kiểm tra và cung cấp cho nó đối tượng giả cho tất cả các phụ thuộc của nó,
Điểm quan trọng nhất mà tôi muốn đề cập là mặc dù System.Addins đã có trong khung, tôi không thấy nhiều bằng chứng về việc mọi người sử dụng nó, nhưng MEF chỉ ngồi đó trên CodePlex được cho là được đưa vào .NET 4 và mọi người đã bắt đầu xây dựng nhiều ứng dụng với nó (bao gồm cả bản thân tôi). Tôi nghĩ rằng nó cho bạn biết một cái gì đó về hai khung.