黑马程序员---.NET多层架构体系

---------------------- 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/ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值