软件体系架构中的三层结构
- 格式:doc
- 大小:128.00 KB
- 文档页数:2
传统的二层C/S结构有以下几个局限性:1、二层C/S结构是单一服务器组成以局域网为中心,难以扩展到大型企业的广域网或Internet。
2、软硬结合有限。
3、客户机负荷太重,难以管理大量的客户机。
4、数据安全性不好。
正是因为二层C/S有这么多缺点,因此,三层C/S结构应运而生。
三层C/S结构是将应用功能分成表示层、功能层和数据层三个部分,如图2所示。
图2 三层C/S结构示意图表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。
它用于检查用户从键盘等输入的数据,显示应用输出的数据。
为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。
检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。
例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。
表示层和功能层之间的数据交往要尽可能简洁。
例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。
功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。
数据层就是数据库管理系统,负责管理对数据库数据的读写。
数据库管理系统必须能迅速执行大量数据的更新和检索。
因此,一般从功能层传送到数据层的要求大都使用SQL语言。
三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。
原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。
一般情况是只将表示层配置在客户机中,如果连功能层也放在客户机中,与二层C/S 结构相比,其程序的可维护性要好得多,但是其他问题并未得到解决。
第 2 章系统的分层结构2.1.简述我们在解决一个复杂的问题的时候,通常使用的一个技巧就是分解,把复杂的问题分解成为若干个简单的问题,逐步地、分别地解决这几个小问题,最后就把整个问题解决掉。
在设计一个复杂的软件系统的时候,同样的,为了简化问题,我们也通常使用的一个技术就是分层,每个层完成自身的功能,最后,所有的层整合起来构成一个完整的系统。
分层是计算机技术中的常用方法,一个典型的例子就是TCP/IP 技术的OSI 七层模型。
在应用软件开发中,典型的就是N层应用软件模型。
N层的应用软件系统,由于其众多的优点,已经成为典型的软件系统架构,也已经为广大开发人员所熟知。
在一个典型的三层应用软件系统中,应用系统通常被划分成以下三个层次:数据库层、应用服务层和用户界面层。
如下图(图2.1 )所示:图2.1其中,应用服务层集中了系统的业务逻辑的处理,因此,可以说是应用软件系统中的核心部分。
软件系统的健壮性、灵活性、可重用性、可升级性和可维护性,在很大程度上取决于应用服务层的设计。
因此,如何构建一个良好架构的应用服务层,是应用软件开发者需要着重解决的问题。
为了使应用服务层的设计达到最好的效果,我们通常还需要对应用服务层作进一步的职能分析和层次细分。
很多开发者在构建应用服务层的时候,把数据库操纵、业务逻辑处理甚至界面显示夹杂在一起,或者,把业务逻辑处理等同于数据库操纵,等等,这些,都是有缺陷的做法。
我们将就在这个方面进行设计时可采用的方案进行一些探讨。
在一个分布式应用系统中,整个系统会部署在不同的物理设备上,如上面所示的三层体系,用户界面和应用服务器可能在不同的设备上,这就涉及到不同机器之间的通信问题,也就是层间的通信和交互问题。
我们已经有了很多可以用于分布式远程访问的技术,如CORB,在Java平台上,我们还有Java RMI、EJB,在Windows平台上,从DCOMU COM,+ 再到.Net 下的WebService 和.Net Remoting 等。
软件体系结构◇软件体系结构概论◇软件体系结构建模◇软件体系结构风格◇软件体系结构描述◇动态软件体系结构◇Web服务体系结构◇基于体系结构的软件开发◇软件体系结构的分析与测试◇软件体系结构评估◇软件产品线体系结构软件危机的表现◎软件成本日益增长◎开发进度难以控制◎软件质量差◎软件维护困难软件危机的原因◎用户需求不明确◎缺乏正确的理论指导◎软件规模越来越大◎软件复杂度越来越高◎构件的定义构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
构件模型的三个主要流派OMG(Object Management Group,对象管理集团)的CORBA(Common Object Request Broker Architecture,通用对象请求代理结构)Sun的EJB(Enterprise Java Bean)Microsoft的DCOM(Distributed Component Object Model,分布式构件对象模型)。
构件获取1.从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件;2. 通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件;3. 从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件;4. 开发新的符合要求的构件。
构件管理◎构件描述◎构件分类与组织◎人员及权限管理构件描述构件模型是对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据;构件分类与组织◇关键字分类法◇刻面分类法◇超文本组织方法人员及权限管理一般来讲,构件库系统可包括五类用户,即注册用户、公共用户、构件提交者、一般系统管理员和超级系统管理员。
构件重用◎检索与提取构件◎理解与评价构件◎修改构件◎构件组装构件重用理解与评价构件◇构件的功能与行为◇相关的领域知识◇可适应性约束条件与例外情形◇可以预见的修改部分及修改方法构件组装◇基于功能的组装技术◇基于数据的组装技术◇面向对象的组装技术软件体系结构的定义软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
MVC是指Model模型,View视图和Control控制器,也就是业务逻辑,界面和用户输入,这样划分系统比较清晰,这是设计人员要考虑的事。
什么是C/S结构。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。
目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。
这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。
而且代价高,效率低。
如我院使用的上海超兰公司“案件统计”管理软件就是典型的C/S体系结构管理软件。
什么是B/S结构。
B/S(Browser/Server)结构即浏览器和服务器结构。
它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。
技术架构描述技术架构,也称做技术体系结构,是软件系统的关键组成部分,其目的是为了实现跨平台、跨终端的数据交互和多用户共享。
一个软件系统的技术架构可以把一个软件系统描述为一种从形式上到实现上均通过技术架构完成的全面解决方案。
正是由于技术架构,系统可以实现模块化,支持业务自由组合,并且从系统维护、管理、自动化测试等方面获得在维护成本、发展速度上的突破性增长。
技术架构一般有三个特征,即系统的抽象与具体化,结构的稳定与变化,和功能的统一与分解。
系统抽象与具体化,是指系统在设计阶段,将处理复杂的计算任务转换为一个个基本的抽象的组件,统一设计、统一调用,从而实现自动化控制,从而提高系统的效率。
结构的稳定与变化,是指系统在运行阶段,系统结构一方面要稳定,以保证系统的正常运行;另一方面也要发挥扩展能力,以满足系统的发展变化。
功能的统一与分解,是指在应用阶段,将系统的功能统一抽象,把复杂的功能统一分解,使系统有更好的重用性和可扩展性。
技术架构可以分为三层:应用层、技术层和硬件层。
应用层主要指向用户提供可见的层次,如web界面、手机客户端等,这些功能都是依赖于技术层;技术层主要指用于处理用户请求、数据存储、安全验证、业务流程处理等功能,此层主要部署在软件服务器上;硬件层主要指物理服务器的组成,如磁盘、内存、运算处理器等,这些机器的运行和维护是支持软件系统的最基本保证。
在实施技术架构时,应根据具体的项目需求,确定需要做到的各个阶段,以实现技术架构总体方案。
首先,要对技术架构总体框架进行设计,设计标准化的组件,设计合理的系统架构,以保证系统性能、安全和扩展性;其次,要统一规划实现手段,统一规划系统构件,针对不同的功能模块,使用不同的软件技术实现;最后,要完善测试体系,实现系统的自动化测试,对系统运行情况实时监测,以确保系统稳定性。
基于上述理论,技术架构是软件系统在设计、构建和维护过程中必不可少的一部分。
从实施技术架构的角度来看,技术架构需要设计合理的组件,统一规划实现方案,实现自动化测试,以保证系统的安全稳定性和可扩展性。
软件体系架构中的三层结构
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
主流的分层式结构一般分为三层,分别为:
表示层、业务逻辑层(领域层)、数据访问层,如图所示:
数据访问层(DAL):有时候也称为是持久层,其功能主要是负责数据库的访问。
简单的说法就是实现对数据表的操作。
有时也会包括对象和数据表之间的mapping,以及对象实体的持久化。
业务逻辑层(BLL):是整个系统的核心,它与这个系统的业务(领域)有关。
业务逻辑层的相关设计,均和特有业务的逻辑相关,如果涉及到数据库的访问,则调用数据访问层。
表示层(UI):是系统的UI部分,负责使用者与整个系统的交互。
在这一层中,理想的状态是不应包括系统的业务逻辑。
表示层中的逻辑代码,仅与界面元素有关。
分层式结构究竟其优势:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、
标准定义。
一个好的分层式结构,可以使得开发人员的分工更加明确。
一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进。
例如UI人员只需考虑用户界面的体验与操作,领域的设计人员可以仅关注业务逻辑的设计,而数据库设计人员也不必为繁琐的用户交互而头疼了。
每个开发人员的任务得到了确认,开发进度就可以迅速的提高。
分层式结构也不可避免具有一些缺陷:
1、降低了系统的性能。
这是不言而喻的。
如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。
这种修改尤其体现在自上而下的方向。
如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
容易混淆的概念:三层结构与MVC模式。
请大家自己网上查找一下与这两个概念相关的内容。