문제

MEF와 Lua 사이에는 유사점이 있습니다.두 가지 모두 메서드를 등록하고 필요에 따라 배포할 수 있습니다.MEF와 Lua 형식 모두 IoC/종속성 주입입니까?

도움이 되었습니까?

해결책

나는 당신이 이러한 기술들 사이의 큰 차이점을 알고 있다고 가정하고 질문에 집중할 것입니다.

"MEF와 Lua는 모두 IoC의 형태입니까? 의존성 주입?"

또한 임베디드 Lua와 언어로서의 Lua에 대해 이야기하고 있다고 가정하겠습니다.

먼저 종속성 주입과 제어 역전을 분리해 보겠습니다. Fowler는 종속성 주입을 IoC의 특정 형태로 정의했습니다. IoC라는 개념이 너무 일반화되어 더 이상 시스템을 구별하는 특징이 아니기 때문입니다.그의 정의에는 의존성 주입의 세 가지 주요 유형이 포함됩니다.생성자 주입, Setter 주입, 인터페이스 주입입니다.세 가지 유형 모두에서 아이디어는 클래스 또는 인터페이스의 특정 구현을 이를 필요로 하는 클래스 또는 메소드에 주입하는 것입니다.이는 종속성과 이를 사용하는 클래스를 분리할 수 있기 때문에 매우 매끄러워집니다.계약을 따르는 한 소비자가 신경쓰거나 영향을 받지 않고 종속성 구현을 편집하고 교체할 수 있습니다.

이 정의를 사용하면 MEF는 통과하고 내장된 Lua는 실패한다고 말하고 싶습니다.MEF는 주로 종속성 주입 프레임워크입니다.이를 통해 특정 계약을 구현하는 외부 클래스를 동적으로 로드하고 구성할 수 있습니다.반면 Lua는 스크립팅을 통한 확장을 허용하지만 계약 방식은 거의 없습니다.물론, 앱에 Lua API를 제공할 수 있으며 이는 일종의 계약이지만 실제 계약이 이행되도록 보장하는 데는 아무런 역할도 하지 않습니다.

IoC는 더 광범위합니다.(파울러,위키피디아) 공통 주제는 기본 프로그램 흐름이 일시적으로 제어를 포기하지만 작업을 수행하는 구성 요소로부터 흐름 상태 업데이트를 받는다는 것입니다.이를 달성하는 일반적인 방법은 다음과 같습니다.이벤트, 폐쇄 및 지속.

이 정의를 사용하면 MEF가 쉽게 전달되고(런타임에 제어가 알 수 없는 구성 요소로 전달됨) 임베디드 Lua에 대한 인수도 만들 수 있습니다.기본 프로그램은 외부 스크립트에 정의된 함수가 필요할 때까지 순항합니다.이 시점에서 제어는 완료되거나 중단될 때까지 스크립트에 전달됩니다.

한 가지 주목할 점은 Lua가 이와 관련하여 특별히 특별하지 않다는 것입니다.Perl, Python, Tcl 및 Ruby를 포함할 수 있습니다.실제로 IoC의 일반적인 정의는 현대 프로그래밍 환경에서는 특별히 유용하지 않습니다.너무 흔해요.Fowler는 이것이 그가 종속성 주입을 특별한 사례로 도입한 이유라고 말합니다.GUI, 이벤트, 스레드, 데몬, 클로저, 연속 및 모나드의 세계에서는 모든 것이 IoC를 사용합니다.오늘날 사람들이 'IoC'라고 하면 일종의 종속성 주입을 의미하는 경우가 많습니다.

다른 팁

Mef는 Lua와 아무 관련이 없으며 Lua와는 다릅니다.

MEF는 확장을위한 프레임 워크입니다 (기본적으로 멋진 플러그인 프레임 워크).

Lua는 매우 멋진 스크립팅 언어입니다.

"둘 다 방법을 등록하고 필요한대로 배포 할 수 있습니다." 이 문장은 C, C ++, C#, VB, SQL, DI 프레임 워크, JavaScript, General Motors, Ford, 병원에 적용됩니다.

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