客户/服务器(C/S)
客户/服务器(C/S)计算技术在信息产业中占有重要的地位。**结构为客户端/数据库服务器。**网络计算经历了从基于宿主机的计算模型到客户/服务器计算模型的演变。在集中式计算技术时代,广泛使用的是大型机/小型机计算模型。它是通过一台物理上与宿主机相连接的非智能终端来实现宿主机上的应用程序。在多用户环境中,宿主机应用程序即负责与用户的交互,又负责对数据的管理。宿主机上的应用程序一般也分为与用户交互的前端和管理数据的后端,即数据库管理系统(DBMS)集中式的系统使用户能共享贵重的硬件设备。如磁盘机、打印机和调制解调器等。

C/S软件体系结构是基于资源不对等且实现共享而提出,是在20世纪90年代成熟的技术,C/S体系结构定义了工作站如何与服务器相连,实现部分数据和应用分布到多个处理机上。C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络,如图所示。


服务器负责有效地管理系统的资源,例如,数据库管理系统,其任务集中于:

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

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

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

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

客户应用程序的主要任务如下。

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

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

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

C/S体系结构的优点主要在于系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。但随着企业规模的日益扩大,软件的复杂程度不断提高,C/S体系结构逐渐暴露了以下缺点。

(1)开发成本较高。C/S体系结构对客户端软硬件配置要求较高,尤其是软件的不断升级,对硬件要求不断提高,增加了整个系统的成本,且客户端变得越来越臃肿。

(2)客户端程序设计复杂。采用C/S体系结构进行软件开发,大部分工作量放在客户端的程序设计上,客户端显得十分庞大。

(3)信息内容和形式单一,因为传统应用一般为事务处理,界面基本遵循数据库的字段解释,开发之初就已确定,而且不能随时截取办公信息和档案等外部信息,用户获得的只是单纯的字符和数字,既枯燥又死板。

(4)用户界面风格不一,使用繁杂,不利于推广使用。

(5)软件移植困难。采用不同开发工具或平台开发的软件一般互不兼容,不能或很难移植到其他平台上运行。

(6)软件维护和升级困难。采用C/S体系结构的软件要升级,开发人员必须到现场为客户机升级,每个客户机上的软件都需维护。对软件的一个小小改动(例如只改动一个变量),每一个客户端都必须更新。

总结:C/S结构的软件优点:性能不错,简单粗暴,易理解;缺点:软件移植困难,维护升级困难,尤其面对客户群体庞大的互联网应用。

三层C/S体系结构
针对二层C/S体系结构的缺点,三层C/S体系结构应运而生。结构为客户端/应用服务器/数据库服务器。在三层C/S体系结构中,增加了一个应用服务器。可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这种结构被称为“瘦客户机”。三层C/S体系结构是将应用功能分成表示层、功能层和数据层三个部分。

1)表示层

表示层是应用的用户接口部分担负与应用逻辑间的对话功能。它用于用户从工作站输入的数据,并显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户界面(Graphic User Interface, GUI),在变更用户界面时,只需改写显示控制和数据检查程序,而不影响业务逻辑。

2)功能层

功能层是应用的本体,它负责具体的业务处理逻辑,例如在制作订购合同时要计算合同金额。表示层和功能层之间的数据互交要尽可能简洁。例如,用户检索数据时,要将有关检索要求的信息一次性地传送给功能层,检索结果数据也由功能层一次性地传送给表示层。

3)数据层

数据层通常是数据库管理系统,负责管理对数据库数据的读写。数据库系统必须能迅速执行大量数据的更新和检索。

三层C/S的解决方案对这三层进行明确分割,不同层构件相互独立,层间的接口简洁,适合复杂事务处理。

总结:相对二层的C/S结构,客户端应用只负责表示层功能,通过网络通信与应用服务器交互,方便性能能拓展(可增加应用服务器数量),维护成本相对较低(不涉及表示层调整无需升级)。

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

在B/S结构中,除了数据库服务器外,应用程序以网页形式存放于Web服务器上,用户运行某个应用程序时只需在客户端上的浏览器中键入相应的网址(URL),调用Web服务器上的应用程序并对数据库进行操作完成相应的数据处理工作,最后将结果通过浏览器显示给用户。

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

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

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

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

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

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

因此,虽然B/S结构的计算机应用系统有如此多的优越性,但由于C/S结构的成熟性且C/S结构的计算机应用系统网络负载较小,因此,应用系统常以C/S和B/S混合应用形式出现,如图所示。

