Tôi đã sử dụng Vùng chứa Windsor IoC cho ứng dụng dựa trên web của mình, để giải quyết việc triển khai lớp truy cập dữ liệu mà ứng dụng sẽ sử dụng.MEF: Tôi nên đặt bộ phận sắp xếp ở đâu?
Giao diện người dùng của ứng dụng web sẽ bao gồm các trang và mỗi trang bao gồm các đơn vị nhỏ được gọi là các portlets. (Khái niệm của họ có phần tương tự như các widget.) Các portlet này về cơ bản là các điều khiển web và có thể được cấu hình trong thời gian chạy cho mỗi trang một cách bất ngờ.
Ứng dụng sẽ xuất xưởng với một số tính năng này, nhưng tôi muốn cho phép mở rộng nó dễ dàng.
Tôi đã tìm ra rằng cơ chế này chính xác là những gì MEF được xây dựng. Vì vậy, tôi đã quyết định triển khai hệ thống theo cách mà nó phát hiện ra các portlet sử dụng MEF. Sau đó, tôi nhận ra rằng nó cũng có thể làm những gì tôi hiện đang sử dụng Windsor cho, vì vậy tôi quyết định mương Windsor ủng hộ MEF.
Rõ ràng, tôi sẽ phải sử dụng DirectoryCatalog, quét các .dll trong thư mục bin của ứng dụng và trả lại mọi thứ tôi cần.
Tôi đã đọc một số hướng dẫn, ví dụ và tất cả các câu hỏi liên quan đến MEF trong StackOverflow. Tôi đã tìm ra cách dễ nhất để sử dụng MEF là thông qua PartInitializer mà Glenn Block đã đề cập trong các hướng dẫn của anh ta, nhưng tôi nhận ra rằng nó không có trong MEF. Trên thực tế, nó nằm trong đoạn code tôi đã tải về từ CodePlex, nhưng trong một assembly riêng biệt, và chỉ ở nguồn, không phải ở dạng nhị phân. (Điều này có nghĩa rằng nó không phải là một phần của MEF? Hay điểm trong việc đưa nó vào một dự án riêng biệt là gì?) Sau đó, tôi nhận ra rằng nó là dành cho Silverlight, vì vậy nó không thực sự giúp tôi. (Hoặc tôi chỉ nên biên dịch mà chống lại .NET 3.5, hoặc bao gồm nó trong dự án của tôi, và tôi tốt để đi?)
Vì vậy, bây giờ tôi có một vấn đề sau đây: nơi tôi nên đặt các CompositionContainer trong ứng dụng của tôi?
Có một điều nữa tôi muốn cân nhắc: tôi có nên chỉ sử dụng một Trình soạn thảo nội dung trong suốt thời gian tồn tại của ứng dụng hay tốt hơn hết là tạo vùng chứa cho mỗi lần tôi cần?