监控正在运行的.net应用

时间:2020-03-06 14:32:07  来源:igfitidea点击:

例如,我有一些需要监视的正在运行的.net应用程序,然后在App1中调用了MethodA,我的监视应用程序应该可以检测到此情况。我有很多正在运行的应用程序,此处提出的解决方案是重新编译所有这些应用程序,并在我们要监视的所需方法中加入新的一行。我只想绝对没有办法这样做。那么有人做过这样的事情吗?基本上,我需要创建一个新应用,当我单击它上的一个按钮时,它将告诉我:在App1中实时调用了MethodA。

谢谢!

解决方案

System.Diagnostics.PerformanceCounter是一个不错的起点。我们可以创建可以在"性能"控制面板小程序中查看的新计数器。一开始它们有点令人困惑,但是当我们意识到平均计数器需要两个组件来计算百分比时,它会变得容易得多。

我不知道.NET是否具有匹配机制,但是Java允许我们指定代理JAR文件,即在加载每个类时会通知/调用的类。然后,通过检测/字节码操作,我们可以拦截此类方法调用。也许我们可以在.NET中以某种方式替换类加载器。没有把握。

反射是我们在.NET中所需要的,但是我不确定我们想要执行的操作背后的实现细节。

我们可以通过几种方法来执行此操作。一种是使用log4Net,并通过调用log4Net的write方法来"散布"方法。我们可以选择各种日志添加程序(目的地),例如电子邮件或者数据库,但鲜为人知的技巧是下载监听默认消息的独立程序DebugView(SysInternals-> Microsoft)。

PostSharp传递方式,如何编辑已编译的.net代码。该编辑用Ccode编写,该Ccode可以被编译(attribute)(属性)或者通过配置代码来编写。 Thay有一种机制,可以记录(或者填充或者其他任何方式)方法/事件调用等等。

我认为,这是我们需要的工具。