AOP C#在行动(续1)

今天开始考虑AOP的C#实现,对于静态的Weavor方法迷惑中。在源代码级别的编织是采用像AspectJ那样做呢,还是另辟蹊径?一开始就要让我头痛了。

AspectJ的方式是:对源代码进行解析,然后在加入点(JoinPoint)插入Aspcet的代码,形成中间文件,再编译成最终文件。这种方法产生的性能比较好,有一个缺陷就是如果修改了weaving的规则,就要重新编译。(或许可以采用某些设计模式来消除这个弱点)

另外一种思路就是一开始就采用设计模式,在JontPoint处插入delegate,以后如果需要修改规则,不需要重新编译源代码,只要通过修改xml的aspect描述文件即可。缺点是delegate有系统开销,所以性能不如前面的方法。

真的很难取舍,是不是两种方法都支持呢?头痛ing...

时间: 2024-10-27 11:47:54

AOP C#在行动(续1)的相关文章

AOP C#在行动(续2)

今天开始写Paser了,不过是从SharpDevelop借过来而已(不想重新发明轮子,^_^).但是,还是对原先的代码作了一些修改,即使到了RC2了,SharpDevelop的代码中还是存在问题.今天看代码是就发现了两处.比如下面的代码: static public int Compare(IList a, IList b, IComparer comparer) { if (a == null || b == null) { return 1; } if (a.Count != b.Count

IoC+AOP的简单实现

对EnterLib有所了解的人应该知道,其中有一个名叫Policy Injection的AOP框架:而整个EnterLib完全建立在另一个叫作Unity的底层框架之上,我们可以将Unity看成是一个IoC的框架.对于一个企业应用来说说,AOP和IoC是我们进行逻辑分离和降低耦合度最主要的方式,而将两者结合起来具有重要的现实意义. 一.基于IoC+AOP的编程 到底将IoC和AOP进行整合后,会对编程但来怎样的影响,我写了一个简单的例子(你可以从这里下载该实例).假设我现在有两个模块,分别称为Fo

spring学习笔记(19)mysql读写分离后端AOP控制实例

在这里,我们接上一篇文章,利用JNDI访问应用服务器配置的两个数据源来模拟同时操作不同的数据库如同时操作mysql和oracle等.实际上,上个例子可能用来模拟mysql数据库主从配置读写分离更贴切些.既然如此,在本例中,我们就完成读写分离的模拟在web端的配置实例. 续上次的例子,关于JNDI数据源的配置和spring datasource的配置这里不再重复.下面着重加入AOP实现DAO层动态分库调用.可先看上篇文章<spring学习笔记(18)使用JNDI模拟访问应用服务器多数据源实例 >

我心中的核心组件(可插拔的AOP)~大话开篇及目录

核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等. 对于以上内容可以说即是一个大餐,又是一个挑战,就让我带着大家去迎接这份挑战吧,呵呵! 可插拔的AOP AOP即面向切面的编程,是指将一个公用的与领域无关的组件抽象出来,方便在各个项目中使用.在微软很多项目中,基本都会有这种组件,它们叫它frameworks,或者叫core,从字面上看,就是核心的东西,而这些核

J2EE中使用Spring AOP框架和EJB组件

j2ee 快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spring Framework对于J2EE应用程序开发十分具有吸引力.Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面--从监控和审计.缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求. 本文将向您介绍Spring的AOP框架在

第三章 AOP 基于Schema的AOP

        基于Schema定义的切面和前现两种方式定义的切面,内容上都差不多,只是表现形式不一样而已. 3.7.1一般增强的使用 a.目标类 public class Target { public void say(){ System.out.println("say..."); } public String getName(int id,String name){ System.out.println("getName..."); return &quo

Alter dataSource in Spring By AOP And Annotation

Here is an article of how to use AOP and Annotation mechanism to alter dataSource elegantly. First, I want make sure that everyone knows how to build multiple dataSource. Please check this article Dynamic-DataSource-Routing After this, we will have a

我要造轮子之基于JDK的AOP实现

1 前言 Aspect Oriented Programing,面向切面编程. 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP主要用于日志记录,性能统计,安全控制(权限控制),事务处理,异常处理等.将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码. 像Spring

借助 AOP 为 Java Web 应用记录性能数据

作为开发者,应用的性能始终是我们最感兴趣的话题之一.然而,不是所有的开发者都对自己维护的应用的性能有所了解,更别说快速定位性能瓶颈并实施解决方案了. 2015 年北京 Velocity 的赞助商大多从事 APM 领域,提供性能剖析.可视化甚至优化的解决方案.这些厂商的产品看起来能够很好地帮助中小企业的开发者解决应用性能上的缺陷,但是这些产品几乎都有着一个致命的缺陷:极强的侵入性. 开发者需要在业务生产代码中嵌入 APM 厂商提供的埋点代码,才能够使用 APM 厂商提供的 SaaS 服务.在瞬息万