书接上回,我们简单说了一下什么是软件体系结构,如果只是针对考试,只需知道常用的软件体系结构和他们的特点,按照题目的要求分析采用了什么体系结构就可以了,一般是考CS、三层CS、BS结构这三个。
构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
(说人话就是一个可以单独拿出来复用的代码包)
数据流风格:批处理序列;管道/过滤器。
调用/返回风格:主程序/子程序;面向对象风格;层次结构。
独立构件风格:进程通讯;事件系统。
分层系统风格
软件总是有体系结构的,不存在没有体系结构的软件。
现在我们讲的常用的软件体系结构风格都是分层系统,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
◎ C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
◎ 系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
◎ 在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
◎ 开发成本较高
◎ 客户端程序设计复杂
◎ 信息内容和形式单一
◎ 用户界面风格不一,使用繁杂,不利于推广使用
◎ 软件移植困难
◎ 软件维护和升级困难
◎ 新技术不能轻易应用
客户端:表示层、应用服务器的通讯
应用服务器端:功能层、业务处理
服务器端:数据层、和客户端的通讯
比两层的CS的好处:将业务处理的功能模块独立出来,让每一层的功能更加明显
◎ 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。
◎ 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
◎ 应用的各层可以并行开发,可以选择各自最适合的开发语言。
◎ 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。
◎ 三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
◎ 设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。
◎ 基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
◎ B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
◎ B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
◎ B/S体系结构的系统扩展能力差,安全性难以控制。
◎ 采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。(现在又ajax技术之后这个问题得到了缓解但是还是比不上CS结构,就像大型游戏现在你不能指望它能在浏览器上跑,数据计算量太大的目前还是需要客户机)
◎ B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用
这个就是不同的体系结构杂糅而成,例如:
在不同的网络环境下或者不同的业务场景中使用最佳的解决方案,一般来说对于企业外部需要Web通讯时就开发一套BS系统,对于企业内部需要数据处理效率的就开发一套CS系统,两者并不冲突。
DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。
现在随着软件领域的不断扩展,一些针对单一领域的软件体系结构和框架就越来越多了,常见的有MVC结构、MOP结构等,这个大家学习具体框架的时候就知道它是用的什么样的体系结构。
例如
从这两个框架大家就能看出区别,大型框架可能是包括多个体系结构的设计,而体系结构的每个部分又有多种小型框架来支撑,每种框架都有各自的优缺点,抛开业务谈框架就是耍流氓,我们要学习适合自己业务的框架。