2016-06-28 2 views
0

COM (구성 요소 개체 모델)을 사용할 때 I'veread 인터페이스는 변경 불가능하며 새 인터페이스 버전의 인터페이스는 기존 인터페이스의 동작을 변경하는 대신 명시 적으로 다른 이름을 갖습니다. 예를 들어, ICollection의 새 버전은 ICollection2 또는 ICollectionEx이지만, 후자는 권장되지 않습니다 (완전히 이해할 수 있음).COM "규칙"은 어떻게 적용됩니까?

미적 감수성 (거대한 계획에서 아주 사소한 것)을 희생시키면서 이전 버전과의 호환성에서이 접근법에서 얻을 수있는 많은 가치가 있다는 것을 알았습니다. 이 불변의 인터페이스 아이디어가 시행되고 있습니까, 그렇다면 어떻게, 그리고이 접근 방식을 취하는 다른 시스템이 있습니까?

+2

규칙은 위반할 때 무언가 충돌하고 화상을 입을 가능성이 있다는 사실에 의해 "시행"됩니다. 이전 버전과의 호환성을 손상시키는 코드는 기본적으로 역 호환되지 않습니다. –

+1

[COM 인터페이스 계약이 불변 인 이유는 무엇입니까?] (http://stackoverflow.com/questions/29056322/why-is-the-com-interface-contract-immutable) 불변성은 관례에 따라 시행됩니다. (COM은 무한한 지식이 없으며, 오늘 정의하는 인터페이스가 어제 정의한 인터페이스를 수정 한 것임을 알지 못합니다.) –

+0

@IgorTandetnik 충분합니다. –

답변

-1

간단한 대답은 "시행"하지 않는 것입니다 - 드문 경우를 제외하고 검은 헬리콥터의 일부 특수 작전 단원이 한밤중에 나타나서 레드몬드에게 당신을 소개합니다.

나는 뒤따라 오는 것을 본 적이 없으며 아무 것도 깨뜨리지 않는다. 나는 맹세하지 않겠지 만 Microsoft Office 응용 프로그램의 typelib을 비교하면 이상적인 것보다 더 실용적이라고 말할 것입니다. (때로는 인터페이스가 바뀔 수도 있습니다.)

실제로 인터페이스의 끝에 기능을 추가하면 인터페이스를 다시 만들지 않아도됩니다. 큰 문제는 고객이 새 버전의 프로그램을 사용하는 것이 아니라 고객이 컴파일 한 버전보다 오래된 버전을 사용하는 것입니다.

관련 문제