Partilhar via


O manipulador OLE

Um manipulador OLE é uma DLL que contém vários componentes interativos usados para vincular e incorporar. Para evitar o custo da comunicação constante entre processos entre um container e o seu servidor, o manipulador é carregado no espaço de processo do container para atuar em nome de um servidor como uma espécie de processo de substituição. 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 objetos não pode fornecer, o manipulador se comunica com o aplicativo de servidor usando o mecanismo de comunicação fora do processo COM.

Os componentes do manipulador OLE incluem peças 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. Neste último caso, o manipulador de aplicativo é implementado como um objeto agregado composto por um novo objeto de controle e o manipulador padrão. Os manipuladores de combinação aplicativo/padrão também são conhecidos como manipuladores em processo. O manipulador remoto é usado para objetos aos quais não é atribuído um CLSID no registro do sistema ou que não têm manipulador especificado. Tudo o que é exigido 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, ligue OleCreateEmbeddingHelper.

Quando você cria uma instância de um manipulador para uma classe, não pode usá-la 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 de Client-Side Leve