컴퓨터 공부/COM&ActiveX

[스크랩] 부록 A.인터페이스 용어

려리군 2009. 6. 10. 18:44
인터페이스 용어

표준 인터페이스

이 용어는 마이클소프트가 개발하고 전개한 모든 인터페이스를 의미한다.이들은 산업표준으로 상호호환성을 위해 구현되고 사용된다. 예를들어, 표준 인터페이스를 지원하는 객체를 개발한 경우에 표준 인터페이스가 문서화되어 있어서 다른 사람 또한 객체를 사용할수 있게된다. 또한 표준 인터페이스는 OLE인터페이스라고도 불린다. 이들 중에는 IMoniker, IPersist, IConnectionPoint, IDispatch등이 포함된다.

 

커스텀 인터페이스

커스텀 인터페이스는 사용자 정의 인터페이스로 vtbl바인딩을 사용한다.커스텀 인터페이스는 순수히 사용자에 의해서 작성되고 사용자만을 위해서 동작하는 것으로 인터페이스 메소드를 마음대로 정의해서 사용할수 있지만, 사용자만 사용할수 있다는 단점을 지니고 있다.클라이언트가 원격객체와 통신을 하기 위해서는 프락시/스텁DLL이 있어야 한다. 이 프락시/스텀 DLL은 사용자가 만든 커스텀 인터페이스에 대한 마샬링코드를 담고있어 COM의 표준 마샬러와 연동하여 동작한다. 커스텀 인터페이스의 인터페이스 식별자(IID)는 사용자가 만든 COM개체와 클라이언트가 통신하기전에 미리 등록되어야 한다.커스텀 인터페이스의 또 한가지 단점은 동적 호출을 지원할수 없다는것으로 모든것이 컴파일시에 결정된다.

자동화 인터페이스

자동화 인터페이스는 IDispatch인터페이스를 통해 동적 바인딩(late binding)과 동적호출을 지원하는, 사용자가 정의한 인터페이스를 말한다. 자동화 인터페이스는 동적 호출을 지원하기 때문에 다양한 환경과 도구에서 사용될수 있다는 장점이 있다. 이 밖에도 마이크로소프트가 이미 자동화 마샬러(oleaut32.dll)안에 범용 마샬링 코드를 제공하기 떄문에 프락시/스텁 DLL을 만들 필요가 없다. 프락시/스텀DLL대신에 자동화 마샬러는 타입 라이브러리를 사용하여 객체와 객체가 지원하는 인터페이스에 대한 자세한 정보를 저장한다. 하지만 이와같은 기법은 자동화 호환 타입만을 지원한다는 제약이 따른다. 자동화란 단어를 들으면 IDispatch를 떠올리면 될것이다.

 

이중 인터페이스

이중 인터페이스는 IDispatch와 vtbl바인딩 모두를 지원해야 하기 때문에 유연성과 속도를 모두 감안한 기법이다. 다시 말하면 IDispatch는 동적 호출을, vtbl은 속도를 지원하게 된다. 이런 기법의 단점으로는 VARIANT와 같은 자동화 호환 타입만을 사용해야 한다는 점이고, 이외에도 모든 인터페이스 메소드는 HRESULT를 반드시 리턴해야 하는 제약이 있다.값을 리턴하는 접근 메소드의 경우를 예로들면, 리턴 매개변수를 [out, retval]속성으로 지정해야 하고, 반드시 가장 오른쪽 매개변수로 두어야 한다.

티어-오프 인터페이스

티어-오프(tear-off)인터페이스는 즉시(just-in-time)혹은 동적(only-the-fly)인터페이스로 사용된다. 다른 말로 이 인터페이스는 클라이언트가 구체적으로 요청을 하기 전에는 존재하지 않는 것으로, 티어-오프 인터페이스가 요청될때(물론 클라이언트는 티어-오프 인터페이스를 요구하는지 모른다)COM객체의 QueryInterface메소드가 동적으로 티어-오프 인터페이스를 생성한다. 이는 객체가 많은 인터페이스를 구현할때 가치있는 최적화 기법으로, 각 구현된 인터페이스는 한개의 vptr을 가지게 되므로 각 인터페이스마다 4바이트의 메모리를 절약하는 기법이다. 만약 어떤 이유로 1005개의 인터페이스를 한 객체가 가져야 하고 이중에서 특정 5개만이 자주 사용된다면 이 기법을 사용하여 약 4킬로바이트를 절약할수 있게된다. 기본적으로 이 기법이 의미하는 바는 한 인터페이스라도 절약하면 4바이트의 메모리를 절약할수 있다는 뜻이다.

 

출처 : VCNARA
글쓴이 : 야누스 원글보기
메모 :