NFramework开源AOP框架最新进展
来源:岁月联盟
时间:2006-05-24
1 版本更新说明
1.1 增加AOP功能(2006-05-17)
实现了AOP框架,并提供了基于AOP的自动事务管理、性能监控、日志管理、权限控制等常用功能。1.2 SQL语句自动缓存(2006-05-17)
实现了所有自动生成的动态SQL语句缓存功能,使框架性能得到非常大的提高。1.3 AppUtil类的扩展(2006-05-17)
增加了常用的处理下拉框等绑定控件的功能。2 介绍使用AOP的事务处理方式
AOP为我们的代码提供了非常大的减化,下面以处理事务为例来说明这种减化。按照目前多数据应用程序处理事务的方式,我们可能会写如下的代码: /// <summary> /// 获取实体集合 /// </summary> /// <param name="query">条件</param> /// <returns>实体集合</returns> public MenuEntities GetEntities(QueryEntity query) { // 事务类 Transaction tx = new Transaction(); MenuDAL dal = new MenuDAL(); MenuEntity menu = new MenuEntity(); MenuEntities menus = new MenuEntities(); try { dal.SyncTrans(tx.BeginTransaction()); menus.ConvertFrom(dal.GetEntities(menu, query)); tx.Commit(); } catch (Exception ex) { tx.Rollback(); ErrorHandler.HandleError(ex); } return menus; }其中,我们的代码要负责打开事务、递交事务、出错时回滚事务等相同的却又大量存在的代码,这是个不小的工作量。通过应用AOP,我们的代码最终得到非常大的减化,并且功能也得到增强。相同功能的代码使用AOP的方式如下: /// <summary> /// 获取实体集合 /// </summary> /// <param name="query">条件</param> /// <returns>实体集合</returns> [Transaction(IsolationLevelEnum.ReadCommitted)] // 用元数据的方式标明AOP public MenuEntities GetEntities(QueryEntity query) { MenuDAL dal = new MenuDAL(); MenuEntity menu = new MenuEntity(); MenuEntities menus = new MenuEntities(); menus.ConvertFrom(dal.GetEntities(menu, query)); return menus; }AOP为我们处理的事务递交、出错时回滚,使我们的代码可以真正的做到只关心业务,框架为我们提供了所有为实现业务的而需要的附加功能。











