NFramework开源AOP框架最新进展

- 中国WEB开发者网络 (http://www.webasp.net)
-- 技术教程 (http://www.webasp.net/article/)
--- NFramework开源AOP框架最新进展 (http://www.webasp.net/article/28/27655.htm)
-- 作者:未知
-- 发布日期: 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为我们处理的事务递交、出错时回滚,使我们的代码可以真正的做到只关心业务,框架为我们提供了所有为实现业务的而需要的附加功能。


 


webasp.net