문제

기존 IoC/DI 컨테이너로는 해결할 수 없지만 MEF(Managed Extensibility Framework)는 어떤 문제를 해결합니까?

도움이 되었습니까?

해결책

MEF의 주요 목적은 확장성입니다.애플리케이션 작성자와 플러그인 작성자(확대)은 다르며 게시된 인터페이스를 넘어서는 서로에 대한 특별한 지식이 없습니다(계약) 도서관.

일반적인 IoC 의심과 다른 MEF 주소의 또 다른 문제 공간이자 MEF의 강점 중 하나는 [확장] 검색입니다.확장과 연결할 수 있는 메타데이터에서 작동하는 확장 가능한 검색 메커니즘이 많이 있습니다.MEF CodePlex 사이트에서:

"MEF는 풍부한 쿼리 및 필터링을 용이하게 하는 추가 메타데이터를 사용하여 태그 확장을 허용합니다."

태그가 지정된 확장을 지연 로드하는 기능과 결합되어 확장 메타데이터를 조사할 수 있습니다. 이전의 로딩은 수많은 흥미로운 시나리오에 대한 문을 열어주고 [플러그인] 버전 관리와 같은 기능을 실질적으로 활성화합니다.

MEF에는 확장을 '적응'하거나 '변환'할 수 있는 '계약 어댑터'도 있습니다(유형에서 > 유형으로) 해당 변환의 세부 사항을 완벽하게 제어할 수 있습니다.계약 어댑터는 '발견'이 의미하고 수반하는 것과 관련하여 또 다른 창의적인 영역을 열어줍니다.

다시 말하지만, MEF의 '의도'는 익명 플러그인 확장성에 중점을 두고 있으며 이는 다른 IoC 컨테이너와 매우 차별화됩니다.따라서 MEF를 구성에 사용할 수 있지만 이는 다른 IoC에 비해 기능의 작은 교차점에 불과하며 앞으로 많은 근친상간 상호 작용이 나타날 것으로 예상됩니다.

다른 팁

IoC 컨테이너는 사용자가 알고 있는 사항에 중점을 둡니다.단위 테스트에서는 하나의 로거를 사용하고 앱에서는 다른 로거를 사용할 것임을 알고 있습니다.MEF는 사용자가 하지 않는 사항에 중점을 두고 있으며 내 시스템에 나타날 수 있는 로거는 1~n개입니다.

Scott Hanselman과 저는 최근 hansel Minutes에서 이 주제를 더 자세히 다루었습니다.

http://www.hansel Minutes.com/default.aspx?showID=166

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top