第9章 · 播客 第7集
软件架构设计 · 二层/三层C/S与B/S架构
🎙️ 本集播客:第7集:C/S 的出身与一分为二,二层 C/S 的四大局限逐条背;三层 C/S 的表示层、功能层、数据层职责边界与部署形态取舍;B/S 的浏览器/Web服务器/数据库服务器、零客户端优势与三条不足——练习题第十三题原产地。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
师姐,C/S 架构我怎么总感觉是老古董了,考试还考这么细?
雅
小雅
考,而且就考细。C/S 架构是基于资源不对等、且为实现共享而提出来的,是 20 世纪 90 年代成熟起来的技术。C/S 结构将应用一分为二,服务器也就是后台负责数据管理,客户机也就是前台完成与用户的交互任务。C/S 软件架构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
雅
小雅
但随着企业规模的日益扩大、软件复杂程度不断提高,传统的二层 C/S 结构存在四个局限,逐条背:第一,二层 C/S 结构为单一服务器且以局域网为中心,所以难以扩展至大型企业广域网或 Internet;第二,软、硬件的组合及集成能力有限;第三,服务器的负荷太重,难以管理大量的客户机,系统的性能容易变坏;第四,数据安全性不好,因为客户端程序可以直接访问数据库服务器,那么在客户端计算机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁。
明
阿明
练习题第十三题问「二层 C/S 结构的主要缺点不包括」,选项里有「客户端零配置,易于维护」——那是优点,而且是 B/S 的特点,答案是它。
雅
小雅
分析得对。四个缺点各有各的出题角度:「难以扩展至广域网」对应单一服务器加局域网中心的定性;「服务器负荷太重」和「难以管理大量客户机」「性能容易变坏」是一串;「数据安全性不好」的原因是客户端可直接访问数据库服务器,这个因果链选项爱拆开考。正是因为二层有这么多缺点,三层 C/S 结构应运而生。
雅
小雅
三层 C/S 结构是将应用功能分成表示层、功能层和数据层三个部分。表示层是应用的用户接口部分,它担负着用户与应用间的对话功能,用于检查用户从键盘等输入的数据,并显示应用输出的数据。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑——这句「不包括业务处理逻辑」是表示层的边界定义,辨析题常客。
雅
小雅
功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中,处理所需的数据则要从表示层或数据层取得,表示层和功能层之间的数据交往要尽可能简洁。数据层就是数据库管理系统,负责管理对数据库数据的读写,数据库管理系统必须能迅速执行大量数据的更新和检索,因此一般从功能层传送到数据层的要求大都使用 SQL 语言。
明
阿明
表示层管界面和形式检查、功能层管业务逻辑、数据层就是 DBMS 用 SQL——三层各自的「一句话身份」我记住了。部署上有什么讲究?
雅
小雅
有,而且原文讲得很实。三层 C/S 的解决方案是对这三层进行明确分割,并在逻辑上使其独立。原来的数据层作为数据库管理系统已经独立出来,所以关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。一般情况是只将表示层配置在客户机中;如果将功能层也放在客户机中,与二层 C/S 结构相比,其程序的可维护性要好得多,但是其他问题并未得到解决,客户机的负荷太重,业务处理所需的数据要从服务器传给客户机,所以系统的性能容易变差。
雅
小雅
如果将功能层和数据层分别放在不同的服务器中,则服务器和服务器之间也要进行数据传送。但由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动,例如在追加新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大,这种形态的优点就越显著。
雅
小雅
接着 B/S。先接上文:在三层 C/S 架构中,表示层负责处理用户的输入和向客户的输出,功能层负责建立数据库的连接,根据用户的请求生成访问数据库的 SQL 语句并把结果返回给客户端,数据层负责实际的数据库存储和检索。浏览器/服务器(Browser/Server,简称 B/S)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器、Web 服务器、数据库服务器。
雅
小雅
B/S 架构主要是利用不断成熟的 WWW 浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本,从某种程度上来说,B/S 结构是一种全新的软件架构。在 B/S 结构中,除了数据库服务器外,应用程序以网页形式存放于 Web 服务器上,用户运行某个应用程序时只需在客户端上的浏览器中键入相应的网址,调用 Web 服务器上的应用程序并对数据库进行操作,最后将结果通过浏览器显示给用户。可以说在 B/S 模式的计算机应用系统中,应用在一定程度上具有集中特征。
明
阿明
B/S 最大的卖点是不是「零客户端」?
雅
小雅
原文原词。基于 B/S 架构的软件,系统安装、修改和维护全在服务器端解决,用户在使用系统时仅需要一个浏览器就可运行全部的模块,真正达到了「零客户端」的功能,很容易在运行时自动升级。B/S 架构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
雅
小雅
还有一段价值描述:B/S 结构出现之前,管理信息系统的功能覆盖范围主要是组织内部;B/S 的「零客户端」方式,使组织的供应商和客户——这些供应商和客户有可能是潜在的,也就是说可能是事先未知的——的计算机方便地成为管理信息系统的客户端,进而扩大了组织计算机应用系统的功能覆盖范围,可以更加充分利用网络上的各种资源,同时应用程序维护的工作量也大大减少。另外,B/S 结构与 Internet 的结合也使新近提出的一些新的企业计算机应用如电子商务、客户关系管理的实现成为可能。
雅
小雅
但与 C/S 架构相比,B/S 架构也有许多不足之处,三条,练习题爱考:第一,B/S 架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;第二,采用 B/S 架构的应用系统,在数据查询等响应速度上,要远远地低于 C/S 架构;第三,B/S 架构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理,也就是 OLTP,OnLine Transaction Processing 应用。
明
阿明
B/S 三不足:缺动态页面支持、响应速度低于 C/S、数据以页面为单位不利于在线事务处理。和「零客户端」的优对照着记。
雅
小雅
本集必背:C/S 基于资源不对等且为实现共享而提出,20 世纪 90 年代成熟,服务器管数据管理、客户机管交互;二层 C/S 四大局限——难以扩展至广域网、软硬件组合集成能力有限、服务器负荷太重、数据安全性不好,「客户端零配置易于维护」不是缺点;三层是表示层、功能层、数据层,表示层检查只限形式和取值范围不含业务逻辑,功能层是应用本体编入业务处理逻辑,数据层是 DBMS、多用 SQL;
雅
小雅
功能层放客户机可维护性好但客户机负荷重,功能层数据层分放不同服务器则灵活性高、系统规模越大优点越显著;B/S 是三层 C/S 的一种实现方式,结构是浏览器/Web 服务器/数据库服务器,零客户端、全在服务器端维护,三不足是缺动态页面、响应慢、页面为单位不利于 OLTP。
明
阿明
C/S 家族收工。下一集是 MVC 和 MVP 吧?练习题第五题、第六题都指着它。
雅
小雅
对,MVC 的三个关注点、Reenskau 1979、Model-View-Controller 各自职责与交互链,MVP 与 MVC 的关键区别「View 不直接使用 Model」,还有 MVP 四优两缺——下集是第七题之前最后的模式辨析重镇。