有在生产环境中使用Postsharp的经验吗?

25

有人在生产环境中使用过Postsharp AOP框架吗?有什么需要注意的地方吗?为了进行一些日志记录等操作,Postsharp能否与Log4Net一起使用?

非常感谢任何关于在Web应用程序和/或Log4Net中使用Postsharp的教程。


2
我曾经在它商业化之前考虑过使用它。这对于一个AOP库来说是非常错误的路线。 - Ivan G.
我认为社区版仍然存在。 - Perpetualcoder
6个回答

26
我和另外一个队友在多个已经上线使用了几个月的项目中以不同的方式使用PostSharp。例如,在一个案例中,我用它来记录方法参数值以备异常发生时使用。PostSharp Laos(包含在PostSharp中)是一个易于使用的方法来注入方法调用(例如进入方法、退出方法和异常处理),你很容易地向log4net注册的日志记录器添加日志调用。
这增加了构建时间,足以稍微改变我的构建习惯,但我认为它提供的好处绝对值得这些努力。编写代码时,您可能希望将其从本地构建中排除在外,这很容易做到,因此您可以继续频繁快速地进行构建,然后将其包含在您的构建服务器等中。
这里有一个来自Gael(PostSharp创作者)的优秀的PostSharp教程…虽然它有点老,但看一下还是不错的。到目前为止,我没有遇到在控制台、WinForms、WPF或WebApp中使用它的任何区别。
我还想说,一旦你弄清楚如何向项目添加Laos方面,重复这个过程非常简单。应用方面的程序集/类的数量与PostSharp添加到构建中的时间之间存在关系。因此,你甚至可以在一定程度上控制构建时间问题。
至于代码,我非常非常印象深刻PostSharp的工作方式…它从来没有搞砸过构建,使程序集无效或以其他方式搞乱代码。我甚至在ASP.NET应用程序中使用它,带有代码覆盖和性能仪器(所以它很好地与MS的程序集仪器工具相匹配)。
总体而言,我肯定会推荐您尝试使用它来满足log4net的需求。

5
我们尝试使用PostSharp处理一两件事情,但问题是它会让构建时间变得太长。如果你正在使用CI,并且有频繁的代码检入方法,那么你最好拥有一个非常好的构建服务器和工作站。

显然,.net 4.0将拥有一堆编译器钩子,使得像AOP这样的事情变得更容易。我们最终的结论是等待它的到来。


1
谢谢,我正需要这种输入。我们团队里有一个Postsharp的粉丝 :) - Perpetualcoder
你在哪里读到编译器钩子的相关信息?我很好奇! - Paco
2
Anders最近在会议上谈到了这个问题(不确定我从哪里听说的)。显然,长期目标是使CSC成为完全托管代码。 - Matt Briggs

5

我使用Postsharp并且很喜欢它。否则我需要添加很多重复的代码。

对于log4Net,我不需要任何高级功能,Google足以找到其使用方法。它只是完成了工作。到目前为止,我没有看到任何缺点。

对于Postsharp,网站上的入门指南、博客和浏览源代码就足够了。一个主要的缺点是增加了构建时间。我讨厌等待电脑处理任务。在使用Postsharp构建操作的2个项目的解决方案中,按下Visual Studio中的ctrl-shift-b(在快速电脑上)需要约8秒钟。如果可以,请尽量在最少的项目中使用Postsharp。

当你真的不想使用Postsharp时,可以创建一个包含20个项目的解决方案,并将后期构建命令添加到每个项目中。构建时间将足够长以打扰团队的其他成员。

个人而言,我可能会继续在未来的项目中使用Postsharp。其优点胜过额外的构建时间。


4

我使用PostSharp,非常喜欢它。 尽管PostSharp的构建时间有些烦人,但还是可以接受的。 在调试模式下,我使用条件SKIPPOSTSHARP来消除PostSharp。


3
根据PostSharp社区调查,很多公司在生产中使用PostSharp技术。令人沮丧的是,他们拒绝被识别 :-(。


2
我们在生产中确实使用了PostSharp,包括3.5运行时和Silverlight运行时。为了加快构建速度,您可以在msbuild中使用/m:开关(请搜索使用msbuild进行并行构建)。他们也承诺在即将发布的版本中大幅提高速度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接