三层网络架构

2024-05-30

三层网络架构(精选九篇)

三层网络架构 篇1

为此, 公司人力资源部、业务管理部、信息技术部共同提出开发柜面量化考核系统, 通过量化柜员工作量和差错率, 实现绩效考核与岗位工资发放相结合, 工作岗位定性与定量考核相结合, 员工绩效收入下不保底、上不封顶, 体现多劳多得、奖勤罚懒, 提高公司整体运作效率, 节约成本, 达到提升公司服务质量的目标, 同时增强本公司在同行业中的竞争力, 树立良好的企业品牌形象。

柜面量化考核系统以柜员操作的各业务处理系统数据为基础量化数据, 同时以手工输入数据为补充量化数据, 根据量化指标、权重及计算公式, 自动计算工作绩效和浮动收入, 并提供统计、查询、打印、生成Excel等功能。主要有六个功能模块, 分别是:系统配置模块, 完成对柜面组、考核组、指标及指标批次的参数化配置, 并维护指标类别、权重、抽取SQL语句等信息;外部量化数据管理模块, 提供非系统指标外的外部量化数据输入接口的功能, 以及考核组间基础量化绩效引用功能;绩效考核模块, 按时间条件计算考核对象的工作绩效和浮动收入, 包括绩效试算、试算数据查询、试算数据上载等功能;统计查询模块, 按时间、考核对象、量化指标等条件综合查询量化数据、考核绩效、浮动收入及总收入方面的信息, 并打印统计报表或生成Excel文件;基础数据和外部共享数据抽取模块, 根据指标定义的SQL语句完成各业务系统基础性数据的抽取、转换, 以及通过Web Service方式获取公司HR (人力资源管理系统) 共享的柜员目标薪酬等信息;权限管理模块, 定义操作员及操作权限信息。

一、系统架构设计与基本原理

柜面量化考核系统需要从各生产机业务处理系统中抽取数据, 对数据安全性要求高, 同时数据抽取和计算工作量大, 单一服务器负荷太重, 可扩展性和性能差。因此, 系统设计之初决定采用三层C/S体系结构进行设计, 三层结构逻辑上保持独立, 各层独立, 支持高效并行开发, 可扩展和可维护性强, 更重要的是, 外部用户不直接访问数据库服务器, 能保证数据库的相对安全性。

(一) 系统架构

根据公司情况, 采取用户界面层用Delphi开发工具实现, 中间件采取事务中间件Tuxedo, 数据库为Informix, 系统架构如图1所示。

1. 表示层。

考虑到现有项目开发人员的特长和与中间件Tuxedo通信的方便性, 用Delphi实现用户界面逻辑处理, 同时还包括Tuxedo服务代理程序也用Delphi完成。

2. 中间层。

采用Tuxedo事务服务器, 用C和EC实现各业务逻辑和数据逻辑组件的编写, 根据需求重点抽取出系统的共用组件, 提高组件重用性和组件质量, 缩短编码时间。

3. 数据层。

采用大家熟悉的Informix数据库, 实现数据的完整性。

4. DTS服务器。

用SQL Server的DTS工具实现数据的抽取, 主要完成从各业务库中基础性指标数据的抽取和人事工号、个人浮动收入标准数据的抽取, 采用VB Script实现, 抽取流程如图2所示。

5. 升级Web服务器。

主要是为了弥补C/S结构软件升级不方便的缺陷, 而设立的一个升级服务器。这样在客户端每次运行时, 会自动连接到此升级服务器上进行版本检测, 若发现有新版本, 它会自动下载新版本进行升级。

(二) 系统特点

1. 可扩展性。

平台采用了分层设计模式, 各层之间相互独立, 每层可根据实际需求、遵照规范进行补充和扩展, 同时不对其他数据层产生影响。

2. 易开发性。

数据抽取使用ETL工具 (SQL Server提供的DTS工具) 实现不同数据层之间的数据抽取、转换和装载功能, 方便的图形化操作界面使开发工作得以简化。Tuxedo组件开发和Delphi的开发已成熟, 且开发资料较多, 使项目开发具有较高效率。

3. 重用性。

中间件组件设计往往对应于需求中多个服务的实现, 有一定的重用性。

4. 支持并行开发。

各层设计具有较高的逻辑独立性, 尽量保持高内聚低耦合, 支持项目各层高效并行开发。

5. 前瞻性。

将数据抽取的SQL语句存放于数据库记录中, 一个考核指标的数据抽取语句对应于一条数据库记录, 从而通过增加考核指标及批次, 系统不仅适应于柜员绩效考核, 还可适用于财务处理人员的绩效考核, 使系统具有一定的前瞻性。

(三) Service的划分原则

在三层结构中, 业务逻辑都放到中间层Tuxedo的服务端上, 在服务端把业务逻辑划分成一个个独立的服务 (Service) , 把多个服务按一定的规则绑定到一个Server中, 客户端调用这些服务来实现相应的操作, 所以在服务端编程的主要任务就是编写一个个服务。为了提高每个服务的复用性, 在设计Service时采取如下划分原则。

1. 信息隐藏原则。

定义服务以及从客户到服务的数据流尽可能独立于服务的实现。服务程序中不要嵌入客户机有关数据采集技术等信息。反之, 客户机对服务器程序的实现细节, 如数据库结构以及记录格式等都是透明的。

2. 分层服务原则。

尽可能使每个服务只完成一项任务, 而不是多项任务。每个服务函数努力定义一组简单服务来实现业务的基本功能, 通过这组服务的组合, 可以实现复杂的应用服务功能。将每个表的四个基本操作 (插入、删除、修改、查询) 定义为四个基本数据实体 (Bean) , 实现对每个服务函数所需的基本的数据逻辑。

3. 业务对象原则。

围绕业务对象设计并使用服务功能, 以一组相关的对象或公共对象将服务组织成为服务进程。

(四) Service组合成Server的原则

从管理维护方面看, 一个Service对应一个Server是最简单的方式。但这会增加Server的数量, 使Tuxedo对系统的IPC资源要求增大, 从而引起系统性能下降, 因此需要合理处理Server与Service的关系。在设计过程中, 我们制定了多个Service放在一起的原则:有互相调用的Service不要放到同一个Server中, 以免引起死锁现象;执行时间相近的Service可放在同一个Server中;同一个Server中的Service最好有相同的服务优先级, 如果不是相同, 最低的那个请求可能要很长时间才得到处理;一个Server中不要有太多的Service;把多个资源要求相近的Service放在同一个Server中;可根据业务规则把Service放在同一个Server中;对一些使用率较高的 (如收付费对应的Service) 应单独放在一个Server中, 并采用MSSQ方式, 不要将其与其他Service放在同一个Server中。

二、系统关键技术实现

在客户端和服务端的实现过程中, 涉及Tuxedo的安装及配置、C及EC编译环境的搭建、FML32缓冲区的定义、常见数据格式的转换、数据访问层结构体的定义、业务逻辑的实现、Delphi对Tuxedo服务调用的实现以及数据抽取等多种技术, 在此笔者结合自己在该项目实施过程中遇到的一些关键技术进行分享。

(一) FML32缓冲区的定义

Tuxedo客户端与服务端的数据交换是通过缓冲区进行的, Tuxedo的缓冲区有STRING, VIEW, VIEW32, FML, FML32及XML类型等。在此采用FML32缓冲区, 它类似一个数据库表, 常用于数据库的操作。另外, 考虑到Tuxedo的内部数据转换是调用其专用函数进行, 为方便编程, 本文约定所有在FML32缓冲区操作的数据类型均为string型, 并考虑到已设计的Informix数据库中表字段数量最多为20个, 因此相应的FML32缓冲区变量定义如下:

(二) 常用C和EC转换函数

Tuxedo服务端通过C和EC语句实现业务逻辑, 为了实现常见的数据类型与FML32缓冲区中string变量进行转换, 需要编写数据类型转换函数, 在此将常见的int, long, string, double, date等类型转换写入公共函数。同时将Tuxedo连接库的常用功能也通过EC写入公共函数库。部分公共函数如下所示:

(三) 定义基本表结构体

与Tuxedo的FML32交换数据时, 返回的是多行记录。为了方便实现, 在表示层或业务逻辑层中均用一个结构体保存对应的一个基本表数据, 传递的结构体中一个字段记录要传送的记录行数, 另一个为结构体数组, 保存要传送的记录。如下为一个基本表Batchitem的结构体定义, 其他类似:

(四) 服务端业务逻辑实现

为了实现业务逻辑处理与数据访问的分离, 通过数据实体的服务函数实现数据访问层的封装, 而在实现业务逻辑的服务定义模块中通过调用服务函数实现数据的访问。这种分层设计, 简化了编程复杂度, 使系统开发更加规范化。

1. 数据实体 (Bean) 指标新增FunP1101.ec的服务函数内容为:

2. 业务逻辑层中服务定义模块指标维护SP1100.c的内容为:

(五) 客户端服务调用

