MEF (Khung mở rộng được quản lý) giải quyết vấn đề gì mà không thể được giải quyết bởi các thùng chứa IoC/DI hiện có?MEF (Khung mở rộng được quản lý) so với IoC/DI
Trả lời
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.
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.
Scott Hanselman và tôi đã đề cập đến chủ đề này chi tiết hơn trong các hanselminutes gần đây.
- 1. Khung mở rộng được quản lý (MEF) so với Khối ứng dụng hỗn hợp (CAB)
- 2. MEF (Khung mở rộng được quản lý) có gõ "vịt" không?
- 3. "Nhiều phạm vi" có nghĩa là gì khi nói về MEF (Khung mở rộng được quản lý) và .NET 4.5?
- 4. MEF có phải là khung tiêm phụ thuộc không?
- 5. Chi phí nhân rộng Rails so với chi phí mở rộng khung PHP và Python
- 6. Visual Studio 2010 MEF so với MPF?
- 7. Ứng dụng so với Quản lý đối tượng Container được quản lý
- 8. đậu được quản lý theo phiên so với stateful ejb
- 9. Bắt số phiên hoạt động với JMX (Tiện ích mở rộng quản lý Java) API
- 10. MEF với ImportMany và ExportMetadata
- 11. Không thể quản lý để tải khóa riêng của tôi với phần mở rộng git
- 12. Các ngôn ngữ lập trình được quản lý nguồn mở
- 13. Java Generics WildCard: <? mở rộng Số> so với <T mở rộng Số>
- 14. Phần mở rộng khai báo SQLAlchemy so với elixir
- 15. Điều này thực sự mở rộng so với autoboxing?
- 16. Vùng được quản lý và không được quản lý
- 17. Phương pháp mở rộng so với Helper Lớp
- 18. Gói được quản lý với giao diện không được quản lý
- 19. Phương pháp mở rộng so với thừa kế
- 20. Tiện ích mở rộng loại so với loại lớp
- 21. Thực hiện Runnable so với việc mở rộng Thread
- 22. Mở rộng macro C/C++ so với tạo mã
- 23. Giao diện Java mở rộng So sánh
- 24. Chạy một ứng dụng được quản lý lần 2 cho thấy hiệu suất khác so với
- 25. FormatProvider so với phương pháp mở rộng so với lớp mới
- 26. API quản lý dịch vụ Web Exchange - Tìm các mục theo thuộc tính mở rộng
- 27. Mô-đun được quản lý (so với một hội đồng) là gì?
- 28. Tiêm EJB so với chỉ các hạt được quản lý JSF
- 29. So sánh shared_ptr với tài liệu tham khảo ngôn ngữ được quản lý
- 30. lỗi khi mở trình quản lý AVD
Bạn có lựa chọn rất khác biệt về từ. –