信息管理数据库系统的业务逻辑层实现步骤

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息管理数据库系统的业务逻辑层实现步骤作者:饶晟

来源:《数字技术与应用》2010年第11期

摘要:本文从业务逻辑层的职责及其对象的职责分析,包括与表示层交互的对象,问题域对象,与数据层交互的对象等业务逻辑层的对象,应用的普遍需求及典型结构,主要阐述业务逻辑层的设计及实现步骤。

关键词:数据库业务逻辑层实现步骤

中图分类号:TN06 文献标识码:A 文章编号:1007-9416(2010)11-0078-02

虽然多层结构中数据库系统的业务逻辑层的创建和实现在本论文中已经得到探讨,但在具体地实际开发过程中,有很多不确定的因素,由于理论知识的不足,对SQL词句和流程控制语句掌握程度还不够,因此,本文还有待进一步的完善。

1 数据访问的三层结构

数据访问三层结构将应用功能分成表示层、逻辑层和数据层三部分,对这三层进行明确分割,并在逻辑上使其独立,表示层是应用的用户接口部分,一般位于客户机上。它担负着与用户的交互和与逻辑层的对话功能,但不包括有关业务本身的处理逻辑。逻辑层是应用的关键,它负责处理业务逻辑和数据库逻辑,即接受表示层方的请求,根据业务逻辑将其转化为数据库请求后与位于数据层上的数据库服务器交互,并将与数据库服务器交互的结果传送给表示层方。数据层软件即DBMS,根据逻辑层发送的请求进行数据库操作,并将操作结果传送给逻辑层。Web应用系统B/s模型的三层或多层框架结构基本是基于J2EE的层次结构,一般系统分为表示层、业务逻辑层、数据层。

三层结构的特点是形式逻辑与业务逻辑位于不同的平台上,并且业务逻辑被所有用户共享。系统必须提供形式逻辑与业务逻辑之间的连接,它们之间的通信协议是系统自行定义的。逻辑层是整个系统的核心,必须为处理系统的具体应用而提供事务处理、安全控制及为满足不同数量客户的请求而进行性能调整的能力。

传统的C/S结构在可扩充性、可维护性、可重用性及安全性等诸多方面存在缺陷,使得三

层(多层体系结构成为目前数据库应用开发的首选,但是它的开发比两层结构更加困难。特别是业务逻辑层与表示层和数据层进行频繁的交互,如何提高业务逻辑层中对象的可重用性、内聚

性,降低与表示层和数据层的耦合,是获取高质量、低耗费、易维护软件最重要的环节,也是我们在面向对象设计阶段优化设计的重要目标之一。

在实际应用中,业务逻辑层是至关重要的,他承载着整个系统最核心的部分,也是客户最关注的部分。这一部分的实现,通常需要技术专家和领域专家通力合作。在业务逻辑层实现中,业务逻辑层主要承担了以下职责:

(1)对不同数据访问层的封装。使得表示层可以不关心具体的数据访问层。

(2)业务逻辑数据的填充与转换。如管理员口令的加密。

(3)核心业务的实现。这里很多业务逻辑只有一行代码,即一个业务逻辑方法恰好对应一个数据访问方法,但是也有通过多个数据访问方法实现业务的。如Admin BLL中的Change Password方法就调用了Admin DAL的Get By ID和Update两个方法。另外,虽然许多方法只调用一个数据访问方法,但是从命名看也能看出两者着眼点的不同。如Admin DAL中的Get By Name And Password,这个名字显然是从数据库的角度看问题——指按照指定的Name和Password两个字段的值取出相应信息,至于这样做的业务意义它不需要知道。而Admin BLL中,调用它的方法叫Login,这是从业务角度看问题——即这个方法是管理员登录。

2 建立工程

在这个架构中,业务逻辑层是可以替换的。及业务逻辑层不是直接耦合于表示层,而是通过依赖注入机制实现。所以,我们这里将这个业务逻辑层不直接命名为BLL,而是新建一个叫Simple BLL的工程,放置我们这个业务逻辑层的相关代码。

BLLCollege实现:College类实现了IBLLCollege接口,它是院系管理模块的业务逻辑层的核心部分。

3 配置依赖注入

业务逻辑层要通过反射工厂加载相应的数据访问层,这样就需要在Web.config中配置需要使用的数据访问层。打开Web.config,找到appSettings;

节点下的“DAL”项,将其中的value赋予我们要使用的数据访问层工程名称,例如:要使用NBearDAL,则这一项应该这样写:

3.1 与数据访问层的通信

业务逻辑层需要与数据访问层通信,利用数据访问层访问数据库,因此业务逻辑层与数据访问层之间就存在依赖关系。在数据访问层引入接口程序集以及数据工厂的设计前提下,使业务层与数据访问层之间的关系为弱依赖。BLL模块不直接引用SQLServerDAL和OracleDAL程序集。在业务逻辑层中,有关数据访问层中数据对象的调用,均利用多态原理定义了抽象的接口类型对象,然后利用工厂对象的工厂方法创建具体的数据对象。在领域对象College类中,利用数据访问层的工厂类DALFactory. DataAccess创建LabMIS.IDAL.ICollege类型的实例,解除了对具体程序集SQLServerDAL或OracleDAL的依赖。只要LabMIS.IDAL的接口方法不变,即使修改了IDAL接口模块的具体实现,也不会影。

3.2 响业务逻辑层的实现

业务逻辑层要通过反射工厂加载相应的数据访问层,这样就需要在Web.config中配置需要使用的数据访问层。打开Web.config,找到appSettings;

节点下的“DAL”项,将其中的value赋予我们要使用的数据访问层工程名称,例如:要使用NBearDAL,则这一项应该这样写:

3.3 与数据访问层的通信

业务逻辑层需要与数据访问层通信,利用数据访问层访问数据库,因此业务逻辑层与数据访问层之间就存在依赖关系。在数据访问层引入接口程序集以及数据工厂的设计前提下,使业务层与数据访问层之间的关系为弱依赖。BLL模块不直接引用SQLServerDAL和OracleDAL程序集。在业务逻辑层中,有关数据访问层中数据对象的调用,均利用多态原理定义了抽象的接口类型对象,然后利用工厂对象的工厂方法创建具体的数据对象。在领域对象College类中,利用数据访问层的工厂类DALFactory. DataAccess创建LabMIS.IDAL.ICollege类型的实例,解除了对具体程序集SQLServerDAL或OracleDAL的依赖。只要LabMIS.IDAL的接口方法不变,即使修改了IDAL接口模块的具体实现,也不会影响业务逻辑层的实现。

4 编写散列加密工具类

因为在业务逻辑层的多处需要用到散列加密,所以在Utility工程下写一个辅助类Encryptor,完成这个工作,这个辅助类的具体代码如下:

相关文档
最新文档