加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

德尔福的AOP支持

发布时间:2020-12-15 04:29:29 所属栏目:大数据 来源:网络整理
导读:在Delphi中可以做面向方面的编程吗?我将对本地支持以及第三方解决方案感兴趣. 我没有一个具体的问题我想用AOP解决,但我只是兴趣学习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项目是一个很好的例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读