我正在编写一个应用程序框架,该框架将被许多客户端应用程序使用,并用作它们构建在其上的核心。框架本身是一个MVC3(当前)应用程序,作为Nuget包使用,除其他外,提供锁定布局,UI模板和IoC之类的统一方法,部署包装等。我们有一个问题。目前正在进行的摔跤是在客户端应用程序中引入方法入口和退出的日志记录。这不是一个关于SO的新主题 - 我已经看了几篇关于它的帖子:
理想情况下,我希望客户端应用程序的开发人员不必考虑此级别的日志记录,并让框架在后台处理它,而无需开发人员对其代码进行任何更改。正如链接帖子中提到的,有些东西如PostSharp和其他AOP框架,但它们仍然依赖于添加的属性来启用日志记录,这使得客户端开发人员负责添加这些属性。理想情况下,我希望框架代码能够管理所有这些,而无需客户端开发人员做任何事情。感觉就像其中一个IoC框架应该提供的东西,但我还没有发现任何适合该法案的东西。我们目前正在使用NInject作为框架IoC容器,但这可能会改变,所以我不会受任何特定容器的约束。我也没有绑定到特定的日志框架。想法?
答案 0 :(得分:1)
Autofac有一个扩展,它使用DynamicProxy来实现方法拦截。您可以使用它来设置方法入口并退出应用程序中通过IoC容器解析的所有类的日志记录(或根据您在应用程序框架中定义的某些约定)。 http://code.google.com/p/autofac/wiki/DynamicProxy2
答案 1 :(得分:0)
Unity
为method interception
提供了一个非常好的框架。在MSDN上,有一篇文章描述了如何在横切关注点上使用此框架。我们为Logging
和Caching
提供了一个代码示例。
https://msdn.microsoft.com/en-us/library/dn178466(v=pandp.30).aspx