在表示层调用Tuxedo服务来实现业务功能, Delph开发人员可以在完全不知道数据库结构的情况下进行编程, 使其专注于用户界面的开发, 提高了开发效率。如下为指标类代理服务实现, 通过此代理服务实现系统功能:

(六) 数据抽取

在处理从各业务处理系统抽取考核指标数据时, 考虑到指标维护变动大, 因此, 将各考核指标的抽取SQL语句放在数据库中, 抽取数据时读取对应考核指标的取数据SQL, 传入时间参数执行抽取, 抽取成功后保留抽取日志, 并更改本次抽取成功的结束日期。整个抽数流程可采用的是SQL Server的DTS工具, 当然也可采用SSIS工具, 并通过SQL Server代理可以方便抽取调度。由于DTS工具不支持循环, 所以需要通过VBA脚本实现, VBA操作数据库部分示例为:

三、结束语

三层网络架构 篇2

[关键词]网络在线考试;详细设计;架构

详细设计中的一个主要任务就是架构设计。根据需求阶段的规划,进行网络在线考试系统的架构设计时,选择了三层架构。由于使用三层架构进行系统开发的基础是要搭建系统框架。本文将从三层架构的介绍入手,通过完成基于三层架构的“在线考试系统”框架的搭建,让读者掌握三层架构的搭建过程。该过程重点在于表示层、逻辑层、会话层的构建及用户创建各层之间依赖关系的模型层的实施。难点在于实施模型层过程中的各个实体类的创建。

1.三层架构模式的介绍

在早期开发应用程序时大多数是基于Windows模式设计,在这种环境中一般程序设计人员设计考试系统时主要是采用C/S架构完成。程序一般时运行在一个局域网内,采用两层架构的设计思路就可以完成要求。而对于这种模式的考试系统对于学生使用地域上产生了很大的影响,必须要组织学生在同时同地完成考试。为此,提出基于Web模式设计考试系统是可以解决这些问题的。对于采用Web模式开发的考试系统之前有使用ASP、PHP、JSP等工具完成的,当然这些开发工具各有各自的优点和缺点,本文主要讨论的是开发的架构,对于具体采用的语言不作分析和研究。

无论程序设计人员采用何种开发工具,目前在对于网络编程中使用的架构是客户端、业务处理端以及数据存储端的三层架构。使用这种严格的三层架构来对应用软件进行开发时将极大的提高了程序模块化设计,提高了应用软件运行的效率。当然采用这中架构设计的软件在今后的扩展和维护上也带来了很大的好处。

从应用软件开发技术角度上说,三层架构的“三层”是指用户界面表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。

(1)用户使用的界面一般称为客户端或表示层

客户端是用户直接与应用软件建立关系的窗口,用户对软件需要完成的基本操作以及实现数据的输入输出等都是通过客户端完成的。

(2)业务处理端又称为逻辑层

对应用软件的业务处理都通过逻辑层完成的,业务的处理效率以及执行的优劣情况都是通过业务层来实现,因此逻辑层将承担非常重要的任务。程序设计人员开发开发时需要投入大量的精力在对程序的业务处理端。对于不同的开发语言在业务端的建立有不同的方法,可以通过创建类库、Web Service等形式完成对业务处理代码的封装。对于复杂的业务处理可以建立业务应用程序,加入中间件技术等完成。

(3)数据访问层

数据对于应用软件是必不可少的,所有的应用软件都会采用数据库作为系统中实现交互处理的数据存储。数据访问主要是为用户提供数据交互的平台,程序员可以通过在数据库中创建各种数据操作对象完成相关操作,比如创建存储过程、视图、角色等。

2.网络在线考试系统设计

在线考试系统的架构:先创建解决方案(取名Online),在解决方案下创建4个项目:第1个项目是用户界面表示层(取名OnlineWeb);第2个项目是业务逻辑层(取名OlineBll);第3个项目是数据访问层(取名ONlineDal);除了这3个项目之外,还有一个模型成(取名OnlineModels)。下文将逐个给出各个层次中的每个程序的设计考虑。

本程序对考试系统的分析主要分为3个功能部分:用户登录、考生考试和交卷部分。各部分分别调用多个模块。

(1)验证模块

一般应用程序都有验证模块,通过验证模块可以防止非法用户对管理系统的使用。验证模块的设计不仅是用户使用系统的通道,更是对系统数据保护的重要措施。在验证模式的实现时可以加入防止SQL注入、SSL加密等技术以提高其安全性。

(2)时间控制模块

对于考试系统,需要模拟传统的考生时间规定。在考试系统中能够自动完成时间的设定以及对时间的控制等功能。考生只能在规定的时间内作答,当考试时间达到设定的值将能够对考生进行提醒和锁定考试。

(3)生成试卷模块

考试系统中一个重要的模块就是生成考试试卷,对于考试试卷的生成原则是需要根据设定的难易程度完成自动组卷。生成试卷的形式可以是传统的考试试卷形式,也可以是带答题卡的试卷形式。

3.总结

系统任务是根据需求分析阶段产生的规格说明书导出系统的实现方案。在本任务中基于概要设计说明书来实施目标系统的设计过程。本文简述了网络在线考试系统架构设计时采用三层架构,将整个业务划分为:用户界面表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。目的是为了在系统开发过程中实现系统各个模块的“高内聚,低耦合”。

参考文献

[1]张仁龙,李晓华.计算机基础课程考试系统的设计[J].北京农学院学报,2007(S1)

[2]李美满.基于COM技术的通用考试系统的设计与实现[J].计算机工程与应用,2007(01)

[3]闫薇,尹心平.VBA技术在计算机基础考试系统设计中的应用[J].齐齐哈尔大学学报,2006(03)

[4]付细楚,邹北骥.基于组件的考试系统的研究与实现[J].计算机工程,2005(24)

[5]叶青,徐春凤.数据库原理无纸考试系统的设计与实现[J].长春理工大学学报,2005(02)

C/S模式下的三层架构 篇3

1.1 传统软件设计结构面临的问题。

近年来, 随着现代社会的飞速发展和科学技术的日新月异, 信息流量海量递增, 原有的管理模式已经不再能适应时代的需要。各企业和部门纷纷借助计算机和网络技术的进步, 着手开发或修订MIS (即信息管理系统) 。但从我们了解的情况来看, 当前在用的MIS绝大部分还在采用两层或者根本没有分层的软件设计模式, 这就为以后的软件升级、拓展、维护设下了很大的障碍。为解决这些问题, 急需一种新的方式来替代传统的软件设计架构。1.2三层架构的设计思想。所谓三层架构设计思想就是:在软件开发过程中, 运用分层、分模块的思想来设计软件结构, 将每一类型的操作固定在一个层 (或模块) 中, 也就是把同类型的操作作为单独的类模块抽象出来, 供其它模块重复调用。其目的不仅要提高软件的可用性, 同时也可以大大提高软件的重用性和拓展性。三层架构C/S结构的优点:1.2.1程序的可维护性强———三层架构C/S结构中, 应用的各层可以并行开发, 各层也可以选择各自最适合的开发语言。各层之间相互独立, 每一层出了问题只须对该层的函数方法进行相应的修改。1.2.2利于变更和维护应用技术规范———因为是按层分割功能, 所以各个程序的处理逻辑变得十分简单。这样使后来的维护人员和项目升级开发人员可以一目了然地看清系统结构。1.2.3管理的安全性高———系统设定了严格用户的识别、存取权限设定和日志的记录。在三层架构C/S结构中, 识别用户的机构是按层来构筑的, 对应用和数据的存取权限也可以按层进行设定。

2 解决方案

2.1 三层架构设计思想。

三层架构设计目的就是要使系统具有最大的可用性。这种基于架构的设计思想, 将类和模块结合, 把同功能的类封装在同一模块中, 各个模块功能明确。在实际实现中, 需要调用哪个函数或者模块时, 只需访问特定的集成功能模块, 极大的提高了模块的可用性。在运用三层架构建立起来的软件系统中, 即使是用户界面发生了变化, 甚至是完全更换了用户界面也不会影响到其他模块层中的程序代码, 而只需要相应的修改与用户层联系的接口参数就可以了。2.2三层架构开发原则。三层架构C/S应用的开发必须遵从四项基本原则:降低应用系统的风险;满足当前需要;考虑未来的发展规划。开发出的三层架构C/S应用系统必须是:功能丰富且有高可用性;功能能跨应用系统;系统能跨平台运行。2.3三层软件系统架构。三层架构系统的特点是, 软件系统大体上分为三个逻辑层, 即:用户层、业务规则层、数据访问处理层。这三个逻辑层在功能上相对独立, 但在技术上相互渗透并融合在一起。三层架构如图1所示。

用户层 (UI层) :用户层为客户端提供对应用程序的访问, 即用户和系统的接口界面, 这一层是作为仓库管理解决方案文件中的Windows项目实现的。用户层由Windows窗体和代码隐藏文件组成。Windows窗体只是提供用户操作界面, 而代码隐藏文件实现各种控件的事件处理。

