Aspect Oriented Programming(AOP) 介绍
什么是AOP?
:) = Aspect Oriented Programming
Business Rule | (AOP)
Security Permission |
Logging | --------------> Business Logic
Database Operations |
Web Service |
为什么AOP?
为了独立业务
怎样AOP?
举个例子
按照传统的写法写登陆业务
1/* Traditional Way */
2bool isAdministrator = false;
3if(Users.ValidateUser(Context.User.UserName) == UserRole.Admministrator)
4{
5 isAdministrator = true;
6}
7if(!isAdministrator) throw new NoPermissionExpection();
8// Bussiness Code
9/* -----------------------------------------------------------------
10* Aspect Oriented Programming
11* AOP指的是用面向方面的编程来解决面向方面的问题
12* 一般包含: 1.切入点 2.方面问题的解决
13* 在实现中一般加入了动态代理的成分反倒复杂了许多,包含了五个方面
14* 1. 连接点 2. 接入点 3. 通知 4.方面 5. 引入
15------------------------------------------------------------------*/
16if(!Memebership.User.HasPermission) throw new NoPermissionExpection();
2bool isAdministrator = false;
3if(Users.ValidateUser(Context.User.UserName) == UserRole.Admministrator)
4{
5 isAdministrator = true;
6}
7if(!isAdministrator) throw new NoPermissionExpection();
8// Bussiness Code
9/* -----------------------------------------------------------------
10* Aspect Oriented Programming
11* AOP指的是用面向方面的编程来解决面向方面的问题
12* 一般包含: 1.切入点 2.方面问题的解决
13* 在实现中一般加入了动态代理的成分反倒复杂了许多,包含了五个方面
14* 1. 连接点 2. 接入点 3. 通知 4.方面 5. 引入
15------------------------------------------------------------------*/
16if(!Memebership.User.HasPermission) throw new NoPermissionExpection();
关于动态代理的部分
例如:
[Before(Memebership.User.HasPermission)]
public void ExecuteLogic()
{
// TODO:: Implement the business logic
}
public class ExecuteEngine
{
public void Run()
{
// TODO:: Get the attribute to find out if there is a before attribute。
// If there is, Run the Arrtibute Method First, then run the ExecuteLogic
}
}
public void ExecuteLogic()
{
// TODO:: Implement the business logic
}
public class ExecuteEngine
{
public void Run()
{
// TODO:: Get the attribute to find out if there is a before attribute。
// If there is, Run the Arrtibute Method First, then run the ExecuteLogic
}
}
框架
Spring, Aspect# 等等
关于AOP更多描述:
http://www.jdon.com/AOPdesign/jdon-aop.htm
http://wayfarer.cnblogs.com/articles/241024.html