计算机普及之初,软件的开发使用的都是二层架构技术,即只考虑2个端点:客户端和服务器端。用户通过客户端界面所提供的数据,直接在客户端对数据进行计算和处理,然后通过服务器在数据库中对数据进行读取等操作,得出需要的最终结果,并将结果传输到客户端界面显示给用户。
在这种方式中,客户端直接和服务器对接,没有其他数据处理环节,有利于提高数据库数据读取的速度,但缺点是当计算机软件的任何一个部分发生更改,哪怕是最微小的变动,整个计算机软件都需要重新开发,限制了软件的通用性。特别是对于大型软件开发,除不利于软件的修改,在软件的开发期也存在很大的困难,需要程序编程人员相互高度配合,而且也不利于工作的分配。
为了解决这种矛盾,就出现了计算机软件的三层架构技术,将原先单一的客户端和服务器端的模式,根据功能分别拆分成表示层、业务逻辑层、数据访问层和数据实体层。采用“分而治之”的思想,把复杂的问题分成不同的部分,即不同的层,以便逐个解决问题,便于软件的设计、控制、资源分配和修改。为了让大家更好地了解三层架构技术,本文从几个方面对软件开发中的三层架构技术进行介绍。
1三层架构技术中具体分工和各层功能介绍
(1)表示层:主要是指适合用户与计算机的交互界面,目的是为了方便用户数据的输入和显示处理后的数据结果,这部分工作主要由界面的美工完成。软件设计人员通过表示层界面收集用户输入的数据要求,并把这些数据转换成业务逻辑层可以操作的数据。同时也把业务逻辑层传出的结果转换成客户想要的效果,通过文本、图片、动画、3D等格式显示在用户眼前。表示层也可以被理解为输入和输出的操作平台,我们可以创建一个图书馆,然后把客户要求设计成固定的元素:图片、脚本、CSS、附件等进行统一管理。
(2)业务逻辑层:又称为领域层,是表示层和数据访问层的中间桥梁,实现业务之间的逻辑处理,主要是对经过表示层输入的数据进行验证、计算和业务规则等方面的处理。在程序编写的过程中,主要体现在对象的方法、属性、事件、索引、接口等,通过这些手段,实现与数据访问层的对接。业务逻辑层的位置非常关键,它位于表示层与数据访问层的中间位置,对数据的交换起到了承上启下的作用。对于表示层而言,它是被调用者,而对于数据访问层而言,它是调用者,依赖与被依赖的关系都纠结在业务逻辑层上。
(3)数据访问层:直接和数据库中原始数据进行对接,是对数据底层的操作,主要包括对数据库中数据的增加、删除、修改、查找等操作。该层主要的功能是根据业务逻辑层的要求,把存储在数据库中的数据取出并提交给业务逻辑层,同时把业务逻辑层处理的数据结果保存到数据库。对数据库的操作,可以分为单表操作、关联表操作和不同数据库之间的操作。可以充分利用SQL语言中的Insert,delete,update,Select等语句,对数据库进行操作,同时返回不同的数据类型结果,例如Data Table,Bool,Data Set,Data Reader等,将其生成DLL文件,然后通过组件的引用就可以现实数据访问的功能。
(4)数据实体层:就是数据库中的原始数据。为了能够更有效地存储原始数据,方便数据访问层对数据的存取等操作,就必须对数据库进行设计,将数据有规律地进行存放。
数据库设计是信息系统的核心和基础。首先我们应该对软件用户的业务数据的使用情况进行调查和分析,了解所有业务数据的种类、范围、数量、存在形式以及它们之间的关联情况,并由此确定用户对数据库的要求和相关制约条件等,形成用户的需求分析。
通过用户的需求分析,建立出一个合适的数学模型。这个数学模型应能够完整反映出现实中所有业务数据的信息结构、信息内容和信息之间的互相关联与制约关系,并满足用户对信息的存储、维护、检索和修改数据的操作要求等。
2三层架构技术的工作原理
首先,用一张图表示三层架构技术之间的关系。
从图中可以很清晰地看到四层之间的一个逻辑关系。用户通过表示层的界面输入数据,将数据传递给业务逻辑层进行验证、计算、处理等操作,然后传递给数据访问层,通过数据访问层到数据库中进行增加、删除、查找等操作,得到用户所需要的数据结果,将结果进行存储并把结果返回到数据访问层,再通过给业务逻辑层,最后以用户设定的格式显示在用户界面,最终用户得到自己需要的结果。四层中任意一层仅仅和自己相邻的层进行数据交换,而和其他层无任何关联。
三层架构技术,其实就相当于在客户端与数据库端之间加了一个“中间层”,也可以称之为组件层。这个“中间层”,并不是实际物理意义上的中间层,而指的是逻辑上的中间层,把应用程序中的业务规则、数据访问、合法性校验等工作放到了中间层进行处理,客户端不再直接与数据库进行数据交互,而是通过中间层来建立连接,再由中间层和数据库进行数据的交互,最终实现客户端和数据库端的数据的交互。
3三层架构技术的规则
在软件开发的三层架构技术中,第四层数据实体层是基本的数据源,是必不可少的一层,是软件操作的基础,它的运算效果取决于计算机的硬件和数据库设计的合理性。而对于另外三层,并不是只要项目被划分成了表示层、业务逻辑层和数据访问层就称之为三层架构,这三层之间还必须要遵守一些约定的规则:(1)表示层仅仅只是一个和用户进行对接的界面,因而可以将其任意移植到其他类似环境的项目中。(2)数据实体层只能通过数据访问层进行数据读取,其他层都不能够直接从数据实体层中读取数据。(3)数据访问层只能作为一个对数据库实体的读取中间层,而不能进行任何业务逻辑的处理操作。(4)软件设计应该以业务逻辑层为核心,而不是数据访问层或是数据实体层,更不应该是表示层。在业务逻辑层应该以面向对象的方式,实现所有的有业务逻辑操作。(5)数据层中所有的数据都应该在一定的抽象程度上做到与系统无关。(6)设计的时候,所有的远程对象技术都应该考虑到不同的服务器和多台服务器之间的负载均衡作集群。(7)这3个模块中的任意模块都可以运行在不同的服务器上。
一个项目是否需要进行三层设计,首先要看这个项目的复杂度。实际上,很多项目只需要编辑一个WebApplication就足够实现全部功能了,根本不需要更复杂的技术,而只有真正复杂的项目,才需要利用三层架构技术进行设计和开发。
4三层架构技术的优势
通过对三层架构技术的工作原理的理解,我们可以得到通过三层架构技术开发出来的软件的优点。
(1)结构清晰,耦合度低。三层架构技术中层次分明,层与层之间结构清晰,软件编写人员分工明确,层与层之间的关联不多,降低层与层之间的依赖性,编写人员可以只关注整个结构中的某一层,从而极大地避免了二层技术开发的软件中存在的耦合度问题。
(2)可维护性高,可扩展性高。用三层架构技术开发的软件在后期维护的时候,极大地降低了维护成本和维护时间。软件的任意一部分的功能更改和升级,仅需更改某层的设计和编写,而不需要对整个系统做出改变,而不像用二层技术开发的软件那样,一个小程序的变化都需要调整整个软件开发,极大地提高了软件的维护性和扩展性。
(3)利于开发任务同步进行,容易适应需求变化。三层架构技术极大地解决了软件开发的问题,特别是大型软件开发的问题,让软件开发实现任务的同步。在二层技术开发软件时,由于仅有2个端点,故软件开发时就存在一个编程的先后,必须由一个团队对整个软件流程十分清楚,并从始至终编写所有环节的程序。而三层架构技术把软件分成4个层次,而且层与层之间关联不大,故可以将软件分成4个不同层次进行同步开发,实现任务的同步,从而大大缩短了软件开发的时间,更容易适应需求的变化。
5三层架构技术的缺点
(1)降低了整个系统的读取数据的速度。在二层技术结构中,大部分数据的读取是通过客户端直接造访数据库而得到的结果,而三层架构技术却必须经过4个层次的完整过程才能得到最终结果,无形中增加了中间环节,从而降低了系统的性能。
(2)有时会导致关联层次的修改。由于三层架构技术中层与层之间存在逻辑关系,当其中一个层次由于需要而发生功能的改变或增加时,很有可能导致其他层次的代码改变。例如:当表示层中增加了一个功能,为了保证其各层设计的结构合理性,可能需要在对应的业务逻辑层和数据访问层中都增加相应的代码,从而达到最终数据的一致性。
(3)整体代码编写的工作量增加。由于三层架构技术增加了层与层之间的接口,有些能够直接使用的代码现在不得不分开使用,无形中增加了代码的编写工作量。
(4)增加了开发成本。原先一个整体的软件开发,现在首先必须将其分割成不同功能的层次,而且需要考虑层与层之间的连接接口,无形中增加了整个软件开发的过程和工作量,从而增加了软件开发的成本。
总体而言,针对如今软件开发的日趋大型化、规模化的特点,三层架构技术解决了很多二层架构技术中无法解决的问题,从而真正实现了软件开发的同步性、可维护性和可扩展性,是软件开发进步的重要标志。