NFramework开源AOP框架最新进展

来源:岁月联盟 编辑:zhu 时间:2006-05-24
NFramework开源AOP框架升级进展

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为我们处理的事务递交、出错时回滚,使我们的代码可以真正的做到只关心业务,框架为我们提供了所有为实现业务的而需要的附加功能。