NFramework开源AOP框架最新进展

王朝other·作者佚名  2006-05-19
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航