我们的应用程序调用外部服务,例如
//in client factory
FooServiceClient client = new FooServiceClient(binding, endpointAddress);
//in application code
client.BarMethod(); //or other methods
是否可以跟踪所有这些调用(例如通过事件或类似的东西),以便应用程序可以收集调用次数、响应时间等统计信息?请注意,我的应用程序本身需要访问这些值,而不仅仅是写入日志文件。
我能想到的是创建一个 VisualStudio 生成的 FooServiceClient 的子类,然后添加这样的代码
override void BarMethod()
{
RaiseStart("BarMethod");
base.BarMethod();
RaiseEnd("BarMethod);
}
RaiseStart 和 RaiseEnd 方法将引发我的代码将监听的事件。
但这似乎很繁琐(因为要覆盖的方法很多)并且有很多重复的代码,我的代码每次服务合同更改时都需要更改等等。有没有更简单的方法来实现这一点,例如通过使用反射来创建子类或通过利用 WCF 中的内置方法(如果有)?