c# - 跟踪特定方法调用

标签 c# reflection azure

目前我正在编写一个程序,可以估算 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/

相关文章:

c# - 以 "."为前缀的类型名称的 Type.GetType 搜索规则是什么?

azure - 如何为静态 HTML 后备站点配置 Windows Azure Web 角色实例

c# - 我的第一个非重复字符算法的缺陷在哪里?

c# - 如何在其父级的ViewModel和Model的集合中删除ViewModel和Model

java - 在运行时,查找 Java 应用程序中扩展基类的所有类

asp.net - 获取 ASP.NET MVC 站点在文件系统中的路径

c# - 验证cname记录

java - 在 Azure 搜索上上传文档后,我可以立即删除它吗?

c# - WinForms (C#) 数据绑定(bind)对象到 Checkbox.Checked 属性

c# - Rhino Mocks 不抛出异常