Compartir a través de


Ejemplo QStat: envuelve un objeto COM para exponer la lógica de empresarial

Actualización: noviembre 2007

El ejemplo QStat muestra la forma de crear un archivo DLL que envuelve el acceso a un objeto COM y expone su funcionalidad a los clientes de .NET Framework mediante C++.

Nota de seguridad:

Este código de ejemplo se proporciona para ilustrar un concepto y no debe utilizarse en aplicaciones o sitios Web, ya que quizás no ilustre las prácticas de codificación más seguras. Microsoft no asume ninguna responsabilidad por daños incidentales o consecuentes en caso de que el código de ejemplo se utilice para propósitos distintos de aquellos para los que se concibió.

Para obtener ejemplos e instrucciones para su instalación:

  • En el menú Ayuda de Visual Studio, haga clic en Ejemplos.

    Para obtener más información, vea Localizar archivos de ejemplo.

  • La lista de ejemplos completa con la versión más reciente está disponible en línea en la página Visual Studio 2008 Samples.

  • También encontrará ejemplos en el disco duro de su equipo. De manera predeterminada, los ejemplos y el archivo Léame se copian en una carpeta bajo \Archivos de programa\Visual Studio 9.0\Samples\. Para las versiones Express de Visual Studio, todos los ejemplos están en línea.

Generar y ejecutar el ejemplo

Para generar el ejemplo

  1. En el IDE de Visual Studio, cargue el archivo de solución QStat.sln.

  2. En el Explorador de soluciones, haga clic con el botón secundario del mouse en la solución QStat.

  3. En el menú de acceso directo, haga clic en Generar solución.

Para ejecutar el ejemplo

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto netClient.

  2. En el menú Depurar, haga clic en Iniciar.

Cuando se inician los clientes, se imprimen una serie de mensajes en la consola que notifican las llamadas a la lógica de empresarial.

Nota:

Para obtener más información sobre la interacción entre componentes, recorra paso a paso el código estableciendo puntos de interrupción o utilizando el menú Depurar para analizar detenidamente el código de ejemplo.

Descripción del proyecto

El objetivo del ejemplo es el acceso a la lógica empresarial desde clientes COM y clientes de .NET Framework, no la implementación de la lógica empresarial, por lo que no nos vamos a centrar en ella. De hecho, en este caso la lógica empresarial sólo hace cálculos aritméticos sencillos (geométricos, armónicos y de media cuadrática), y devuelve el resultado al cliente.

Separar la lógica empresarial de la estructura que la expone (COM, en este caso) es una técnica de programación más recomendable. Sin embargo, en este ejemplo se supone que la lógica empresarial se ha implementado directamente en el objeto COM que se consumirá y que no se puede tener acceso a la lógica empresarial subyacente salvo a través de este objeto COM.

El ejemplo crea un archivo DLL contenedor que consume el objeto COM a través de #import y expone una clase de .NET Framework que consumirán los clientes de .NET Framework. Para ello se define una clase de C++ nativo, nativeMeanCalc, que contiene un miembro de datos de puntero inteligente COM incluido a través de #import. Se define una clase .NET Framework que contiene un puntero a la clase de C++ nativa. La clase de .NET Framework, netMeanCalc, contiene un puntero al objeto nativeMeanCalc que completa la ruta de destino al objeto COM. netMeanCalc es una clase pública que utilizan los clientes de .NET Framework.

Hay dos proyectos de cliente:

  • nativeClient es un cliente COM implementado en C++ nativo.

  • netClient se escribe utilizando la nueva sintaxis de C++.

Clases y palabras clave

En este ejemplo, se muestra el uso de las siguientes palabras clave:

__gc; #using; #import; try; catch; _com_error; Console::WriteLine

Vea también

Otros recursos

Ejemplos de interoperabilidad