首页 / 软件开发 / .NET编程技术 / AOP解析:含简单AOP框架实现(包括Proxy模式实现与Attribute实现)
AOP解析:含简单AOP框架实现(包括Proxy模式实现与Attribute实现)2011-04-15 博客园 pangxiaoliangAOP简介:AOP(Aspect Oriented Programming)“面向切面编程”,其实和OOP(Object Oriented Programming)“面向对象编程”一样是一种编程思路,而且个人以为翻译为“切面导向编程 ”更为妥当,OOP也应翻译为“对象导向编程”。因为正是有了“切面”和“对象”的想法和 概念才产生了“Aspect Oriented Programming”和“Object Oriented Programming”这些 编程方法,所以“导向”更为贴近些。以下想法均为个人揣摩得出,具体官方概念请Google,Bing,Baidu.AOP,个人以为是一种行为(Behavior)的注入,在不改变原有逻辑(original logic) 的基础上,将一些可重用的其他逻辑(other logic)注入到原有逻辑(original logic)中 。切面(Aspect)即为其他逻辑(other logic),是一些特殊的业务关注点,包括“事务处理 ”,“异常捕捉”,“日志记录”,“身份验证”等方面。这种“切面”逻辑一般贯彻整个解决方案,AOP方式将这种切面提取出来,实现了解耦和 代码简洁化。简单例子:下面举个简单的例子来说明为什么要使用AOP:1)没有使用AOP的Castle ActiveRecord“事务处理”class AOPTest
{
// ......
/// <summary>
/// Save the retire user info.
/// </summary>
/// <param name="site">The user will be retire user.</param>
public void SaveRetireUserInfo(User user)
{
using(TransactionScope transaction = new TransactionScope ())
{
try
{
RetireUser retireUser = new RetireUser();
retireUser.Name = user.Name;
retireUser.Department = user.Department;
// ...
user.Delete();
retireUser.Save();
transaction.VoteCommit(); //完成事务
}
catch(Exception ex)
{
Log.Write(ex.Message);
transaction.VoteRollBack(); //事务回滚
}
}
}
// ......
}