当前位置:  开发笔记 > 前端 > 正文

什么是IL编织?

如何解决《什么是IL编织?》经验,为你挑选了2个好方法。

我今天刚看到Ayende关于PostSharp 的帖子.我下载了代码并试了一下,我认为这是我见过的最酷,最容易使用的方法来处理AOP.

在他的帖子中,Ayende说PostSharp通过IL Weaving完成它的魔力.现在,在一些抽象的层面上,我可以推断出这意味着什么,但我想知道是否有更详细的答案.不幸的是,很长一段时间以来,谷歌第一次出现在我身上.所以我想这将是StackOverflow的一个很大的问题(因为我是一个订阅Jeff的博客好几年,现在,知道这个网站是做它的事).

那么究竟是什么IL编织以及它是如何完成的?



1> Rob Walker..:

编织是指将功能注入现有程序的过程.这可以在概念上以多个级别完成:

源代码编织将在编译代码之前注入源代码行

IL编织(用于.NET)将代码添加为程序集中的IL指令

ByteCode weaving(for Java)适用于类文件,请参阅这些注释与AspectJ一起使用

从理论上讲,你可以更深入地编写一个可执行文件编译成本机指令,但这会增加很多复杂性,我不知道有什么能做到这一点.


本机指令"编织"在本机可执行调试器中很常见.例如,在Intel x86指令集上,在代码中设置断点需要在目标代码中插入INT 3操作码.这会覆盖本机指令,因此您还必须保存那里的字节并在命中断点后将其放回,这样程序才能正常执行.是的,它很复杂,这就是为什么编写调试器是一种稀有的艺术.
我在这个主题上收集的一些链接:源代码编织http://www.tara.tcd.ie/handle/2262/1239; IL编织http://www.gutgames.com/post/Creating-an-AOP-Library-in-Net-Part-1.aspx; ByteCode编织http://www.eclipse.org/aspectj/doc/released/devguide/bytecode-concepts.html; 方面#http://www.developerfusion.com/article/5307/aspect-oriented-programming-using-net/2/

2> Steve g..:

IL Weaving与ByteCode Weaving类似..Net编译为由.NET clr运行的中间语言.IL Weaving基本上是分析和改变中间语言.由于它是在该级别完成的,因此可以为所有.NET语言完成.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有