.net 什么是织物?

.net 什么是织物?,.net,postsharp,.net,Postsharp,我今天刚刚看到了关于PostSharp的报道。我下载了代码并进行了试用,我认为这是我见过的最酷、最容易使用的处理AOP的方法 在他的博文中,Ayende说PostSharp通过IL Weaving实现了它的魔力。现在,在某种抽象的层面上,我可以推断出这意味着什么,但我想看看是否有更详细的答案。不幸的是,很长一段时间以来,谷歌第一次为我空手而归。所以我认为这对StackOverflow来说是一个很好的问题(因为我订阅Jeff的博客已有几年了,知道这个网站正在做它的事情) 那么到底什么是IL编织以及

我今天刚刚看到了关于PostSharp的报道。我下载了代码并进行了试用,我认为这是我见过的最酷、最容易使用的处理AOP的方法

在他的博文中,Ayende说PostSharp通过IL Weaving实现了它的魔力。现在,在某种抽象的层面上,我可以推断出这意味着什么,但我想看看是否有更详细的答案。不幸的是,很长一段时间以来,谷歌第一次为我空手而归。所以我认为这对StackOverflow来说是一个很好的问题(因为我订阅Jeff的博客已有几年了,知道这个网站正在做它的事情)


那么到底什么是IL编织以及它是如何实现的呢?

IL编织与字节码编织类似。Net编译为由.Net clr运行的中间语言。IL编织基本上是分析和改变中间语言。因为它是在那个级别完成的,所以它可以用于所有.NET语言。

如果您改为使用谷歌MSIL注入,可能会有所帮助。这个链接来自,它很好地解释了这一点

我的公司最近购买了一款名为dynaTrace的产品,用于性能诊断。它使用MSIL注入来检测周围的方法。基本上,它会在方法之前和之后添加IL代码来计时方法(我相信还有更多)


这是一个相当复杂但很好的过程解释。

编织是指将功能注入现有程序的过程。这可以在多个层次上从概念上实现:

  • 源代码编织将在编译代码之前注入源代码行
  • IL编织(对于.NET)将代码作为IL指令添加到程序集中
  • 字节码编织(用于Java)在类文件上工作,请参见以下注释wrt

理论上,您可以更深入地使用编译为本机指令的可执行文件进行编织,但这会增加很多复杂性,我不知道有什么可以做到这一点。

本机指令“编织”在本机可执行调试器中很常见。例如,在英特尔x86指令集上,在代码中设置断点需要在目标代码中插入INT 3操作码。这将覆盖本机指令,因此您还必须保存存在的字节,并在命中断点后将其放回,以便程序正常执行。是的,这很复杂,这就是为什么编写调试器是一门稀罕的艺术;织物;字节码编织;Aspect#注意,在Jeroen留下的评论中,gutgames.com的帖子实际上讨论了使用子类化而不是IL编织实现AOP。您的第二个链接(“此处”)不再可用,可能是因为相应的问题已经存档。您是否偶然想起您所指问题的年份/月份?提前谢谢。链接已备份。我在打开它时添加了一些信息。