业务规则层:包含各种业务规则和逻辑的实现。它用作隔离层, 将用户界面与各种业务功能的实现隔离开来。

数据访问处理层:是作为系统管理解决方案文件中的Date Access项目实现的, 它为业务规则层提供数据服务, 实现数据库的动态连接、存储过程的调用和对数据的一系列操作。

除了上述三个逻辑层外, 还包含封装在解决方案文件中的Common项目内的共享函数。“通用层” (Common) 中包含用于在各层间传递信息的数据集。

3 实施方案

下面以设备管理系统的用户登陆代码为例, 来说明在系统开发的过程中如何实现三层架构。

3.1 系统结构。

根据设备管理的实际需求, 以及管理功能的需要, 在该系统的数据结构中把系统服务和管理数据库分离。系统在提供服务时通过程序命令调用远程的数据库。这种设计的目的是要从数据库的角度把系统的服务与数据管理隔离, 使系统不会因为在被管理和维护中影响数据库系统的正常服务, 保证系统能够在任何时候连续运行不中断。系统结构如图2所示。3.2实现实例。实例:用户登录功能的实现;用户层 (UI层) 即用户的登录界面;业务规则层:处理用户登录时所触发的事件, 即用户层触发事件调用业务规则层程序, 如用户输入用户名密码后点击“确定”后触发的业务规则层代码如下:log:=Tlog.Create;ASP:=TADOStored Proc.Create (nil) ;ASP;=log.Validate User (User Name, Pwd) ;用户层通过类的实例化调用业务务规则层Log Unit中的Tlog类中的用户登录验证函数。在业务规则层中实现用户登录验证函数Validate User (User Name:widestring;Pwd:widestring) , 这个函数主要是用来调用数据访问层中的存储过程, 并向存储过程传递参数。通用层 (Common) :通用层主要包括了一些公共常用的方法和函数。例如在用户登录过程中用到了通用层中的数据库连接函数:function Link String () :shortstring;这个函数是用来进行数据库连接用的, 把这个函数放在通用层中可以在任何需要的地方进行调用而不必每次都重新写。数据访问处理层:在用户登录的业务规则层使用Validate User () 函数调用了数据访问层中的存储过程。在登录过程中通过调用存储过程名为S_Ueser Log的存储过程。来验证登录用户是否合法, 同时判断用户的等级及其权限。在数据访问层中, 对于复杂的数据访问或者对安全性要求比较高的数据处理, 可以使用存储过程。在数据访问层使用存储过程的作用:3.2.1存储过程可以与其他应用程序共享应用程序的逻辑, 从而确保一致的数据访问和操纵。如:在对Data Set取出来的数据集的操作, 可以一次取出来供多个应用程序调用。3.2.2存储过程提供了一种安全机制。如果用户被授予执行存储过程权限, 那么即使该用户没有访问在执行该存储过程中所参考的表或视图的权限, 该用户也可以完全执行该存储过程而不受到影响。因此, 可以创建存储过程来完成所有的增加、删除等操作, 并且可以通过编程控制上述操作中对信息的访问权限。3.2.3存储过程执行速度快, 便于提高系统的性能。由于存储过程在第一次执行之后, 其执行规划就驻存在过程高速缓冲存储区中, 在以后的操作中, 只需从过程高速缓冲存储区中调用编译好的二进制形式存储过程来执行。3.2.4使用存储过程可以减少网络传输时间。如果有一千条Transact-SQL语句的命令, 一条一条地通过网络在客户机和服务器之间传送, 那么这种传输所耗费的时间将很长。但是, 如果把这一千条Transact-SQL语句的命令写成一条较为复杂的存储过程命令, 这时在客户机和服务器之间网络传输所需的时间就会大大减少。

参考文献

[1]刘艺.Delphi模式编程[M].北京:电子工业出版社, 2000, 12.

[2] (美) Dejan Sunderic&Tom Woodhead, 熊桂喜等译者.SQL Server2000高级编程技术[M].北京:清华大学出版社.

三层网络架构 篇4

关键字云计算SaaSPaaSIaaS数字图书馆定位

一、 引 言

随着云计算浪潮的涌进,如何能够高效,经济地进行信息资源服务是当今数字图书馆待解决的问题,云计算是一个新兴的名字,它得出现简化了IT架构的实施,对其解释多种多样。著名学者Matrix曾总结云计算定義多达20多种,但是目前公共认为的云计算是一种将分布式计算,网格计算,并行计算以及Internet结合起来的新的IT资源提供服务模式,其核心思想是借助于Internet,通过拆分大型的计算机程序,形成若干个小型的子程序,然后交付给云中心进行分析、计算,其中云环境就是有多部服务器构成的庞大分析系统,最后中心将处理的数据返回给用户。其实它是面对超大规模的分布式环境,其最终目的是能将动态,可伸缩的IT计算资源以服务的方式通过Internet提供给用户。在此基础上人们提出了云计算三层架构体系,作为信息资源中心的数字图书馆目的就是为了更好,更快,更经济地为用户提供服务。下面我们首先先来分析一下云计算三层架构。

二、 云计算三层服务架构

互联网发展进程中三层模型曾作为一般架构出现,IBM大中华区云计算项目总监朱近之女士认为虚拟化技术在现阶段云计算中创造了新的,成熟的三层服务架构体系,认为云架构最底层面是基础架构层;第二层是中间平台;最上面一层是应用和服务层。云计算服务可以按照从底层硬件到顶层应用来进行划分,大致分为三类:基础设施作为服务IaaS、平台作为服务PaaS和软件作为服务SaaS,如图1所示:

从图1中我们可以获知,目前对云计算的解释,我们可以从两个层次上进行分析探讨,狭义上的云计算是指用虚拟化技术构建的虚拟化数据中心,将分布在大量的计算机和存储设备上的计算和存储资源集中起来成为一个虚拟的资源池,以服务方式按需提供给网络用户,这个云计算被称为“基础设施即服务”(IaaS)。Amazon的E2和E3是该模式的典型代表。广义上的云计算还包括软件即服务SaaS,平台即服务PaaS两种服务模式,SaaS通过浏览器把程序传给成千上万的用户,向用户收取服务费。从用户看来,通过互联网使用程序这样会省去在服务器和软件授权上的开支; 从供应商角度来看,这样只需要维持一个程序就够了,如Salesforce.com等。SaaS还提供了开放的API,让开发者能够开发更多的互联网应用。PaaS把开发,运行环境作为一种服务来提供,可以使用中间层的设备来开发自己的程序并通过互联网和其服务器供用户使用。这类服务商如Google的应用软件引擎Google AppEngine 等。那么在现阶段云计算比较成熟的云计算三层服务架构下,云计算的三层架构对图书馆的影响,我们通过定位分析,才能观察到未来的数字图书馆的前景到底如何。

三、 数字图书馆在三层架构中的定位分析

目前图书馆运用云计算技术有两方面角色,一方面是作为一个应用机构,可以说是云计算的使用者,另一方面作为向中小型图书馆提供服务的知识供应商,可以说是云服务的提供商。

图书馆可以利用“云”平台,进行数字资源的整合、组织、关联、导航等,从而可以为用户提供服务。对于图书馆界来说,如何确定未来数字图书馆地位战略计划是值得深思的问题,云计算中的三层架构服务即平台即服务(PaaS),软件即服务(SaaS) 基础设施即服务(IaaS)作为平台,未来的数字图书馆界到底在这三层服务架构上有什么作为,是指导未来数字图书馆发展的方向,对于用户来说,我们大可不必知道提供该服务到底是属于哪一层的服务如图2所示:

图书馆本身就是为用户提供知识服务,云计算三层架构对图书馆的影响如何,我们就对未来的数字图书馆在云计算三层架构中进行定位分析,通过定位分析,我们才能看到未来数字图书馆在云计算这个环境之下的作为到底怎么样。

(一) 定位数字图书馆在SaaS层

从图书馆发展史看,几乎每一项新信息技术的出现,都能引起图书馆界的极大关注并推动图书馆的服务升级,未来数字图书馆定位到SaaS层上,中小型图书馆通过互联网使用SaaS层的软件业务模式,不用再购买软件,而改用向大型提供商租用基于Web软件,来管理经营图书馆,且无需对软件进行维护,服务提供商会全权管理和维护软件。

图书馆历来是IT应用的重镇,云时代也不例外,世界最大联机图书馆服务提供商OCLC已经将“基于云”的服务引入了图书馆界。2009年4月23日,该机构宣布即将推出基于WorldCat书目数据的“Web级协作型图书馆管理服务”被公认为是一项云计算服务,其目标是取代各类型图书馆的集成管理系统,这个是图书馆界的第一个云计算服务,作为图书馆领域领头军OCLC应用云计算服务,预示着云计算在图书馆领域广泛应用已经开始进行了。

