QStat, exemple : encapsule un objet COM pour exposer la logique métier

Mise à jour : novembre 2007

L'exemple QStat montre comment créer une DLL qui encapsule l'accès à un objet COM et expose ses fonctionnalités à des clients .NET Framework à l'aide de C++.

Note de sécurité :

Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues.

Pour obtenir des exemples et des instructions d'installation :

  • Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.

    Pour plus d'informations, consultez Recherche des fichiers d'exemple.

  • La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.

Génération et exécution de l'exemple

Pour générer l'exemple

  1. Dans l'IDE de Visual Studio, chargez le fichier solution QStat.sln.

  2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la solution QStat.

  3. Dans le menu contextuel, cliquez sur Générer la solution.

Pour exécuter l'exemple

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet netClient.

  2. Dans le menu Déboguer, cliquez sur Démarrer.

Une fois les clients démarrés, une série de messages s'affiche dans la console et vous notifie les appels à la logique métier.

Remarque :

Pour obtenir davantage d'informations sur l'interaction entre les composants, exécutez le code de l'exemple pas à pas en définissant des points d'arrêt ou en utilisant le menu Déboguer pour effectuer un pas à pas détaillé dans l'exemple de code.

Description du projet

Cet exemple se concentre sur l'accès à la logique métier à partir de clients COM et .NET Framework et non l'implémentation de la logique métier proprement dite qui présente par conséquent un intérêt négligeable. En réalité, la logique métier remplit dans ce cas un rôle purement arithmétique (calculs de moyennes géométriques, harmoniques et quadratiques) et retourne le résultat au client.

Du point de vue de la programmation, il est plus rationnel de séparer la logique métier de la superstructure qui expose cette logique (COM en l'occurrence). Toutefois, cet exemple suppose que la logique métier a été implémentée directement dans l'objet COM qui va être consommé et que la logique métier sous-jacente n'est accessible que par l'intermédiaire de cet objet.

L'exemple crée une DLL wrapper qui consomme l'objet COM via #import et expose une classe .NET Framework destinée à des clients .NET Framework. Pour ce faire, il définit une classe C++ native, nativeMeanCalc, qui contient les données membres d'un pointeur intelligent COM importées par l'intermédiaire de #import. Il définit une classe .NET Framework qui contient un pointeur vers cette classe C++ native. Cette classe .NET Framework, netMeanCalc, contient un pointeur vers un objet nativeMeanCalc qui complète l'itinéraire jusqu'à l'objet COM de destination. netMeanCalc est la classe publique que les clients .NET Framework utilisent.

Les projets clients sont au nombre de deux :

  • nativeClient est un client COM implémenté en code C++ natif.

  • netClient est écrit à l'aide de la nouvelle syntaxe pour C++.

Classes et mots clés

Cet exemple illustre l'utilisation des mots clés suivants :

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

Voir aussi

Autres ressources

Exemples d'interopérabilité