Exemplo do QStat: Encapsula um objeto COM para expor a lógica comercial
O exemplo QStat mostra como criar uma DLL que empacota o acesso a um objeto COM e expõe sua funcionalidade para clientes do .NET estrutura usando o C++.
Observação de segurança: |
---|
Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina. |
Para obter exemplos e instruções para instalá-los:
Sobre o Visual Studio Ajuda menu, clicar Exemplos.
Para obter mais informações, consulte Localizando arquivos de exemplo.
A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.
Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.
Criando e executando o exemplo
Para criar a amostra
No IDE do Visual Studio, carregar o arquivo de solução QStat.sln.
No gerenciador de soluções, clicar com o botão direito do mouse sobre o QStat solução.
No menu de atalho, clicar Criar solução.
Para executar este exemplo
No gerenciador de soluções, clicar com o botão direito do mouse sobre o netClientprojeto .
No menu Debug, clique em Start.
Depois que os clientes têm começar, são impressos uma série de mensagens do console, notificando de chamadas para a lógica de negócios.
Observação: |
---|
Para obter mais informações sobre a interação entre componentes, depurar o código Configurando pontos de interrupção ou usando o Depurar menu para passar dentro ou sobre o código de exemplo. |
Descrição do projeto
O foco do exemplo é em acessar a lógica comercial do .NET estrutura e COM clientes e não em implementação da lógica de negócios, portanto, a lógica de negócios é relativamente desinteressantes.Na verdade, a lógica comercial no caso não aritmética simples (geométricas harmonic cálculos e quadráticas média), retornando o resultado para o cliente.
É uma prática de programação melhor para separar a lógica de negócios da scaffolding que expõe a lógica de negócios (COM neste caso).No entanto, esse exemplo pressupõe que a lógica de negócios foi implementada diretamente no objeto COM que será consumido e que não há nenhum acesso à lógica comercial subjacente, exceto por meio deste objeto COM.
O exemplo cria um wrapper DLL que consome o objeto COM via #import e expõe a .NET estrutura de classe para ser consumida pelos clientes do .NET estrutura. Isso é concluído pela definição de uma classe C++ nativa, nativeMeanCalc, que contém um membro de dados COM ponteiro SMART trazido por meio de #import. Uma classe do .NET estrutura é definida que contém um ponteiro para a classe C++ nativo.A classe do .NET estrutura, netMeanCalc, contém um ponteiro para um nativeMeanCalc objeto conclui o caminho para o objeto de destino COM. netMeanCalc é a classe pública que os clientes do .NET estrutura irão consumir.
Existem dois projetos de cliente:
nativeClient é um cliente COM e é implementado em C++ nativo.
netClient é escrito usando a nova sintaxe do C++.
Classes e palavras-chave
Este exemplo demonstra as seguintes palavras-chave:
__gc; # using # Import; tente; catch; _com_error; Console::WriteLine