目前小型图书馆采用在本地安装图书馆自动化系统ILS,类似于像OCLC这样的大型图书中心提供网络服务。客户可以根据馆内实际需求,向提供商租用所需的应用软件服务,按租用的服务类型和时间长短支付费用,并通过互联网获得服务,应用软件由数据中心负责的升级和维护。从而图书馆通过网络浏览器实现业务的自动化管理。可以预料,会有越来越多的图书馆试用云计算,因而降低管理与服务的成本。

(二)定位数字图书馆在PaaS层

所谓PaaS服务架构层,是指大型图书馆引入“云”设施,利用商用的云计算解决方案,架构满足本地应用的”私有云”平台。使用者可以在PaaS供应商的基础设施上创建并开发自己的应用服务程序,然后通过网络直接从供应商的服务器上传递给用户,但是这些服务受制于供应商的设计和能力,但可以预见通过该层服务的效果和方便性。这些应用程序可以运行在云中,也可以运行在更加传统的图书馆数据中心中,其中WorldCat是目前PaaS典型代表之一。

WorldCat是一个全球统一目录,创建于1971年,它由9000多个OCLC成员机构共同创建和维护,集中了各个成员图书馆的书目和所有者信息中得数百万条联机记录,是同类数据库中最大最全面的一个。在2003年,OCLC 开始实施"Open WorldCat "的实验性计划,按照用户的习惯提供信息服务,满足用户的检索需求,Open WorldCat计划通过图书馆资源和搜索引擎的无缝链接,达到了促进用户到馆,扩大印刷图书利用的目的。现在的搜索引擎和内容提供商联合,建立起一个透明的,结构化关系,从竞争对手变成合作伙伴:一方面,扩大WorldCat数据库的显示度,另一方面。在商言商,OCLC也通过Open WorldCat计划增加了自己的馆际互借业务[7]。

(三)定位数字图书馆在IaaS层

早年美国数字图书馆先导计划一期工程(DLI1)密歇根大学数字图书馆项目负责人丹尼尔·阿金斯(Daniel Atkins)提出了一项“先进Cyberinfrastructure计划”(Advanced Cyberinfrastructure Program ACP),把Cyberinfrastructure解释为一个整合了通讯、信息、团体、计算、协同与文化等要素的,由数据向知识演化的基础设施。目前,美国从早期以NII为标志的网络基础结构正向以ACP为标志的网络基础结构转变,其实质是从web信息空间(WEB1.0)向语义WEB知识空间(WEB2.0)的渐进与渐变。在某种意义上,Web2.0就是对这种新环境下所形成的一种新型网络应用平台的概括。

基于《赛百基础结构实现科学与工程的革命》的报告,NSF在2003年6月召开了“未来的浪潮:NSF后数字图书馆的未来(Wave of the Future:NSF Post Digital Library Futures Workshop )”研讨会, 会后发表了《知识在信息中迷失》(Knowledge Lost in Information)的研究论文,该论文中提出了“泛在知识环境[9]”(Ubiquitous Knowledge Environment)这个名词。泛在知识环境涵义指由人、Internet、硬件、软件、信息资源等有机组成的新一代科技知识基础结构, 为未来知识型社会提供了全面的综合的数字化信息基础设施。与传统知识环境不同, 泛在知识环境是一个人人参与的信息共享环境。泛在知识环境是数字图书馆未来发展的目标和趋向。

泛在知识环境的提出,促进了数字图书馆更高发展,为未来图书馆提供了前所未有的机遇,从云计算的基本理念及上述分类的角度看云计算的三层框架在图书馆的应用,可以看到目前主要还是平台层面与软件层面的应用,实际上,给图书馆带来最大挑战的云计算问题来自基础设施层面。

通过以上云计算三层架构来提升图书馆服务水平,降低管理与服务的成本,未来的前景应该是相当可观的。

四、 定位总结

有人断言未来数字图书馆可能要消灭,利用云计算的平台,通过对数字图书馆在云计算三层架构中进行定位分析,可以得知未来数字图书馆不会消亡。在当今网络环境下,在云计算平台的大力支持下,数字图书馆利用这些服务依靠现有的三层架构的基础,可以看出数字图书馆在云计算平台下得到快速蓬勃发展,在目前有了很好的雏形,未来数字图书馆的前程,也可能会遇到相应的问题,如数据安全和保密问题,知识产权问题等,这就需要图书馆界迅速应对云计算带给图书馆一系列问题,对应用云计算所导致的问题进行系统,深入的研究。相信在云计算技术大力支持之下,未来的数字图书馆的发展必定会可喜的。

参考文献:

[1]Solidot.云计算的20个定义[EB/OL].http://internet.solidot.org/article.pl?sid=08/07/18/0511233.2008-7-18

[2]李永先,栾旭伦.云计算技术在图书馆中的应用探讨[J].江西图书馆学刊.2009年第一期:105-106

[3]王文清.陈凌.CALIS数字图书馆云服务平台模型[J].大学图书馆学报.2009年第4期,13-18

[4]Libraries Uprising with the Cloud Computing[EB/OL].

.http://www.kevenlw.name/archives/1306

[5]http://catwizard.blogbus.com/logs/38539202.html

[6]OCLC announces strategy to move library management services to Web scale[EB/OL]

http://www.oclc.org/news/releases/200927.htm

[7]張秋.OCLC的OPEN WorldCat计划及其对图书馆信息服务的启示[J].图书馆杂志.2005.11.page49-51

[8]e-ScienceTechnology&Application.http://oa.cnic.cn/uploadfiles/pdf/2008/8/26/114245.pdf.2008-01

连铸过程控制系统的三层架构设计 篇5

1连铸PCS需求分析

为了不遗漏重要的需求信息,在软件架构设计时,不能仅根据《软件需求规格说明书》进行设计,还需要考虑多方面的需求。首先,不仅要考虑功能方面的需求,还要考虑质量需求和各个环境方面的约束,即:总需求=功能需求+质量需求+约束[1]。另外,要考虑需求是分层次的,具体分为业务级、用户级和开发级三个层次。业务级需求包括客户或出资者要达到的业务目标、预期投资、工期要求,以及需要符合的标准和对所遗留系统进行的整合等;用户级需求主要包括用户使用系统来辅助完成哪些工作,对质量有何要求,用户群所处的使用环境方面有何特殊要求等;开发级需求包括开发人员需要实现的目标,开发和维护期间的质量要求,以及开发团队的影响因素,如规模、技术水平、磨合程度等。对连铸PCS的需求进行分析后,概括系统总需求如表1所示。

从表1可以看出,各个层次的约束对质量需求都有影响。比如从开发环境约束看,如果一个项目工期短、人手紧张,在开发质量需求上就要注意可复用性以及辅助编程软件工具的开发,以减少开发人员的工作量。从使用环境约束看,如果用户人群的计算机操作水平不一,则需要系统具有很好的易用性和持续可靠性;另外,根据生产工艺要求,系统运行速度不能太慢,否则会影响生产。 从业务环境看,由于外部接口一时不能就位,需要具备生产计划的手动维护功能。明确各个层次的需求,是为了保证在软件架构设计之前不遗漏重要的、关系到项目成败的需求。在此基础上,对功能需求进行分析和筛选,找出关键需求。

功能需求可以分为核心功能、必做功能、高风险功能和独特功能四类需求。核心功能需求是业务接口必须要反映的,是项目价值的核心所在,如生产计划(炉次计划、板坯计划)的查看、维护、执行,生产过程(炉次、铸流)跟踪、板坯切割数据自动下发等功能需求。必做功能需求则主要依靠来自用户方面的需要,如计算板坯定尺补偿、维护钢种等冶金数据之类的需求。高风险功能需求是实现起来有难度或极度影响用户操作感受的功能需求,如本项目的根据炉次分离点调整板坯计划的功能,由于其与现有生产规则不一致,影响操作员的考核,因此需要高度关注。独特功能需求则是系统所特有的、且上述三个功能没覆盖的需求,如直观显示铸流状态这一功能需求。

2软件架构设计

在计算机软件领域中,系统架构是关于系统的结构、行为和属性的高级抽象。在系统设计阶段,系统架构的对象是直接构成系统的抽象组件以及各个组件之间的连接规则;在实现阶段,抽象组件被细化为实际组件。系统架构不仅指定软件系统的组织结构和拓扑结构,而且显示系统需求和构成组件之间的对应关系,包括设计决策的基本方法和基本原理[2]。

软件架构是系统架构的子集,用于确定总体组织结构和全局控制结构,通信、同步和数据访问的协议,设计元素的功能分配,物理分布,设计元素的组成,定标与性能,备选设计的选择[3]。在软件架构设计中,分层式结构最常见,也最重要,目前广泛采用三层架构。三层架构从上至下分别为:表示层、业务逻辑层和数据访问层。由于层是一种弱耦合结构,层与层之间的依赖向下,底层对上层是“无知”的,所以改变上层设计对其调用的底层没任何影响。如果在分层设计时,遵循了面向接口设计的思想,则这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取和替换的“抽屉”式架构。

