---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
在外观层、中间服务层和数据访问层任意一层之间再加入一个或多个层,这样就形成了N层架构。以现实中的小餐馆为例,某一天,这个小餐馆来了一个名叫武松的食客。这个食客进来之后就不停的要酒喝,但是小餐馆却有个“三碗不过岗”的规矩,那么这个规矩就可以被视为是一个层。可以称这个层为“商业逻辑层”。例如在用户留言的时候,要检查用户当天的留言次数。如果用户当天留言超过3次,那么就抛出异常终止程序的运行。
using System;
using TraceLWord8.DALFactory; // 引用数据访问层工厂
using TraceLWord8.DBTask; // 引用抽象的数据访问层
namespace TraceLWord8.BusinessLogic
{
public class LWordPostLogic
{
// 检查用户当天的留言次数
public void CheckLWordCountToday(string userName)
{
DateTime startTime = DateTime.Now.Date;
// 获取用户在指定时间内的留言次数
int lwordCount = this.DriveDBTask().LWordCount(
userName, startTime, startTime.AddDays(1));
if (lwordCount > 3)
throw new Exception("用户当天留言次数大于3 次,不能再留言");
}
// 驱动数据库任务
private ILWordTask DriveDBTask()
{
return DBTaskDriver.DriveLWordTask();
}
}
}
// 发送留言信息到数据库
public void PostLWord(LWord lword)
{
string nickName = lword.FromUser.NickName;
string passWord = lword.FromUser.PassWord;
string textContent = lword.TextContent;
...
// 获取注册用户信息
RegUser regUser = regUserService.GetRegUser(nickName);
if (regUser != null)
{
...
}
else
{
...
}
// 在留言之前检查用户留言次数
(new LWordPostLogic()).CheckLWordCountToday(nickName);
// 插入新留言信息
this.DriveDBTask().PostLWord(lword);
}
当用户当天留言次数超过3次会出现异常
有一个问题就是为什么不把这样的逻辑判断放入到中间服务层呢?或者说中间服务层与商业逻辑层有何差别呢?简单的说就是中间服务层只是对每一个功能步骤的组合,形成一个完整的功能过程。而商业逻辑层则只是做单纯的商业逻辑判断,并不知道下一步该做什么?小餐馆虽然有“三碗不过岗”的规矩,但是那并不会影响到服务生向武松收酒水钱和上酒的服务过程。之后当武松过了景阳岗,打死了老虎,令小餐馆取消了“三碗不过岗”的规矩。但同样还是没有影响到服务生向其他吃客要酒钱和上酒的服务过程。
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/