Modelo de objeto componente (COM)
O COM é uma tecnologia muito poderosa para componente do software com base no design orientado a objetos. Por favor, consulte a documentação aqui para mais detalhes.
Uma das principais desvantagens do COM é o placa de caldeira inicial necessária para configurar os componentes COM. O ATL é um conjunto de bibliotecas que ajudam a construir o placa, mas vem com sua própria complexidade.
Esta amostra aqui fornece o código esquelético que faria o peso da configuração e do registro de COM, para que os desenvolvedores possam se concentrar apenas na lógica de negócios, em vez de se preocupar com a infraestrutura. Não usa ATL . Em vez disso, ele usa o código C ++ simples para que os desenvolvedores possam entender e depurar o esqueleto subjacente, se necessário.
Termos usados
- Um servidor COM é um objeto que fornece a lógica de negócios.
- Um cliente COM é o código que acessa o servidor COM através de qualquer interface exposta pelo servidor COM.
- A interação entre o cliente COM e o servidor COM ocorre via marechaling e requer uma DLL de proxy-STUB.
- Por favor, consulte a documentação aqui para mais detalhes.
Este projeto
Aqui está o resumo sobre os vários diretórios desta amostra.
- ComsampleProxy : Proxystub DLL. Para adicionar uma nova interface, basta adicionar um novo arquivo IDL ao projeto.
- COMSAMPERSERVER : Suporte para ativar o servidor COM em processo e fora do processo (em um sistema operacional fornecido DLL Substituto, nomeadamente dllHost.exe).
- COMSOMPLESERVICE : Suporte para ativar o servidor COM em um serviço local do local.
- Comsampleclient : Um cliente de amostra que liga e testa os servidores COM mencionados acima.
Criando e registrando um novo componente COM
Criar um novo componente COM é super fácil com este modelo.
- Adicione sua interface :
- Adicione um novo arquivo IDL com sua interface ao projeto ComsampleProxy. Consulte o arquivo de amostra /comsampleproxy/icomtest.idl.
- Implementar sua classe com :
- Para ativação em processo ou fora do processo na ativação substitutiva : adicione sua implementação de classe ao projeto de amostras. Consulte Exemplo COMSOMPLESERVER/CCOMSERVERTEST.CPP. Agora vá para o COMSimpleServer/dll.cpp e simplesmente adicione suas entradas de classe ao "g_classes".
- Para ativação fora do processo em um serviço local do local : Adicione a implementação da sua classe ao projeto COMSOMPLESSERVICE. Consulte Exemplo COMSAMPLESSERVICE/CCOMSERVICETEST.CPP. Agora vá para comsampleservice/main.cpp e simplesmente adicione suas entradas de classe a "g_classes".
- Registre seus componentes com :
- Copie comsampleProxy.dll para sua máquina de destino. De um prompt elevado, execute: regsvr32 comsampleProxy.dll .
- Para ativação em processo ou fora do processo na ativação substituta : copie comsamppleServer.dll para sua máquina de destino. De um prompt elevado, execute: regsvr32 comsampleserver.dll .
- Para ativação fora do processo em um serviço local do local : copie comsampleservice.exe em sua máquina de destino. De um prompt de comando elevado, execute: comsampleservice.exe /registerServer .
É isso!
Marcas comerciais
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.