24

有没有人在生产环境中使用过 Postsharp AOP 框架?有什么陷阱吗?为了做一些日志记录等,Postsharp 可以与 Log4Net 结合使用吗?

任何有关将 Postsharp 与 Web 应用程序和/或 Log4Net 一起使用的教程都将受到高度赞赏。

4

6 回答 6

26

我和另一位队友在几个正在生产并且已经使用了几个月的项目中以不同的方式使用 PostSharp。例如,在一种情况下,我使用它来记录方法参数值以防出现异常。PostSharp Laos(包含在 PostSharp 中)是一种易于使用的注入方法调用的方式(例如,在方法进入、退出和异常时),您可以轻松地将日志调用添加到 log4net 注册的记录器。

它增加了构建时间,足以稍微改变我的构建习惯,但对于它提供的好处来说肯定不会太多,IMO。在编写代码时,您可能希望将其从本地构建中排除,这很容易做到,因此您可以继续频繁快速地构建,然后将其包含在构建服务器等中。

这是来自 Gael(PostSharp 创建者)的一个很好的 PostSharp 教程......虽然它很旧,但很高兴看到它贯穿始终。在我迄今为止遇到的控制台、winforms、WPF 或 WebApp 中使用它确实没有区别。

我还要说,一旦您弄清楚如何将老挝方面添加到项目中,重复练习就非常容易。您将方面应用到多少程序集/类与 PostSharp 添加到您的构建中的时间之间存在关系。因此,您甚至可以稍微控制构建时间问题。

至于代码,我对 PostSharp 的工作方式印象非常深刻……它从未搞砸过构建、使程序集无效或以其他方式弄乱了代码。我什至在 ASP.NET 应用程序中使用过它,包括代码覆盖率和性能检测(因此它与 MS 的 Assembly 检测工具配合得很好)。

总而言之,我会定义。建议您尝试一下以满足您的 log4net 要求。

于 2009-01-06T21:23:03.703 回答
5

我使用 Postsharp,我喜欢它。它为我节省了很多我必须添加的重复代码。

我不需要 log4Net 的任何高级功能,谷歌足以了解它是如何工作的。它只是做这项工作。到目前为止,我还没有看到任何缺点。

对于 Postsharp 来说,网站上的入门指南、博客和浏览源代码就足够了。一个主要缺点是增加了构建时间。我讨厌等待我的电脑工作。在 Visual Studio(在快速 PC 上)中按下 ctrl-shift-b 大约需要 8 秒,以获得 +-60K loc 解决方案,其中 2 个项目使用 postsharp 构建操作。如果可以,请尝试在尽可能少的项目中使用 Postsharp。

当您真的不想使用 postsharp 时,您可以创建一个包含 20 个项目的解决方案,并将 post-build 命令添加到每个项目中。构建时间将足以惹恼团队的其他成员。

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

于 2009-01-06T19:49:54.657 回答
4

我们尝试将 post sharp 用于一两件事,问题是它使构建时间过长。如果你正在使用 CI,并且有一个频繁的签入方法,那么你最好有一个非常好的构建服务器和工作站机器。

显然 .net 4.0 将会有一堆编译器钩子来让像 AOP 这样的事情更容易做。我们的最终结论是等待。

于 2009-01-06T16:31:07.507 回答
4

我用postSharp,我喜欢它。后期的构建时间很烦人,但它几乎没有能力。在调试模式下,我使用条件 SKIPPOSTSHARP 来消除后锐化。

于 2009-02-15T10:39:06.317 回答
3

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

于 2009-03-05T21:25:34.400 回答
2

我们确实在生产中使用 PostSharp,用于 3.5 运行时和 Silverlight 运行时。为了加快构建速度,您可以使用 /m: switch for msbuild(谷歌用于 msbuild 的并行构建)。他们还承诺在即将发布的版本中显着加快速度。

于 2009-03-05T19:03:59.420 回答