软件体系结构介绍(B/S与C/S)相关推荐

  1. 软件体系结构风格之C/S,三层C/S,与BS

    C/S的物理结构,其发展历程为(1)->(3)->(2),本文接下来要介绍的C/S为(3),即胖客户端瘦服务器,服务器只管数据库,接下来要介绍的三层C/S为(2),即客户端不胖不瘦. C/ ...

  2. 软件体系结构风格(第5-8课时)

    摘要:本文给出软件体系结构风格的定义,并介绍几种常用风格:管道过滤器.数据抽象和面向对象组织,基于事件的隐式调用,分层系统,仓库系统,过程控制环路 软件体系结构风格是什么 描述特定系统组织方式的惯用范 ...

  3. 《软件建模与设计: UML、用例、模式和软件体系结构》一一

    本节书摘来自华章计算机<软件建模与设计: UML.用例.模式和软件体系结构>一书中的第3章,第3.5节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区"华章计 ...

  4. 软件体系结构的风格(转载)

    在上两篇文章中,我们介绍了软件体系结构的概念.现状及发展方向,读者可能会觉得"软件体系结构太抽象.太理论化,没有什么实际的东西".然而,任何实践都必须接受理论的指导,如果抛弃理论基 ...

  5. 《软件建模与设计: UML、用例、模式和软件体系结构》一一3.1 软件生存周期模型...

    本节书摘来自华章计算机<软件建模与设计: UML.用例.模式和软件体系结构>一书中的第3章,第3.1节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区"华章计 ...

  6. 《软件建模与设计: UML、用例、模式和软件体系结构》一一3.2 设计验证和确认...

    本节书摘来自华章计算机<软件建模与设计: UML.用例.模式和软件体系结构>一书中的第3章,第3.2节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区"华章计 ...

  7. SMP、NUMA、MPP体系结构介绍

    SMP.NUMA.MPP体系结构介绍 从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 ( ...

  8. 面向模式的软件体系结构

    面向模式的软件体系结构,卷2,详细介绍并发网络服务器 C 语言常见问题集 转载于:https://www.cnblogs.com/unixshell/p/3825490.html

  9. 视频打开后从头开始_后端软件体系结构清单:如何从头开始构建产品

    视频打开后从头开始 You wake up one morning to have your cup of coffee and voilà, the Eureka moment is here. Y ...

最新文章

  1. 25 岁“天才少年”曹原再发一篇 Nature!9 个月的第三篇 Nature!
  2. opencv 车辆识别_丽水专业人脸自动识别系统网
  3. 一个B/S结构自动二次请求需求的实现
  4. java 查询线程池_[代码全屏查看]-我的 Java 线程池测试类
  5. 文字层一点就变红_学习观察神经网络:可视化整个模型训练中卷积层的激活
  6. dbeaver无法修改表数据_隐藏彩蛋:你知道python有一个内置的数据库吗?
  7. 125_Power BI 中 DAX 的性能测试
  8. 微课|Python程序设计开发宝典(5.1.2节):嵌套函数定义2
  9. android获取电池是否充电,Android 判断电池是否为充电状态的方法
  10. nginx内核优化及配置
  11. 项目关键路径与项目最长路径有可能不同
  12. (字符串)ZigZag Conversion
  13. synchronized工作原理剖析(一)
  14. 基于51单片机的8位数码管时钟设计—按键修改时间
  15. 叉车AGV车载系统模块详解
  16. 计算机大一基础知识,大一计算机基础知识论文
  17. html往WPS粘贴格式乱,wps表格无法粘贴信息,原因是复制区域形状不同怎么解决?...
  18. Lora Ra-01模块初步调试问题记录
  19. STM32跳入HardFault Handler中断分析
  20. 首届金融行业SD-WAN的应用与实践研讨会上海站

热门文章

  1. Chrome APP 操作读卡器串口
  2. Java实现根据拼音首字母的排序
  3. Verilog 实现 UART TX 发送器
  4. 智能剪辑系统爆款生成器--移动端(小程序)手机版
  5. AP微积分该如何学习?
  6. 怎么足不出户在网上配钥匙
  7. ShowDoc的使用
  8. 青龙面板之京东【强烈推荐】
  9. 日清日结工作方法简介(OEC)
  10. 电池SOC仿真系列-基于UKF算法的电池SOC估算研究