根据三层架构的设计原则,在分析了各个层次的需求后,对首秦2号连铸机PCS进行软件架构设计,分为初步架构设计和细化架构设计两部分。初步架构设计的目的是发现系统的主要职责,然后进行细化架构设计,即在初步架构设计的基础上对系统进行分解,并细化这些职责[4]。

2.1初步架构设计

在初步架构设计中,我们采用鲁棒图设计工具对需求进行分析,用来解决每个用例需要哪些对象的问题,同时检查用例规约是否完善。鲁棒图包含三种元素:边界对象、控制对象、实体对象。边界对象对模拟外部环境和目标系统之间的交互关系进行建模,负责接收外部输入和处理内部内容的解析或展示,并表达或传递相应的结果;控制对象对系统的行为进行封装,描述用例中事件流的控制行为;实体对象往往来自业务逻辑,对信息进行描述。在连铸PCS初步架构设计中,不需要画出每个功能需求的鲁棒图,而只需对核心的功能需求进行分析。

首先对生产计划的维护、显示这个核心功能建模。用户操作员需通过生产计划显示画面得到用于指导生产的计划信息;同时,操作员还需对生产计划进行维护,包括添加、删除、修改和保存。因此对于操作员来说,需要访问“炉次、板坯计划显示画面”和“炉次、板坯计划维护画面”这两个边界对象。与边界对象对应的“炉次、板坯计划监视”和“炉次、板坯计划维护”是控制对象,属于逻辑控制,对实体对象“炉次、板坯计划”分别进行读取和写入操作。除操作员外,工厂MES也可通过访问边界对象外部接口,触发控制对象“炉次、板坯计划维护”,实现实体对象“炉次、板坯计划”的写入。连铸PCS生产计划的维护鲁棒图见图1。

其次,对生产过程跟踪、板坯切割数据自动下发等核心功能需求进行建模。当生产计划确认后,操作员以炉次、板坯计划为指导进行生产。在生产过程中,操作员通过访问边界对象“炉次跟踪显示画面”和“铸流跟踪显示画面”,分别从“炉次跟踪”和“铸流跟踪”这两个控制对象中获取相关数据;同时,控制对象“切割监控”从实体对象“炉次、板坯计划”中读取生产计划,并结合对控制对象“切割补偿计算”的调用,实现板坯切割控制以及把切割结果返回给板坯切割监控画面并写入实体对象“板坯成品报告”中。在调用控制对象“切割补偿计算”时,还需要从实体对象“切割补偿规则”中获取相关的切割补偿规则。当板坯切割完成后,由“切割监控”生成“板坯成品报告”对象。“成品报告上传控制”对象会将生成的板坯成品报告上传到与工厂MES进行通信的外部接口,通过这个边界对象,MES便可以获得板坯成品报告。连铸PCS生产过程的跟踪、监控鲁棒图如图2所示。

图2还反映了各个控制对象之间的关系,这些交互关系对业务逻辑非常重要,如控制对象“炉次跟踪”向“铸流跟踪”发送其需要的炉次跟踪数据(如炉次之间的分离点信息),从而完成炉次跟踪的功能。控制对象“铸流跟踪”与“切割监控”会进行交互,相互传输数据。

最后,根据鲁棒图,按照三层架构的设计原则,将鲁棒图中的各职责划分到各层级中,如图3所示。

表示层只负责显示数据,不做任何业务逻辑处理,只通过接口调用业务逻辑层的数据,因此将“炉次跟踪显示画面”等边界对象划分在表示层,通过分布式的客户端程序实现。

业务逻辑层是包含了PCS的核心逻辑层,在本系统中,“铸流跟踪”、“切割监控”、“炉次跟踪”以及“成品报告上传控制”、“接收计划处理”这几个控制对象被分解为两部分,分别置于业务逻辑层和数据访问层。在业务逻辑层的部分,主要用于过程控制,通过采集到的实时数据,捕捉与过程控制有关的工艺事件(如大包到达、大包开浇、切割开始等),然后与表示层和数据访问层进行交互。一方面,它可以响应表示层向其发送的消息,并向表示层发送数据;另一方面,在过程控制中,业务逻辑层捕捉到事件后,通过调用其在数据访问层的部分,实现对关系数据库的操作。以“炉次跟踪”对象为例,当表示层的“炉次跟踪显示画面”需要显示数据时,会向其发送消息请求,当“炉次跟踪”对象接收到消息后,将有关的炉次数据发送给“炉次跟踪显示画面”;此外,当“炉次跟踪”对象捕捉到大包到达这一工艺事件后,会调用其位于数据访问层的部分,实现对关系数据库的操作。

数据访问层是为了降低业务逻辑层对数据库的依赖而设计的。考虑项目规模和技术方面的约束,结合实际工作中大部分使用Oracle数据库的情况,在这一层,通过使用存储过程对数据库的操作进行封装。存储过程是一组用于完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字和给出参数来执行它,实现对数据库的操作。由于存储过程在使用中具有执行速度快、网络流量少及标准组件式编程等优点,因此使用非常方便。如“炉次、板坯计划维护”与“炉次、板坯计划监视”功能的实现就是通过数据库读取,通过简单的查找、插入、删除操作来实现相应的功能,因此,将这部分所涉及的业务逻辑用存储过程进行了封装。此外,存储过程还可以对控制对象中涉及数据访问的部分进行封装,如“铸流跟踪”、“切割监控”和“炉次跟踪”这三个控制对象由于所涉及的功能不仅包含对数据库表的读取,还包含复杂的数据库操作,因此用存储过程将与数据库高度关联的业务逻辑进行封装,实现业务逻辑和与之关联的数据库操作的分离。

与一般计算机系统不同的是,连铸PCS中的“实时铸流数据”和“实时炉次数据”实体对象均是生产过程中的PLC实时数据,反映生产过程情况,对PCS至关重要,在本项目中,通过我们自行研发的实时数据采集平台服务提供对实时数据读取和操作的接口,从而实现对实时数据的采集;而“炉次、板坯计划”和“板坯成品报告”等生产组织数据则需要保存在应用数据库中;与外部MES的通信属于与外部系统的集成,这里将“接收MES计划外部接口”与“成品报告上传外部接口”边界对象以数据库表的形式实现,从而可以通过使用Oracle的Database Link技术实现外部MES与连铸PCS的数据通信。

2.2细化架构设计

初步架构设计完成后,再通过细化架构设计细化系统的主要职责,即通过解决小问题来解决大问题。以炉次计划维护为例,所需功能细化为添加炉次计划、更新炉次计划、删除炉次计划、拷贝炉次计划、绑定生产炉次号、炉次计划上移和炉次计划下移等更小功能。根据初步架构设计,炉次计划维护需要操作员从客户端录入数据,因此在客户端的炉次计划维护画面里分别添加上述功能的操作接口,如按钮和对话框等。同时,在存储过程里编写与上述功能相对应操作的语句,客户端通过调用存储过程实现对数据库的操作,从而实现客户端与数据库操作的分离。从开发的角度上讲,客户端开发人员只需调用接口和传递参数,而不必关心具体的数据库操作,具体的数据库操作可以由负责业务逻辑的开发人员负责。当业务逻辑的规则发生变化时,只需改变存储过程。在实际工作中,还可以开发相应的工具,根据存储过程的格式,自动生成相应接口,使得开发的过程大大简化。板坯计划维护功能可以细化为添加板坯计划、更新板坯计划、删除板坯计划、拷贝板坯计划,板坯计划上移、板坯计划下移、板坯组合等功能。与炉次计划维护类似,板坯计划维护也采用了同样的设计,在存储过程里编写与上述功能相对应操作的语句,以供客户端调用。

对于PCS,生产过程跟踪控制的核心功能是根据实时数据捕获生产中的过程事件,并做出相应响应,如根据业务逻辑对关系数据库进行操作、下发生产设定数据等。炉次跟踪控制、切割控制和铸流跟踪这些功能属于生产过程跟踪控制,我们将其逐步细化,并将生产事件的获取和相应的数据库操作进行分离。

炉次跟踪控制功能包括从实时数据中获取并响应生产过程中的炉次过程事件,如大包到达、炉次开浇、炉次停浇、炉次离开、炉次切割完成、炉次分离点产生等。 切割控制除了包含获取并响应切割开始、切割结束等事件的功能外,还具有向生产设备(切割机)下发切割参数、响应炉次分离事件等功能。上述功能模块在响应生产过程事件时均需要对关系数据库进行相应操作,此时只需要调用接口,通过相应的存储过程来实现。铸流跟踪包含从生产实时数据中获取铸流头部和尾部位置、浇铸速度、总浇铸长度等功能。切割控制功能模块与其有交互关系,从中读取铸流相关数据。

