Podczas wdrażania IComMethodEvents otrzymujesz trzy zdarzenia.Korelacja IComMethodEvents
- OnMethodCall
- OnMethodException
- OnMethodReturn
Celem co próbuję zrobić, to zalogować razy połączeń za metody COM + komponentów.
Czas zdarzenia mogą być pobierane za pomocą lTime
i lMicroTime
w strukturze COMSVCSEVENTINFO więc po zalogowaniu się, że czas w obu OnMethodCall
aw OnMethodReturn
powinienem być w stanie obliczyć czas połączenia, ale jak mogę być pewien, że dwa wydarzenia są powiązane.
Podczas testowania wygląda na to, że powinienem móc użyć obiektu aktywowanego just-in-time (JIT) oid
.
Jakiekolwiek problemy z robieniem tego w ten sposób lub czy istnieją inne sposoby?
Jednym z problemów, które mogą być, jest to, że widzę, że oid
jest często ponownie wykorzystywany, więc jeśli zdarzenia z jakiegoś powodu zostaną wyrzucone z rzędu, może być nieco trudniej wprowadzić korelację.
Aktualizacja 1:
Dalsze badania pokazują, że nie jest wystarczająco oid
w multi scenariusza użytkownika. Ten sam obiekt jest używany w tym samym czasie, więc korelacja musi być wykonana przy użyciu co najmniej oid
i original caller
. Następne pytanie brzmi: Jak uzyskać oryginalnego dzwoniącego od subskrybenta zdarzenia COM +?
Aktualizacja 2:
Wystarczy znaleźć IComMethod2Events. Różnica polega na tym, że zdarzenia mają identyfikator wątku wykonującego połączenie. Wygląda obiecująco w testach i nie mogę sobie wyobrazić scenariusza, w którym korelacja mogłaby się nie udać. Model gwintowania dla komponentów COM + to Any Apartment
.
Aktualizacja 3
W tym artykule Creating COM+ PerfMon Counters to Monitor COM+ Dataoid
służy. Nie sądzę, żeby to wystarczyło w wielowątkowym mieszkaniu.
Uwaga: W końcu zaimplementuję to w Delphi, więc dodałem tag Delphi. Dodałem również znacznik C#, ponieważ jest prawdopodobne, że język używany do implementacji interfejsu nie jest w ogóle ważny. Aktualizacja: Wstępne dodawanie tagu C++ tylko po to, aby zwrócić uwagę kogoś, kto już wcześniej używał tych rzeczy.
Narzędzie do monitorowania transakcji COM +: ['AppMetrics'] (http://www.xtremesoft.com/solutions/white_paper_transactions.html). Być może przydatne i możesz dowiedzieć się, w jaki sposób monitorują. –
Ta strona może być również pomocna, ['MSDN COM + Tracking'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd179218 (v = vs.85) .aspx). –
@LURD dzięki za linki. Czytaj trochę z łącza MSDN, a instrumentacja COM + ostatecznie doprowadzi cię do wydarzeń w Q. COM + Tracking pozwoli ci zgromadzić dane COM + tylko na poziomie komponentu (chyba). –