目前我正在编写一个程序,可以估算 Azure 应用程序的成本。为此,我想拦截所有(间接)调用(Azure)服务器的方法。对于每种方法,决定其属于成本的哪个方面(例如(存储交易、服务总线交易、 token 请求等))
这样做的困难之一是我还想在模拟类/方法时拦截方法调用,因此该程序也可以在 Azure 应用程序开发期间用于(单元)测试。
所以我想知道是否有一种方法可以“订阅”类的方法。当调用此方法时,将触发一个事件。 或者是否有其他(更好的)解决方案来拦截存储事务、服务总线事务、 token 请求等,也适用于发送存储事务但被模拟的类?
提前致谢
编辑1: 有谁知道是否有一些(帮助程序)类/库或引用包含/知道影响 Azure 应用程序成本的所有类/方法?
编辑2 这是解决上述问题的好方法吗?或者有其他选择吗?
最佳答案
创建 HTTP 代理并让您的应用程序通过该代理。这样您就可以真正拦截对 Windows Azure 存储/服务总线/...的每个请求
虽然 AOP 是一个很好的解决方案,但它不能满足您的需求。采取CloudBlob.UploadFile方法为例。从 AOP 角度来看,这是一次调用,但如果您查看 HTTP 事务的数量,这可能远远超过 1 次调用(大文件被分块并通过多个 HTTP 请求发送)。
这就是为什么如果您想要监视对 Windows Azure 服务的所有调用,您需要使用 HTTP 代理之类的低级别内容。
关于c# - 跟踪特定方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961458/