在划分好功能模块后,根据业务逻辑,画出序列图[5],如图4所示,一方面反映了业务流程,另一方面反映了生产过程控制子系统中各个功能模块之间的交互关系。当炉次跟踪功能模块获取到大包到达事件时,调用存储过程中炉次跟踪操作,而封装为存储过程的炉次跟踪的数据库操作会更新关系数据库中的生产计划表,改变表中的状态标志。炉次开浇事件、炉次停浇事件等与此类似。在时序关系上,当炉次开浇后,切割控制功能模块获取到切割开始事件,然后通过接口调用存储过程,改变关系数据库中相关表的状态,获取切割设定数据,并将数据写入到实时数据平台。切割完成事件与此类似。

从图4还可以看出,同属于生产控制子系统的炉次跟踪模块、切割控制模块和铸流跟踪模块存在交互,这就意味着需要考虑模块与模块之间的交互机制。当炉次跟踪模块获取炉次分离点事件后,向切割控制模块发送消息,切割控制模块接收到此消息后,从铸流跟踪模块获取铸流信息,然后调用存储过程中的炉次分离事件处理程序,根据炉次分离点的位置,确定中间坯,并对所在炉次中的板坯计划进行添加或删除操作,从而完成系统对炉次分离事件的响应。

3结束语

在对首秦2号连铸机PCS需求的全面分析基础上,首先进行了初步的架构设计,综合考虑功能需求、质量需求、环境约束,明确了系统的主要职责,获取了系统核心的功能,对系统进行分层,根据功能和职责分割子系统。然后在进行细化架构设计时,确定各个子系统中各个功能模块的主要职责,逐步添加细节,完善系统的功能,形成一个完整的,可用于指导后期编码的软件架构设计。同时,还讨论了三层架构设计在连铸PCS中的应用,采用存储过程封装关系数据库操作,实现了表示层与业务逻辑层的分离以及业务逻辑与关系数据操作的分离,增加了可复用性,优化了开发过程,减少了工作量,提高了工作效率。该软件架构已于2011年3月正式投入使用,目前该系统运行稳定,满足了用户需求,提高了用户的管理水平,减轻了操作员的工作负担,受到了用户的肯定。此系统的不足在于数据访问层中的存储过程过于依赖Oracle数据库,当需要使用其他数据库时,需要重写存储过程,降低了系统的可移植性,需要在以后的研究中予以完善。

参考文献

[1]温昱.一线架构师实践指南[M].北京:电子工业出版社,2009.

[2]杨春晖,孙伟.系统架构设计师教程[M].北京:清华大学出版社,2009.

[3]David Garlan,Mary Shaw.An introduction to software ar-chitecture[M].New Jersey:World Scientific PublishingCompany,1993.

[4]温昱.软件架构设计[M].北京:电子工业出版社,2007.

软件开发中的三层架构技术分析 篇6

在这种方式中, 客户端直接和服务器对接, 没有其他数据处理环节, 有利于提高数据库数据读取的速度, 但缺点是当计算机软件的任何一个部分发生更改, 哪怕是最微小的变动, 整个计算机软件都需要重新开发, 限制了软件的通用性。特别是对于大型软件开发, 除不利于软件的修改, 在软件的开发期也存在很大的困难, 需要程序编程人员相互高度配合, 而且也不利于工作的分配。

为了解决这种矛盾, 就出现了计算机软件的三层架构技术, 将原先单一的客户端和服务器端的模式, 根据功能分别拆分成表示层、业务逻辑层、数据访问层和数据实体层。采用“分而治之”的思想, 把复杂的问题分成不同的部分, 即不同的层, 以便逐个解决问题, 便于软件的设计、控制、资源分配和修改。为了让大家更好地了解三层架构技术, 本文从几个方面对软件开发中的三层架构技术进行介绍。

1 三层架构技术中具体分工和各层功能介绍

(1) 表示层:主要是指适合用户与计算机的交互界面, 目的是为了方便用户数据的输入和显示处理后的数据结果, 这部分工作主要由界面的美工完成。软件设计人员通过表示层界面收集用户输入的数据要求, 并把这些数据转换成业务逻辑层可以操作的数据。同时也把业务逻辑层传出的结果转换成客户想要的效果, 通过文本、图片、动画、3D等格式显示在用户眼前。表示层也可以被理解为输入和输出的操作平台, 我们可以创建一个图书馆, 然后把客户要求设计成固定的元素:图片、脚本、CSS、附件等进行统一管理。

(2) 业务逻辑层:又称为领域层, 是表示层和数据访问层的中间桥梁, 实现业务之间的逻辑处理, 主要是对经过表示层输入的数据进行验证、计算和业务规则等方面的处理。在程序编写的过程中, 主要体现在对象的方法、属性、事件、索引、接口等, 通过这些手段, 实现与数据访问层的对接。业务逻辑层的位置非常关键, 它位于表示层与数据访问层的中间位置, 对数据的交换起到了承上启下的作用。对于表示层而言, 它是被调用者, 而对于数据访问层而言, 它是调用者, 依赖与被依赖的关系都纠结在业务逻辑层上。

(3) 数据访问层:直接和数据库中原始数据进行对接, 是对数据底层的操作, 主要包括对数据库中数据的增加、删除、修改、查找等操作。该层主要的功能是根据业务逻辑层的要求, 把存储在数据库中的数据取出并提交给业务逻辑层, 同时把业务逻辑层处理的数据结果保存到数据库。对数据库的操作, 可以分为单表操作、关联表操作和不同数据库之间的操作。可以充分利用SQL语言中的Insert, delete, update, Select等语句, 对数据库进行操作, 同时返回不同的数据类型结果, 例如Data Table, Bool, Data Set, Data Reader等, 将其生成DLL文件, 然后通过组件的引用就可以现实数据访问的功能。

(4) 数据实体层:就是数据库中的原始数据。为了能够更有效地存储原始数据, 方便数据访问层对数据的存取等操作, 就必须对数据库进行设计, 将数据有规律地进行存放。

数据库设计是信息系统的核心和基础。首先我们应该对软件用户的业务数据的使用情况进行调查和分析, 了解所有业务数据的种类、范围、数量、存在形式以及它们之间的关联情况, 并由此确定用户对数据库的要求和相关制约条件等, 形成用户的需求分析。

通过用户的需求分析, 建立出一个合适的数学模型。这个数学模型应能够完整反映出现实中所有业务数据的信息结构、信息内容和信息之间的互相关联与制约关系, 并满足用户对信息的存储、维护、检索和修改数据的操作要求等。

2 三层架构技术的工作原理

首先, 用一张图表示三层架构技术之间的关系 (见图1) 。

从图1中可以很清晰地看到四层之间的一个逻辑关系。用户通过表示层的界面输入数据, 将数据传递给业务逻辑层进行验证、计算、处理等操作, 然后传递给数据访问层, 通过数据访问层到数据库中进行增加、删除、查找等操作, 得到用户所需要的数据结果, 将结果进行存储并把结果返回到数据访问层, 再通过给业务逻辑层, 最后以用户设定的格式显示在用户界面, 最终用户得到自己需要的结果。四层中任意一层仅仅和自己相邻的层进行数据交换, 而和其他层无任何关联。

三层架构技术, 其实就相当于在客户端与数据库端之间加了一个“中间层”, 也可以称之为组件层。这个“中间层”, 并不是实际物理意义上的中间层, 而指的是逻辑上的中间层, 把应用程序中的业务规则、数据访问、合法性校验等工作放到了中间层进行处理, 客户端不再直接与数据库进行数据交互, 而是通过中间层来建立连接, 再由中间层和数据库进行数据的交互, 最终实现客户端和数据库端的数据的交互。

3 三层架构技术的规则

在软件开发的三层架构技术中, 第四层数据实体层是基本的数据源, 是必不可少的一层, 是软件操作的基础, 它的运算效果取决于计算机的硬件和数据库设计的合理性。而对于另外三层, 并不是只要项目被划分成了表示层、业务逻辑层和数据访问层就称之为三层架构, 这三层之间还必须要遵守一些约定的规则: (1) 表示层仅仅只是一个和用户进行对接的界面, 因而可以将其任意移植到其他类似环境的项目中。 (2) 数据实体层只能通过数据访问层进行数据读取, 其他层都不能够直接从数据实体层中读取数据。 (3) 数据访问层只能作为一个对数据库实体的读取中间层, 而不能进行任何业务逻辑的处理操作。 (4) 软件设计应该以业务逻辑层为核心, 而不是数据访问层或是数据实体层, 更不应该是表示层。在业务逻辑层应该以面向对象的方式, 实现所有的有业务逻辑操作。 (5) 数据层中所有的数据都应该在一定的抽象程度上做到与系统无关。 (6) 设计的时候, 所有的远程对象技术都应该考虑到不同的服务器和多台服务器之间的负载均衡作集群。 (7) 这3个模块中的任意模块都可以运行在不同的服务器上。

一个项目是否需要进行三层设计, 首先要看这个项目的复杂度。实际上, 很多项目只需要编辑一个Web Application就足够实现全部功能了, 根本不需要更复杂的技术, 而只有真正复杂的项目, 才需要利用三层架构技术进行设计和开发。

