프로그램이 발생한 항목을 감지하면 해당 클라이언트에 알릴 수 있습니다. 예를 들어 주식 시세 프로그램이 주식 가격의 변경을 감지하면 모든 고객에게 변경 사항을 알릴 수 있습니다. 이 알림 프로세스를 이벤트 발생이라고 합니다.
COM을 사용하면 서버 개체가 COM 이벤트를 사용하여 알림을 받을 개체에 대한 정보 없이 이벤트를 발생시킬 수 있습니다. 개체는 연결할 수 있는 개체를 사용하여 알림을 요청한 클라이언트에 대한 자세한 정보를 유지할 수도 있습니다.
COM 연결 가능한 개체는 들어오는 인터페이스 외에도 클라이언트에 나가는 인터페이스를 제공합니다. 결과적으로 개체와 해당 클라이언트는 양방향 통신에 참여할 수 있습니다. 들어오는 인터페이스는 개체에 구현되며, 나가는 인터페이스는 클라이언트의 싱크에서 구현되고 개체에서 호출을 수신하는 동안 개체의 외부 클라이언트에서 호출을 받습니다. 개체는 사용하려는 인터페이스를 정의하고 클라이언트는 이를 구현합니다.
개체는 들어오는 인터페이스를 정의하고 이러한 인터페이스의 구현을 제공합니다. 들어오는 인터페이스는 개체의 IUnknown::QueryInterface 메서드를 통해 클라이언트에서 사용할 수 있습니다. 클라이언트는 개체에서 들어오는 인터페이스의 메서드를 호출하고 개체는 클라이언트를 대신하여 원하는 작업을 수행합니다.
나가는 인터페이스는 개체에 의해 정의되지만 클라이언트는 클라이언트가 만드는 싱크 개체에 나가는 인터페이스의 구현을 제공합니다. 그런 다음 개체는 싱크 개체에서 나가는 인터페이스의 메서드를 호출하여 개체의 변경 내용을 클라이언트에 알리거나, 클라이언트에서 이벤트를 트리거하거나, 클라이언트에서 무언가를 요청하거나, 실제로 개체 작성자가 어떤 용도로든 사용할 수 있도록 합니다.
나가는 인터페이스의 예로는 푸시 단추 컨트롤에 의해 정의된 IButtonSink 인터페이스가 해당 이벤트를 클라이언트에 알립니다. 예를 들어 단추 개체는 사용자가 화면에서 단추를 클릭할 때 클라이언트의 싱크 개체에서 IButtonSink::OnClick을 호출합니다. 단추 컨트롤은 나가는 인터페이스를 정의합니다. 단추를 사용하는 클라이언트가 이벤트를 처리하려면 클라이언트가 싱크 개체에서 나가는 인터페이스를 구현한 다음 해당 싱크를 단추 컨트롤에 연결해야 합니다. 그런 다음 단추에서 이벤트가 발생하면 단추가 싱크를 호출하며, 이때 클라이언트는 해당 단추 클릭에 할당하려는 모든 작업을 실행할 수 있습니다.
연결할 수 있는 개체는 개체-클라이언트 통신을 위한 일반적인 메커니즘을 제공합니다. 모든 종류의 이벤트 또는 알림을 노출하려는 개체는 이 기술을 사용할 수 있습니다. COM은 일반적인 연결 가능한 개체 기술 외에도, 클라이언트에 대한 관심 있는 특정 이벤트를 클라이언트에 알리기 위해 개체에서 사용하는 다양한 특수 용도의 싱크 및 사이트 인터페이스를 제공합니다. 예를 들어 IAdviseSink 개체에서 데이터를 클라이언트에 알리고 개체의 변경 내용을 보는 데 사용할 수 있습니다.
자세한 내용은 다음 항목을 참조하세요.
- 연결 가능한 개체 아키텍처
- 연결 가능한 개체 인터페이스