2008-09-20 18 views

Trả lời

53

Mục đích chính của MEF là khả năng mở rộng; để đóng vai trò như một khuôn khổ 'trình cắm' khi tác giả của ứng dụng và tác giả của trình cắm (mở rộng) khác nhau và không có kiến ​​thức cụ thể về nhau ngoài giao diện được xuất bản (hợp đồng) .

Một không gian khác của vấn đề MEF giải quyết khác với các nghi phạm IoC thông thường và một trong những điểm mạnh của MEF là khám phá [extension]. Nó có rất nhiều cơ chế khám phá có thể mở rộng, hoạt động trên siêu dữ liệu mà bạn có thể kết hợp với tiện ích mở rộng. Từ trang web MEF CodePlex:

"MEF cho phép mở rộng gắn thẻ với siêu dữ liệu additonal tạo điều kiện truy vấn giàu và lọc"

Kết hợp với khả năng làm chậm tải gắn thẻ mở rộng, có thể thẩm vấn siêu dữ liệu mở rộng trước để tải mở ra cánh cửa cho một loạt các tình huống thú vị và cho phép đáng kể các khả năng như phiên bản [plug-in].

MEF cũng có 'Bộ điều hợp hợp đồng' cho phép các tiện ích mở rộng được 'điều chỉnh' hoặc 'chuyển đổi' (từ loại> thành loại) với toàn quyền kiểm soát chi tiết của các biến đổi đó. Các bộ điều hợp hợp đồng mở ra một mặt trận sáng tạo khác liên quan đến những gì 'khám phá' có nghĩa là và đòi hỏi.

Một lần nữa, ý định của MEF tập trung chặt chẽ vào khả năng mở rộng trình cắm thêm ẩn danh, điều gì đó khác biệt rất nhiều với các vùng chứa IoC khác. Vì vậy, trong khi MEF có thể được sử dụng cho sáng tác, đó chỉ là một giao điểm nhỏ về khả năng của nó so với các IoC khác, mà tôi nghi ngờ chúng ta sẽ thấy rất nhiều sự tương tác loạn luân trong tương lai.

+14

Bạn có lựa chọn rất khác biệt về từ. –

26

Vùng chứa IoC tập trung vào những điều bạn biết, tức là tôi biết tôi sẽ sử dụng một trình ghi nhật ký trong Bài kiểm tra đơn vị và Trình ghi nhật ký khác trong ứng dụng của tôi. MEF tập trung vào những thứ bạn không làm, có 1 đến 3 logger có thể xuất hiện trong hệ thống của tôi.

Các vấn đề liên quan