Échantillon du modèle d'objet composant (COM)
COM est une technologie très puissante pour composer un logiciel basé sur la conception orientée objet. Veuillez consulter la documentation ici pour plus de détails.
L'un des principaux inconvénients de COM est le chauffeur initial nécessaire pour configurer les composants COM. ATL est un ensemble de bibliothèques qui aident à construire la buissier, mais s'accompagne de sa propre complexité.
Cet échantillon fournit ici le code squelettique qui ferait la fililation lourde de la configuration et de l'enregistrement COM afin que les développeurs puissent se concentrer seuls sur la logique métier plutôt que de se soucier de l'infrastructure. Il n'utilise pas d'ATL . Au lieu de cela, il utilise un code C ++ simple simple afin que les développeurs puissent comprendre et déboguer le squelette sous-jacent si nécessaire.
Termes utilisés
- Un serveur COM est un objet qui fournit la logique métier.
- Un client COM est le code qui accède au serveur COM via toute interface exposée par le serveur COM.
- L'interaction entre le client COM et le serveur COM se produit via le maréchalage et nécessite une DLL proxy-stub.
- Veuillez consulter la documentation ici pour plus de détails.
Ce projet
Voici le résumé des différents répertoires de cet échantillon.
- ComsampleProxy : Dll proxystub. Pour ajouter une nouvelle interface, ajoutez simplement un nouveau fichier IDL au projet.
- ComSampleServer : Prise en charge de l'activation du serveur COM en cours ainsi que du processus (dans un système d'exploitation fourni de substitution DLL, à savoir dllhost.exe).
- ComSampleService : Prise en charge de l'activation du serveur COM dans un service LocalSystem.
- ComSampleClient : un exemple de client COM qui appelle et teste les serveurs COM mentionnés ci-dessus.
Création et enregistrement d'un nouveau composant COM
La création d'un nouveau composant COM est super facile avec ce modèle.
- Ajoutez votre interface :
- Ajoutez un nouveau fichier IDL avec votre interface au projet ComsampleProxy. Voir Exemple de fichier /comsampleproxy/icomtest.idl.
- Implémentez votre classe COM :
- Pour l'activation en cours de processus ou hors de processus dans l'activité de substitution : ajoutez votre implémentation de classe au projet ComsampleServer. Voir l'exemple comsampleServer / ccomserverTest.cpp. Allez maintenant sur comsampleServer / dll.cpp et ajoutez simplement vos entrées de classe à "g_classes".
- Pour l'activation hors transmission dans un service local : Ajoutez votre implémentation Ajoutez votre classe au projet ComSampleService. Voir Exemple ComsampleService / CComServiceTest.cpp. Maintenant, allez dans comsampleservice / main.cpp et ajoutez simplement vos entrées de classe à "g_classes".
- Enregistrez vos composants COM :
- Copiez comsampleproxy.dll sur votre machine cible. À partir d'une invite élevée, exécutez: regsvr32 comsampleproxy.dll .
- Pour l'activation en cours de processus ou hors de processus dans l'activité de substitution : copiez comSampleServer.dll sur votre machine cible. À partir d'une invite élevée, exécutez: regsvr32 comSampleServer.dll .
- Pour l'activation hors de processus dans un service local : copiez comSampleService.exe sur votre machine cible. À partir d'une invite de commande surélevée, exécutez: comSampleService.exe / Registerserver .
C'est ça!
Marques
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée de marques ou de logos Microsoft est soumis à et doit suivre les directives de marque et de marque de la marque de Microsoft. L'utilisation de marques ou de logos de Microsoft dans des versions modifiées de ce projet ne doit pas provoquer de confusion ou impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumis aux politiques de ces tiers.