业务逻辑层是应用程序的大脑
-
负责处理系统的核心业务,
-
负责对用户定义的流程进行建模,
-
负责数据访问层和展示层的通讯,
-
不能因为数据库的变换而变化,也不能因为终端的变换而变化。
下面是业务逻辑层的具体实现
-
BLL——业务逻辑
业务逻辑的操作,包括业务处理,调用数据访问,事务等。
-
IBLL——业务接口
业务逻辑层的方法对外暴露的接口和服务契约
-
WFActivitys——工作流活动层
定义了工作流中使用的活动
业务的最小逻辑单元
因为服务层和展示层都会调用业务逻辑层,所以在此层做事务、异常和并发的处理比较合理。
-
事务的使用
首先,引用"using System.Transactions;"命名空间,调用TransactionScope类
-
异常的处理
-
并发的处理
更新的时候会面临一个难点,假设某条记录同时被两个人A和B读取并且正在修改。A先修改完成然后保存了,然后B再保存的时候,会由于时间戳不一致(因为A之前先保存修改了时间戳)导致B保存失败。给一个表加一个时间戳字段Timestamp,可以有效的解决数据库并发问题。
我们约定
-
将系统需要的基础类放在"Framework"文件夹中
-
将业务相关的类,都放在自己创建的文件夹中,类采用分部类的方式,这样可以有效的防止代码重新生成覆盖的危险,如:"DiaoYan"
-
在此层做事务、异常和并发的处理
-
对外暴露的方法,必须继承自IBLL项目的接口
以上我们完成了业务逻辑层的设计,此架构的代码实现,请参考www.langben.com