4 三层架构技术的优势

通过对三层架构技术的工作原理的理解, 我们可以得到通过三层架构技术开发出来的软件的优点。

(1) 结构清晰, 耦合度低。三层架构技术中层次分明, 层与层之间结构清晰, 软件编写人员分工明确, 层与层之间的关联不多, 降低层与层之间的依赖性, 编写人员可以只关注整个结构中的某一层, 从而极大地避免了二层技术开发的软件中存在的耦合度问题。

(2) 可维护性高, 可扩展性高。用三层架构技术开发的软件在后期维护的时候, 极大地降低了维护成本和维护时间。软件的任意一部分的功能更改和升级, 仅需更改某层的设计和编写, 而不需要对整个系统做出改变, 而不像用二层技术开发的软件那样, 一个小程序的变化都需要调整整个软件开发, 极大地提高了软件的维护性和扩展性。

(3) 利于开发任务同步进行, 容易适应需求变化。三层架构技术极大地解决了软件开发的问题, 特别是大型软件开发的问题, 让软件开发实现任务的同步。在二层技术开发软件时, 由于仅有2个端点, 故软件开发时就存在一个编程的先后, 必须由一个团队对整个软件流程十分清楚, 并从始至终编写所有环节的程序。而三层架构技术把软件分成4个层次, 而且层与层之间关联不大, 故可以将软件分成4个不同层次进行同步开发, 实现任务的同步, 从而大大缩短了软件开发的时间, 更容易适应需求的变化。

5 三层架构技术的缺点

(1) 降低了整个系统的读取数据的速度。在二层技术结构中, 大部分数据的读取是通过客户端直接造访数据库而得到的结果, 而三层架构技术却必须经过4个层次的完整过程才能得到最终结果, 无形中增加了中间环节, 从而降低了系统的性能。

(2) 有时会导致关联层次的修改。由于三层架构技术中层与层之间存在逻辑关系, 当其中一个层次由于需要而发生功能的改变或增加时, 很有可能导致其他层次的代码改变。例如:当表示层中增加了一个功能, 为了保证其各层设计的结构合理性, 可能需要在对应的业务逻辑层和数据访问层中都增加相应的代码, 从而达到最终数据的一致性。

(3) 整体代码编写的工作量增加。由于三层架构技术增加了层与层之间的接口, 有些能够直接使用的代码现在不得不分开使用, 无形中增加了代码的编写工作量。

(4) 增加了开发成本。原先一个整体的软件开发, 现在首先必须将其分割成不同功能的层次, 而且需要考虑层与层之间的连接接口, 无形中增加了整个软件开发的过程和工作量, 从而增加了软件开发的成本。

总体而言, 针对如今软件开发的日趋大型化、规模化的特点, 三层架构技术解决了很多二层架构技术中无法解决的问题, 从而真正实现了软件开发的同步性、可维护性和可扩展性, 是软件开发进步的重要标志。

参考文献

[1] (美) 霍斯特曼.Java核心技术[M].9版.北京:机械工业出版社, 2012.

[2]贾辉.刍议分层技术在计算机软件开发中的应用[J].中国高新技术企业, 2015 (30) :59-60.

三层网络架构 篇7

关键词:用户服务系统,三层架构,统一认证,组织结构

随着计算机技术的快速发展和信息化程度的不断提高,国内外企业的各种信息管理系统也日趋增多和日益复杂,如何对这些系统的用户进行有效的管理已成为企业目前亟待解决的问题。为了实现用户的统一身份认证与组织结构管理,为现存的和即将开发的各个信息管理系统提供一个跨平台的认证授权信息管理接口,解决目前组织结构混乱、用户使用不便、安全性差等问题,本文提出了一种基于三层架构的企业用户服务系统。

1 系统总体设计

企业用户服务系统相对独立于企业的各个信息管理系统,统一了各个系统的用户身份信息,包括统一认证和组织结构管理两个功能模块。其总体结构如图1所示。

统一认证模块负责提供用户身份认证服务;组织结构管理模块负责为管理员提供操作界面管理信息平台所有用户的信息,包括用户基本信息、用户帐号信息、用户所拥有的角色信息、用户所属单位信息和用户所属部门信息等。

2 数据库设计

根据对企业的需求分析和数据库设计规范,企业用户服务系统的数据库中主要设计了以下7张数据表:账户表、用户表、单位表、部门表、角色表、对象关系表和对象排序表其中前5张表分别用于存储用户的相应信息,对象关系表用于存储系统中各个对象间的关系,对象排序表用于存储系统中各个对象的排序结果。表1描述了账户表的结构。

3 系统架构设计

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。目前业界使用最多的分层式结构一般分为三层,从下至上分别为数据访问层、业务逻辑层和表示层。为了更好地进行复用和扩展,增强灵活性,在企业用户服务系统中将数据访问层中的数据对象实体和方法进行了分离,并将数据对象实体单独作为一层(称为实体层)。这样,分离后的数据访问层仅具有行为而与数据无关,而实体层正好与之相反。采用三层架构设计的企业用户服务系统如图2所示。

3.1 实体层

实体层用于描述系统中客观存在的对象。实体层中的类称为实体类,一般与数据库中的数据表相对应。在企业用户服务系统中,实体层以动态链接库的形式存在,为其他各层提供数据。该层共设计了与数据表对应的7个实体类,分别为账户实体类、用户实体类、单位实体类、部门实体类、角色实体类、关系实体类和排序实体类,其中账户实体类如图3所示。

3.2 数据访问层

数据访问层主要负责数据库的访问,实现对数据表的添加、修改、删除和查询等操作。一般情况下,该层中的类也与数据表相对应。在企业用户服务系统中,数据访问层也是以动态链接库的形式存在,为业务逻辑层提供数据访问功能。该层共设计了与数据表对应的7个数据访问类,分别为账户访问类、用户访问类、单位访问类、部门访问类、角色访问类、关系访问类和排序访问类,其中账户访问类如图4所示。

3.3 业务逻辑层

业务逻辑层是三层架构中的核心部分,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。该层的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计上。在企业用户服务系统中,业务逻辑层也是以动态链接库的形式存在,为表示层提供各种业务逻辑的实现。该层主要实现的功能有:

1)账户的创建和删除、账户密码的修改以及账户信息的验证;

2)单位、部门、角色和用户信息的添加、删除、修改、查找和排序;

3)在单位中添加、移除部门、子单位或角色(角色只可以建立在单位中);

4)在部门中添加、移除用户(用户只可以建立在部门中);

5)在角色中添加、移除用户;

6)为信息管理系统提供的各种接口。

为了实现以上功能,该层共设计了验证管理类、验证结果类、组织结构管理类和系统异常类等4个类以及相应的接口,其中验证管理类如图5所示。

3.4 表示层

表示层位于三层架构的最外层,离用户最近、用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。该层不对用户输入的数据进行判断,只是将数据传递给业务逻辑层;同时也接收业务逻辑层传递的数据并以一定的格式显示。在企业用户服务系统中,表示层以Web应用程序的形式存在,主要为管理员提供系统登录界面和组织结构管理界面。本系统中的验证管理界面由相应的信息管理系统提供。

4 结束语

三层架构是目前最常用的一种软件体系架构。使用三层架构思想设计的企业用户服务系统,不仅增加了系统的灵活性,更重要的是为企业提供了统一、完善、易用的用户认证和组织结构管理平台,提高了企业平台的安全性,抵御了潜在的安全风险。

参考文献

[1]白焰,秦宇飞,王潇,等.基于三层架构的工业报表系统设计[J].微计算机信息,2009,25(5):274-275.

[2]黄光芳.面向接口编程在三层架构系统中的设计及应用[J].计算机应用与软件,2009,26(6):133-135.

[3]郭彬.基于.NET三层架构的在线考试系统设计与实现[J].电脑知识与技术,2008,4(8):2500-2501.

单元测试在三层架构开发中的应用 篇8

软件测试是软件开发过程中的一个重要环节。利用相关测试工具, 按照一定的测试流程对软件进行功能性测试和非功能性测试, 以尽可能小的代价, 发现尽可能多的错误, 跟踪错误并改正错误, 以保证软件开发质量, 确保软件满足用户需求。软件测试一般分为单元测试、集成测试、系统测试等。其中, 单元测试是最基本的一项测试, 一般用于判断某个特定条件或场景下特定对象的行为, 测试对象是软件开发中的最低层、最基本、最小的单元, 可以是一个函数、模块或者对象。单元测试的质量直接影响软件开发的质量。

基于三层架构的软件设计开发模式当下非常流行, 它将系统分为页面表示层、基本逻辑层和数据访问层3个层次, 层内隐藏实现的细节, 层间提供统一接口便于调用, 满足软件开发高内聚、低耦合的原则, 将单元测试用于三层架构的软件开发具有现实意义。

