德尔福的AOP支持

前端之家收集整理的这篇文章主要介绍了德尔福的AOP支持前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Delphi中可以做面向方面的编程吗?我将对本地支持以及第三方解决方案感兴趣.

我没有一个具体的问题我想用AOP解决,但我只是兴趣学习AOP.

解决方法

AOP取决于两件事情:

>将附加代码注入现有代码单元的能力
>将代码注入到哪里的机制.

这通常被称为代码编织.在程序转换的较大研究中是专门化.

JIT编译语言具有比静态编译程序更多的选项,因为更多的信息保留在字节码/ IL中.它们还支持反射,它提供了在运行时操作代码的能力.

Delphi.NET和Prism具有与任何其他.NET语言相同的访问权限.

Delphi Win32有两个AOP框架,我知道.第一个是MeAOP,已经提到了.第二个是Infra.两个项目都采用与AOP类似的方法.他们使用RTTI和巧妙的指针操作的组合来截取方法调用,以便您可以在方法调用之前或之后运行其他代码.您将交叉切割功能定义为框架AOP类的子类.通过将方法名称作为字符串参数传递给AOP框架,注册拦截方法.

这两个框架仍然是积极开发的,并且实际上比仅仅AOP更大.不幸的是,文档有些稀疏(在Infra的情况下,主要是葡萄牙语)

另一个项目在2004年通过源代码编写了AOP,取得了一些成功.基本上,他们在名为DMS的通用程序转换工具之上构建了一个方面的编织器,并使用它在编译之前将代码注入到delphi源文件中.他们面向方面的语言主要受AspectJ的影响.

http://www.gray-area.org/Research/GenAWeave/链接到原始论文和演示文稿以及转换过程的一些视频.

也可以使用运行时代码仪器来完成此操作.它是一些技术使用的技术,将计数器和堆栈跟踪注入到运行代码中,而无需修改原始源.可以使用类似的技术将横切关注点注入到静态编译的可执行文件中. PinTool项目是一个很好的例子.

猜你在找的Delphi相关文章