1.1      CS结构

C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术, C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。

C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。

l  服务器

(1)数据库安全性的要求;

(2)数据库访问并发性的控制;

(3)数据库前端的客户应用程序的全局数据完整性规则;

(4)数据库的备份与恢复。

l  客户应用程序

(1)提供用户与数据库交互的界面;

(2)向数据库服务器提交用户请求并接收来自数据库服务器的信息;

(3)利用客户应用程序对存在于客户端的数据执行应用逻辑要求。

1)         优点

ü  C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。

ü  系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。

ü  在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

2)         缺点

ü  开发成本较高

ü  客户端程序设计复杂

ü  信息内容和形式单一

ü  用户界面风格不一,使用繁杂,不利于推广使用

ü  软件移植困难

ü  软件维护和升级困难

ü  新技术不能轻易应用

1.2      CS三层架构

c/s软件体系结构是20世纪90年代成熟起来的技术,它将应用一分为二,服务器(后台)负责数据管理.客户机(前台)完成与用户的交互任务。 传统的二层c/s结构存在以下几个局限:

1.二层c/s结构是 单一服务器且以局域网为中心的.所以难以扩展至大型企业广域网或Internet;

2.软硬件的组合及集成能力有限;

3.客户机的负荷太重.难以管理大量的客户机.系统的性能容易变坏;

4.数据 安全性不好。

因为二层C/S有这么多缺点.三层C/S结构应运而生。三层C/S结构是将应用功能分成表示层、功能层和数据层三个部分.

图 2 三层C/S结构示意图

  表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。

  功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。

  通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。

  数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因此,一般从功能层传送到数据层的要求大都使用SQL语言。

  三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。

  一般情况是只将表示层配置在客户机中,如果连功能层也放在客户机中,与二层C/S结构相比,其程序的可维护性要好得多,但是其他问题并未得到解决。客户机的负荷太重,其业务处理所需的数据要从服务器传给客户机,所以系统的性能容易变坏。

  如果将功能层和数据层分别放在不同的服务器中,则服务器和服务器之间也要进行数据传送。但是,由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如,在追加新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大这种形态的优点就越显著。

n  与传统的二层结构相比,三层C/S结构具有以下优点:  

1)        允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性。

2)        允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。例如,最初用一台Unix工作站作为服务器,将数据层和功能层都配置在这台服务器上。随着业务的发展,用户数和数据量逐渐增加,这时,就可以将Unix工作站作为功能层的专用服务器,另外追加一台专用于数据层的服务器。若业务进一步扩大,用户数进一步增加,则可以继续增加功能层的服务器数目,用以分割数据库。清晰、合理地分割三层结构并使其独立,可以使系统构成的变更非常简单。因此,被分成三层的应用基本上不需要修正。  

3)        三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。使之能并行地而且是高效地进行开发,达到较高的性能价格比;对每一层的处理逻辑的开发和维护也会更容易些。

4)        允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础;

5)        整个系统的管理层次也更加合理和可控制。

n  要注意的问题

1)         三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。

2)         设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。

1.3      浏览器/服务器风格

浏览器/服务器(B/S)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。◎ B/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S结构是一种全新的软件体系结构。

优点

1)         基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

2)         B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。

缺点

1)         B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。

2)         B/S体系结构的系统扩展能力差,安全性难以控制。

3)   采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。

4)         B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。