本文结合高校户籍管理系统, 使用NUnit和NCoverage工具, 探讨了高校户籍管理系统中数据访问层单元测试的具体设计与实现。

1 高校户籍管理系统三层架构设计

高校户籍管理系统包括户籍信息管理等7项主要功能[1]。图1给出了系统的三层架构设计。

2 数据访问层单元测试设计

在三层架构高校户籍管理系统设计中, 页面表示层负责界面的设计与开发, 通过事件触发基本逻辑层API, 实现相关逻辑操作。基本逻辑层通过数据访问层接口对数据库数据进行存取操作。

数据库访问层单元测试的对象为层内各个模块。数据访问层包括IStorages接口的设计及实现 (Storages) , Storages调用Wrappers封装类, Wrappers内部封装对数据库存储过程的调用, 以实现对数据库数据的存取操作。对数据访问层进行单元测试, 保证底层数据存取操作的正确性, 是软件功能实现的基本要求, 对此, 引入DATL层, 负责对数据访问层的测试。图2给出了DATL测试框架。

DATL层实现对数据访问层的单元测试, 数据访问层实现数据的存取操作。鉴于并行开发的需要, 通常在基本逻辑层设计实体类, 实体类只含属性、不含行为, 通过DAUtil方法实现数据库中记录与实体的映射。

单元测试执行前和测试结束后需要对数据库进行清理。NUnit提供了不同的属性, 供开发者使用[2]。TestFixture用于类上, 放在类声明中, 用于标识Test method;TestFixtureSetUp、TestFixtureTearDown分别在测试之前和之后运行, 以便进行测试前和测试后的参数设置或数据的准备和清理;Test:用于标识测试Method, 必须是Public;ExpectedException:标识期望抛出的异常, 用于异常检测;Assert:进行期望值与实际运行结果比对, 验证测试是否成功。

在DATL层设计单元测试的基类BaseTest, 内含虚方法Setup () 方法和TestFixtureTearDown, 实现测试之前和测试完成之后的数据库清理工作。

DATL层与其它三层单独设置, 测试完成后, 并不随项目一起发布, 实现测试与代码的分离。

Storage测试方法包括正常的数据库增、删、改、查等功能, 还需测试异常。在基本逻辑层lib模块中, 除了定义IManagers接口外, 还定义了项目所需的Verify () 和DealWithException () 等公共调用方法, 抛出的异常为DataAccessException、ArgumentException和ArgumentNullException等。页面表示层、基本逻辑层和数据访问层继承根异常Exception, 各层异常单独定义。参数异常使用函数重载的方式实现。

单元测试方法通常使用逻辑覆盖法、基本路径测试法、循环路径测试法、正交分析法、等价类划分等测试方法[3]。

3 数据访问层单元测试应用实例

数据访问层单元测试方法已运用于实际项目的测试。以高校户籍管理系统为例, Basetest测试基类, 简要概述数据清理这一重要步骤。关键源代码如下:

4 覆盖率检测实现

项目编译无误, 单元测试通过, 使用NCoverage进行覆盖率检测。代码覆盖率要求达到95%, 核心代码覆盖率要求达到100%。通常使用TestDriven工具实现覆盖率检测与测试源代码之间的快速切换。

下一步工作使用Cruise control.net构建技术, 结合SVN版本控制, 实现MsBuild集成编译、电子邮件提醒、NUnit单元测试报告和程序的自动发布等功能, 进一步提高软件团队开发效率, 保证软件开发质量。

5 结语

单元测试是整个测试中非常重要的环节, 数据访问层单元测试是三层架构开发中底层数据存取正确的保证。本文结合高校户籍管理系统, 给出DATL层的设计及实现方式, 提高了软件开发效率和质量, 节省了后期维护费用。

摘要:针对软件测试过程中的单元测试问题, 提出了一种基于.Net三层架构技术的数据访问层单元测试和覆盖率检测方法。结合高校户籍管理系统, 进行了数据访问层单元测试和覆盖率检测的设计与实现, 有效保证了程序质量。

关键词:单元测试,三层架构,覆盖率检测,软件测试,高校户籍管理系统

参考文献

[1]纪洲鹏, 赵斐斐, 姜文波.基于.Net三层架构高校户籍管理系统设计与实现[J].软件导刊, 2011, 10 (9) :71-72.

[2]HAMILTON B N.Unit pocket reference[M].O'Reilly Media, Inc, 2004.

三层网络架构 篇9

随着IT技术和电子商务技术的发展, 电子商务的规模越来越大, 网上服装销售与购买就是一个具体的应用, 在当今社会中起到越来越总要的作用, 服装电子商店也越来越多, 它具有很大的优势, 客户不需要出门在网上就能够买到自己需要的服装, 而且具有丰富的产品供客户选择, 及大地方便了客户和销售商。为了适应快速得开发具有不同特色的服装电子商店, 电子商店系统的集成开发越来越重要, 软件的复用技术对于快速开发服装电子商店具有重要的作用, 这里利用三层架构技术设计了一个服装电子商店, 并利用asp.net实现了该电子商店, 这种技术对于其他系统的开发业具有较好地借鉴作用。

2 三层架构体系

为了提高系统开发效率, 加强软件复用, 在.NET软件开发技术中提出了三层架构技术, 其基本内涵是将整个软件体系划分为三层:表示层、业务逻辑层和数据访问层。其体系结构如图1所示, 各层的含义如下:

表示层:就是系统的开发界面, 是用户与系统的交互界面, 主要目的是输入和输出, 即将外界的数据通过界面输入到系统中, 同时将系统处理以后的结果展示在屏幕上。表示层的设计主要是考虑美观大方, 适应于人们的审美观, 因此, 表示层的工作主要由美工人员来执行。

业务逻辑层:本层主要处理系统业务, 也就是对数据访问层中获取到的数据按照系统的业务功能要求进行处理后返回到用户界面, 供用户使用。由此可见, 业务逻辑层是整个系统同的主要部分, 负责完成所有的功能业务的实现。该层的业务功能灵活都变, 以适应不用的业务。

数据访问层:主要负责提供或者是保存数据, 就是对数据库中的数据进行访问, 主要包括数据表中的数据的增加、删除、修改和查询等功能。因此, 本层的功能比较简单, 其功能也比较通用, 一般将其它系统中的功能移植过来适当修改就可以了。

由此可见, 分层的目的是将整个开发过程实现分工与合作, 其中每一层可以由不同的人进行开发, 最后合并为一体, 这样使得各个开发人员可以并行工作, 相互之间影响减少, 提高了开发效率, 同时由于部分功能可以利用已有的成果进行适当修改甚至不用修改就可以直接利用, 提高了软件复用率。

3 系统设计

在对系统进行市场调研后, 对系统的需求进行分析, 系统需要实现的功能有:会员管理、商品管理、网上评价、订单管理、后台管理、购物车管理等功能, 其功能结构如图2所示:

前台服务管理主要是客户端能够查询、访问、和进行服装购买的一些基本功能, 主要包括会员的管理、服装查尊, 购物管理等功能, 需要提供一些有关服装的基本信息查询和交流功能, 让客户买的放心、买得舒心, 提高服务质量。

后台服务管理是商家的基本信息管理, 主要包括系统管理、供货商管理、服装管理、订单管理等基本功能。

根据系统的需求分析和以上功能的设计, 进行数据库设计, 其E-R如设计如图3所示。

4 系统实现

数据库管理系统使用的是SQL Server, 本系统设计的数据库如图4所示。

5 结论

利用三层架构设计了一个服装电子商店, 并利用ASP.NET与SQL Server编程实现了该系统, 经过测试, 该系统基本完成了服装网上销售与购买的基本功能, 由于本系统采用的是三层架构的形式来构架的系统, 因此, 系统的可扩展性较强, 为以后的功能完善奠定了基础。

摘要:传统的电子商务系统可扩展性差, 软件的复用性弱, 针对此问题, 利用.NET三层架构技术, 设计了一个通用的电子服装商店, 利用ASP.NET与SQL Server开发并实现了该系统, 该系统具有较高的扩展性, 较强的软件复用, 经过测试, 该系统具有将强的实用性, 本系统的设计与实现, 为我们今后设计软件系统提供了一种基本的思路。

关键词:电子商务,三层架构技术,ASP.NET

参考文献

[1]石晶, 何亮, 崔瑶.基于B/S三层架构的汽车故障诊断专家系统的实现[J].机械设计与制造, 2012, N0.3, pp:239-241

[2]黄东, 祝惠新.基于.NET三层架构的计生帐卡系统的研究与设计[J].科技通报, 2013, Vol.6, N0.3, pp:74-76

[3]茴作华, 刘耀林.基于三层结构的车辆监控系统的设计与实现[J].测绘通报, 2007, No.11, pp:46-49, 60

[4]陈良又, 盛可军, 王阳阳.基于ASP.NET三层架构软件的研究与开发[J].现代电子技术, 2010, No6.

上一篇:无差异的差异化下一篇:世界风筝都