两种程序架构

软件开发的目的是为了使用,为了使用者能够容易的使用软件,通常需要为用户开发一个可视化的图形界面。

而,进行项目开发,首先需要确立的是程序架构的类型,在明确程序架构的基础上才能开发后续开发工作。


C/S 架构

在程序架构中,C/S 架构是一种客户端/服务端的工作模式,有两个部分组成。

C 表示 Client,即客户端;S 表示 Server,即服务器。

C/S 架构的程序最显著特点是,使用前首先要在用户本地安装客户端,然后调用服务器得到相应的服务,即由服务器来提供服务,客户端来使用服务。使用基于 C/S 架构开发的应用程序,在使用时都必须安装客户端,当应用程序有变化时,需要重装或更新客户端,维护成本较高(当然,优点也是有的),而 B/S 架构则解决了这个问题。


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

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

  • 传统的 C/S 结构将应用一分为二,服务器负责数据管理,客户端完成与用户的交互。服务器为多个客户应用程序管理数据,而客户程序发送、请求和分析从服务器接收的数据,这是一种"胖客户端"、"瘦服务器"的体系结构。
  • 三层 C/S 结构是将应用功能分成表示层、功能层和数据层。与二层 C/S 结构相比,三层 C/S 结构中增加了一个应用服务器,可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户端上,这种结构被称为"瘦客户端"。
    • 表示层:应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘输入的数据,显示应用输出的数据,为使用户能直观地进行操作,一般要使图形用户界面操作简单、易学易用。
    • 功能层:相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
    • 数据层:即数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。现在的主流是关系型数据库管理系统,因此,一般从功能层传送到数据层的要求大都使用 SQL 语言。

B/S 架构

在 B/S 架构中,程序采用了浏览器/服务器的工作模式,又称为请求/响应模式。

B 表示 Browser,即浏览器;S 仍然是 Server,即服务器。

在 B/S 架构中,原来的客户端被浏览器所代替,用户无须在本地进行繁琐的客户端安装,只需要连通网络 ,打开浏览器窗口即可使用服务端提供的各种服务。

使用 B/S 架构,在很大程度上降低了对用户本地设备环境的要求,也极大的降低了程序维护的成本。


B/S 风格是 C/S 三层体系结构的一种实现方式,其具体结构为:浏览器 / web服务器 / 数据库服务器

B/S 结构主要是利用不断成熟的 www 浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。

某种程度上来说,B/S 结构是一种全新的软件体系结构。

在 B/S 结构中,除数据库服务器外,应用程序以网页形式存放于 web 服务器上,用户运行某个应用程序时只需在客户端上的浏览器中输入相应的网址,调用 web 服务器上的应用程序并对数据库进行操作完成相应的数据处理工作,最后将结果通过浏览器显示给用户。可以说,B/S 模式的计算机应用系统中,应用(程序)在一定程度上具有集中特征。

基于 B/S 体系结构的软件,系统安装、修改和维护全在服务器端解决。

用户使用系统时,只需要一个浏览器就可运行全部的模块,真正达到了"零客户端"的功能,且容易在运行时自动升级。


So,B/S 架构是 C/S 架构的替代品吗?

Of Couse Not,B/S 架构是随着 Internet 技术的兴起,对 C/S 架构的一种改进,而非 C/S 架构的替代品。


  • B/S 架构相对 C/S 架构,其优势在于:维护和升级简单。

C/S 架构的每一个客户端都必须安装和配置客户端软件。系统发生变化,则需要对每个客户端都进行升级维护。在B/S 架构中,软件应用的业务逻辑完全在服务端实现,所有的客户端只是浏览器,不需要做任何的维护。因此系统维护人员只需要服务器的软件升级而已。客户端只要重新访问页面,使用的就已经是最新版本的软件了。

  • 同时,B/S 架构相对于 C/S 架构,也存在一定的劣势。

B/S 的界面没有 C/S 友好,难以做出像 Office 这样界面丰富的软件,在速度和安全性上要花费巨大的设计成本,且由于 B/S 架构的交互是请求/响应模式,一旦数据信息发生变化,必须通过刷新页面才能看到更新的数据信息。

  • 就用户群体而言,二者也存在着一定的差别。

C/S 架构一般面向相对固定的用户群体,一般高度机密的信息系统采用 C/S 架构,适应于企业内部的信息管理系统、财务管理系统等。B/S 适应于公开信息发布,对信息保密性要求较低,如企业网站、物流信息查询系统等。