CORBA 및 기타 인터페이스(CORBA and Other Interfaces)

CORBA 및 기타 인터페이스(CORBA and Other Interfaces)

인터페이스는 COM에서만 쓰는 게 아니에요. CORBA도 인터페이스를 알고, UNO(OpenOffice API)도, Java도 인터페이스를 사용해요. 그런데 이들은 COM의 모든 인터페이스가 기반으로 삼는 IUnknown을 모르죠. 그래서 Free Pascal은 부모 인터페이스를 지정하지 않았을 때 무엇으로 삼을지 정하는 지시어를 도입했어요.

출처: CORBA and other Interfaces

본문

인터페이스가 사용되는 아키텍처는 COM만 있는 게 아니에요. CORBA는 인터페이스를 알고, UNO(OpenOffice API)도 인터페이스를 사용하며, Java도 그래요. 이 언어들은 COM에서 모든 인터페이스의 기초로 쓰이는 IUnknown 인터페이스를 알지 못해요. 그래서 부모 인터페이스를 지정하지 않았을 때 인터페이스가 자동으로 IUnknown에서 파생되는 건 좋지 않은 생각이에요.

이 때문에 Free Pascal에는 {$INTERFACES} 지시어가 도입됐어요. 이 지시어는 부모 없이 선언된 인터페이스의 부모 인터페이스가 무엇인지 지정해 줘요. 이 지시어에 대한 더 자세한 정보는 Programmer's Guide에서 찾을 수 있어요.

다음 두 가지 차이를 알아두세요.

  • COM 인터페이스는 IUnknown에서 파생되기 때문에 기본적으로 참조 카운팅이 돼요.
  • CORBA 인터페이스는 단순 문자열로 식별돼요. 그래서 TGUID가 아니라 문자열과 할당 호환이에요. 또 CORBA 인터페이스에는 컴파일러가 자동 참조 카운팅을 해주지 않기 때문에, 참조 관리는 프로그래머가 직접 해야 해요.

더 알아보기

  • IUnknown과 참조 카운팅의 동작은 7.8 절에서 확인할 수 있어요.
  • 인터페이스의 기본 정의는 7.1 절을 참고해요.
  • {$INTERFACES} 지시어의 전체 규칙은 Programmer's Guide에서 다뤄요.