1.4      C/S与B/S混合软件体系结构

  B/S与C/S混合软件体系结构是一种典型的异构体系结构。

  B/S软件体系结构,即Browser/Server (浏览器/服务器)结构,是随着Internet技术的兴起,对C/S体系结构的一种变化或者改进的结构。在B/S体系结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。

  B/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件体系结构。基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了"零客户端"的功能,很容易在运行时自动升级。B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。

  但是,与C/S体系结构相比,B/S体系结构也有许多不足之处,例如:

  (1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。

  (2)B/S体系结构的系统扩展能力差,安全性难以控制。

  (3)采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。

  (4)B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。

  从上面的对比分析中,我们可以看出,传统的C/S体系结构并非一无是处,而新兴的B/S体系结构也并非十全十美。由于C/S体系结构根深蒂固,技术成熟,原来的很多软件系统都是建立在C/S体系结构基础上的,因此,B/S体系结构要想在软件开发中起主导作用,要走的路还很长。我们认为,C/S体系结构与B/S体系结构还将长期共存。

  C/S与B/S混合软件体系结构的优点是外部用户不直接访问数据库服务器,能保证企业数据库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快。

  C/S与B/S混合软件体系结构的缺点是企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。

PS:其实BS和CS(三层)的融合是必然之路,这是各自风格的优缺点和系统实际需要所决定的.比如在ERP系统中,贴近生产,需要操作效率(例如 MRP)和对本地控制要求比较高的可以采用CS三层,但对于一些行政OA性质的,一些对外接口则可以采用BS的(例如电子商务部分).

软件架构风格整理(6 CS,BS等)相关推荐

  1. Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结

    Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...

  2. 系统架构设计师 - 软件架构设计 - 软件架构风格

    文章目录 软件架构风格描述 数据流风格 批处理风格 管道过滤器风格 调用返回风格 主子程序风格 面向对象(显式调用风格) `层次结构`风格 独立构件风格 调用返回风格(隐式调用) 虚拟机风格 基于规则 ...

  3. 架构风格:万金油CS与分层

    计算机科学家David Wheele曾说过这么一句话: All problems in computer science can be solved by another level of indir ...

  4. 信息系统项目管理师核心考点(七)软件架构风格

    科科过为您带来软考信息系统项目管理师核心重点考点(七)软件架构风格,内含思维导图+真题.本资料由科科过整理. [信息系统项目管理师核心考点]软件架构风格 软件架构设计的一个核心问题是能否达到架构级的软 ...

  5. Python 自学笔记 总结 3.0 CS/BS 架构

    一.CS/BS 架构 1.1 什么是C/S架构? c/s架构是第一种比较早的软件架构,主要用于局域网内,也叫客户机/服务器模式. 它可分为客户机和服务器两层: 第一层:在客户机系统上结合了界面显示与业 ...

  6. 软件架构风格 仓库风格_功能风格–第9部分

    软件架构风格 仓库风格 实用主义 在本系列中,我们进行了一次旋风之旅,浏览了我认为最重要的与函数式编程相关的主题,以及一些我认为很好的相关知识. 我们从基础开始,定义了我认为是FP的本质,并展示了如何 ...

  7. 笔记-信息系统开发基础-架构设计-软件架构风格

    参考<信息系统项目管理师教材(第3版)>P45,软件架构风格,Garlan和Shaw对通用软件架构风格进行了分类,他们将软件架构分为数据流风格.调用/返回风格.独立构件风格.虚拟机风格和仓 ...

  8. python3-开发进阶-RESTful 软件架构风格

    一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征状态转移" ...

  9. 【系统架构设计师】软考高级职称,一次通过,2017年下半年系统架构设计师考试论文真题(论软件架构风格)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2017年下半年系统架构设计师考试论文真题(论软件架构风格) 论文:2017年第2题(论文题)论软件架构 ...

最新文章

  1. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...
  2. 统计学习:三大奇技(1)
  3. 双向多点路由重分布--如何防止路由环路以及次优路径
  4. ADO.NET知识汇总
  5. 主键与聚集索引的区别
  6. 前端学习(2743):重读vue电商网站53之项目上线
  7. C#LeetCode刷题之#283-移动零(Move Zeroes)
  8. react-native ListView 封装 实现 下拉刷新/上拉加载更多
  9. ijkplayer-旋转角度实现
  10. [机器学习]关联挖掘介绍
  11. Linux能运行intouch,Invensys Wonderware InTouch XML 外部实体漏洞
  12. F30.2018年版本北大中文核心期刊目录
  13. How to read Ext4 in Windows 10
  14. 微信小程序实时音视频功能简析(live-pusher与live-player)
  15. 如何实现thead固定不动,tbody出现垂直滚动条
  16. Matplotlib做动图(基础版)
  17. 整数翻转-LeetCode No7
  18. 该项目不在XXX中。请确认该项目的位置,然后重试。之解决办法
  19. 通信原理实验 多径传播 MATLAB仿真
  20. 电脑连不上网络,怎么办?

热门文章

  1. 常见二维码上那些奇怪的图案是什么
  2. 计算机存储容量用K还是KB,计算机中容量单位B、KB、MB、GB和TB的关系
  3. 用Python绘制当前日期
  4. ipad+html+全屏模式,javascript – iPad上的Chrome全屏API?
  5. ch341a编程和ttl刷机区别_USB转TTL(CH341A)的注意事项及说明
  6. 如何防止网站关键数据被人恶意采集
  7. 机器学习入门 笔记(二) 机器学习基础概念
  8. 乐高机器人走进图书馆活动方案_欢迎参加“乐高机器人创意搭建赛”活动
  9. 英文 SCI 论文写作常用句式(保持更新)
  10. win7系统下 安装anaconda时报错“failed to create menus”的解决方案