Lors de l'implémentation de IComMethodEvents, vous obtenez trois événements.Corrélation IComMethodEvents
- OnMethodCall
- OnMethodException
- OnMethodReturn
L'objectif de ce que je suis en train de faire est de vous connecter les temps d'appel par méthode dans les composants COM +.
Le temps de l'événement peut être récupéré à l'aide lTime
et lMicroTime
dans la structure COMSVCSEVENTINFO en se connectant ce temps dans les deux OnMethodCall
et OnMethodReturn
je devrais être en mesure de calculer le temps d'appel, mais comment puis-je être sûr que les deux les événements sont liés. En testant, il semble que je devrais être capable d'utiliser l'objet activé Just-in-time (JIT) oid
Y a-t-il des problèmes à le faire comme cela ou existe-t-il d'autres façons? Un problème qui pourrait être que je vois le oid
est fréquemment réutilisé donc si les événements pour une raison quelconque sont déclenchés dans le désordre il pourrait être un peu plus difficile d'implémenter la corrélation.
Mise à jour 1:
D'autres tests montre que oid
ne suffit pas dans un scénario multi-utilisateur. Le même objet est utilisé en même temps, donc la corrélation doit être faite en utilisant au moins oid
et original caller
. Une question de suivi serait: Comment obtenir l'appelant d'origine d'un abonné à un événement COM +?
Mise à jour 2:
Je viens de trouver IComMethod2Events. La différence est que les événements ont un identifiant du thread exécutant l'appel. Il semble prometteur dans les tests et je ne peux pas imaginer un scénario où la corrélation pourrait échouer. Le modèle de thread pour les composants COM + est Any Apartment
.
Mise à jour 3
Dans cet article Creating COM+ PerfMon Counters to Monitor COM+ Dataoid
est utilisé. Je ne pense pas que cela soit suffisant dans un appartement multithread.
Remarque: Je vais éventuellement l'implémenter dans Delphi, j'ai donc ajouté la balise Delphi. J'ai également ajouté la balise C# parce que les chances sont que le langage utilisé pour implémenter l'interface n'est pas important du tout. Mise à jour: Ajout tentant de la balise C++ juste pour attirer l'attention de quelqu'un qui a déjà utilisé ce truc auparavant.
Un outil pour surveiller les transactions COM +: ['AppMetrics'] (http://www.xtremesoft.com/solutions/white_paper_transactions.html). Peut-être utile et vous pouvez comprendre comment ils font la surveillance. –
Cette page peut également vous être utile, ['MSDN COM + Tracking'] (http://msdn.microsoft.com/fr-fr/library/windows/desktop/dd179218 (v = vs.85) .aspx). –
@LURD merci pour les liens. Lisez un peu du lien MSDN et COM + Instrumentation vous conduira éventuellement aux événements du Q. COM + Tracking vous permettra d'obtenir les données que COM + recueille pour vous mais seulement jusqu'au niveau du composant (je pense). –