다음을 통해 공유


OLE 처리기

OLE 처리기는 연결 및 포함에 사용되는 여러 상호 작용 구성 요소를 포함하는 DLL입니다. 컨테이너와 해당 서버 간의 지속적인 프로세스 간 통신 비용을 방지하기 위해 처리기는 일종의 서로게이트 프로세스로 서버를 대신하여 작동하도록 컨테이너의 프로세스 공간에 로드됩니다. OLE 처리기는 그리기 요청과 같이 서버 애플리케이션의 주의가 필요하지 않은 컨테이너 요청을 관리합니다. 컨테이너가 개체 처리기에서 제공할 수 없는 항목을 요청하면 처리기는 COM Out-of-process 통신 메커니즘을 사용하여 서버 애플리케이션과 통신합니다.

OLE 처리기 구성 요소에는 처리기와 해당 서버 간의 통신을 관리하는 원격 조각, 개체의 데이터를 저장하기 위한 캐시(해당 데이터의 형식 지정 및 표시 방법에 대한 정보) 및 DLL의 다른 구성 요소의 활동을 조정하는 제어 개체가 포함됩니다. 또한 개체가 링크인 경우 DLL에는 링크 원본의 이름과 위치를 추적하는 연결 구성 요소 또는 연결된 개체도 포함됩니다.

OLE는 대부분의 애플리케이션이 연결 및 포함에 사용하는 기본 처리기를 제공합니다. 기본값이 서버의 요구 사항과 일치하지 않는 경우 기본 처리기를 완전히 바꾸거나 적절한 경우 제공하는 기능의 일부를 사용할 수 있습니다. 후자의 경우 애플리케이션 처리기는 새 컨트롤 개체 및 기본 처리기로 구성된 집계 개체로 구현됩니다. 조합 애플리케이션/기본 처리기를 In-Process 처리기라고도 합니다. 원격 처리기는 시스템 레지스트리에 CLSID가 할당되지 않았거나 지정된 처리기가 없는 개체에 사용됩니다. 이러한 유형의 개체에 대한 처리기에서 필요한 것은 프로세스 경계를 넘어 정보를 전달하는 것입니다. 기본 처리기의 새 instance 만들려면 OleCreateDefaultHandler를 호출합니다. 특별한 경우 OleCreateEmbeddingHelper를 호출합니다.

한 클래스에 대한 처리기의 instance 만들 때 다른 클래스에는 사용할 수 없습니다. 복합 문서에 사용되는 경우 OLE 처리기는 특정 클래스의 개체가 원격으로 액세스할 때 컨테이너 쪽 데이터 구조를 구현합니다.

OLE는 복합 문서 로컬 서버의 클라이언트에 대한 기본 처리기를 정의했습니다. 기본 처리기는 일반적인 서버에서 구현하지 않은 여러 인터페이스를 구현했습니다. 이후 OLE에서 복합 문서에 대한 In-Process 서버를 허용한 경우 클라이언트가 원활하게 작업할 수 있도록 이러한 추가 인터페이스를 구현하는 포함 도우미를 만들어야 했습니다.

클라이언트 쪽 처리기를 정의하고 구현하는 프레임워크 디자이너는 디자인에서 이 문제를 고려해야 하며 동일한 이유로 동일한 프로세스 내 도우미를 제공해야 합니다. 디자이너는 현재 서버가 노출하지 않는 처리기에서 인터페이스를 구현하지 않더라도 나중에 추가할 수 있도록 도우미를 정의할 수 있습니다. 또는 서버 개체 자체에 추가 인터페이스를 구현할 수 있습니다.

경량 Client-Side 처리기