Compartilhar via


O manipulador OLE

Um manipulador OLE é uma DLL que contém vários componentes de interação usados para vincular e incorporar. Para evitar o gasto de comunicação constante entre processos entre um contêiner e seu servidor, o manipulador é carregado no espaço de processo do contêiner para agir em nome de um servidor como uma espécie de processo substituto. O manipulador OLE gerencia solicitações de contêiner que não exigem a atenção do aplicativo de servidor, como solicitações de desenho. Quando um contêiner solicita algo que o manipulador de objeto não pode fornecer, o manipulador se comunica com o aplicativo do servidor usando o mecanismo de comunicação fora do processo COM.

Os componentes do manipulador OLE incluem partes remotas para gerenciar a comunicação entre o manipulador e seu servidor, um cache para armazenar os dados de um objeto (juntamente com informações sobre como esses dados devem ser formatados e exibidos) e um objeto de controle que coordena as atividades dos outros componentes da DLL. Além disso, se um objeto for um link, a DLL também incluirá um componente de vinculação, ou objeto vinculado, que controla o nome e o local da origem do link.

OLE fornece um manipulador padrão que a maioria dos aplicativos usa para vincular e incorporar. Se o padrão não corresponder aos requisitos do servidor, você poderá substituir completamente o manipulador padrão ou usar partes da funcionalidade que ele fornece quando apropriado. No último caso, o manipulador de aplicativos é implementado como um objeto agregado composto por um novo objeto de controle e o manipulador padrão. Os manipuladores padrão e de aplicativo de combinação também são conhecidos como manipuladores em processo. O manipulador remoto é usado para objetos que não recebem um CLSID no registro do sistema ou que não têm nenhum manipulador especificado. Tudo o que é necessário de um manipulador para esses tipos de objetos é que eles passem informações através do limite do processo. Para criar uma nova instância do manipulador padrão, chame OleCreateDefaultHandler. Para algumas circunstâncias especiais, chame OleCreateEmbeddingHelper.

Quando você cria uma instância de um manipulador para uma classe, você não pode usá-lo para outra. Quando usado para um documento composto, o manipulador OLE implementa as estruturas de dados do lado do contêiner quando objetos de uma classe específica são acessados remotamente.

OLE definiu o manipulador padrão para clientes de servidores locais de documentos compostos. O manipulador padrão implementou várias interfaces que o servidor típico não implementou. Quando o OLE posteriormente permitiu servidores em processo para documentos compostos, eles tiveram que criar um auxiliar de incorporação que implementou essas interfaces extras para que os clientes pudessem trabalhar perfeitamente com eles.

Os designers de estrutura que definem e implementam um manipulador do lado do cliente devem considerar esse problema em seu design e devem fornecer um auxiliar equivalente no processo pelos mesmos motivos. Mesmo que os designers atualmente não implementem interfaces no manipulador que os servidores não expõem, eles podem querer definir um auxiliar agora para que possam adicioná-los no futuro. Como alternativa, pode-se implementar as interfaces extras no próprio objeto do servidor.

O manipulador leve do lado do cliente