# 概述
<font color="#FF0000">我是红色字体</font>
在这个信息急剧膨胀的社会,我们不得不说人类正进入一个崭新的时代,那就是信息时代。信息时代的一个主要而显著的特征就是计算机网络的应用。计算机网络从最初的集中式计算,经过了 Client/Server 阶段(有两层 C/S 和三层 C/S ),已发展到目前最流行的 Browser/Server 计算模式。其中颇具争论和影响力的是<font color="#FF0000">**C/S以及B/S架构**</font> ,C/S 是一种历史悠久且技术非常成熟的架构,B/S 是新生代架构,从 C/S 派生出来,有很多创新,在 web 信息时代虎虎生威。

# C/S架构
## C/S架构及其背景
C/S 架构是一种比较早的软件架构,主要应用于局域网内。在这之前经历了集中计算模式,随着计算机网络的进步与发展,尤其是可视化工具的应用,出现过两层 C/S 和三层 C/S 架构,不过一直很流行也比较经典的是我们所要研究的<font color="#FF0000">**两层 C/S 架构**</font>。

C/S 架构软件(即客户机/服务器模式)分为<font color="#FF0000">**客户机和服务器两层**</font>:第一层是在客户机系统上结合了表示与业务逻辑,第二层是通过网络结合了数据库服务器。简单的说就是第一层是用户表示层,第二层是数据库层。
客户端和服务器直接相连,这两个组成部分都承担着重要的角色,第一层的客户机并不是只有输入输出,运算等能力,它可以处理一些计算,数据存储等方面的业务逻辑事务;第二层的服务器主要承担事务逻辑的处理,本来事务很重,但是由于客户机可以分担一些逻辑事务,所以减轻了服务器的负担,使得网络流量增多。
<font color="#FF0000">**想要使用C/S架构的软件需要下载一个客户端,安装后就可以使用**</font>。
## C/S架构的优点
C/S 架构既然能在计算机历史的长河中长盛不衰就必然有其闪光之处。下面将从各个角度分析 C/S 架构的优点。
### 客户端和服务器直接相连
> 1. 点对点的模式使得更安全
> 2. 可以直接操作本地文本,减少获取文本的时间和精力
> 3. 由于直接相连,减少了通信流量,这对于客户来说可以节约一大笔费用
> 4. 直接相连,中间没有什么阻隔或岔路,所以响应速度快。当通信量少的时候没什么感觉,但是如果通信量庞大,就会出现拥堵的现象
### 客户端可以处理一些逻辑事务
> 1. 充分利用两者的硬件设施,避免资源的浪费
> 2. 为服务器分担一些逻辑事务,可以进行数据处理和数据存储。可以处理复杂的事务流程
> 3. 客户端有一套完整应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换
### 客户端操作界面
> 1. 可以提高客户的视觉体验,满足客户需求
> 2. 客户端操作界面可以随意排列,充分满足客户的需要,展现特点与个性
## C/S架构的缺点
### 客户端
> 1. 只能处理一些功能单一的多系统
> 2. C/S架构适用于局域网,对网速的要求比较高
> 3. 由于需要安装客户端,安装部署困难,所以不易扩展
> 3. 若客户端使用的系统不同,就要针对这些系统分别编写程序
> 4. 客户端界面缺乏通用性,且当业务更改时就需要更改界面,重新编写
> 5. 客户端需要专门的客户端程序,比较麻烦,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置
### 服务器
> 1. 用户数增多会出现通信拥堵,服务器响应速度慢等情况
> 2. 当服务器难当大任时,只能将其废弃,使用更强大的服务器
> 3. 当客户端用户增多时,服务器难以承担重负,是名副其实的“胖”客户端
> 4. 用户是通过 ODBC 连接到数据库的,且每个连接到数据库的用户都会保持一个 ODBC 连接,会一直占用中央服务器的资源,对服务器的要求很高
### 用户
> 1. 没有安装客户端的外部用户不能访问
> 2. 只有安装了客户端才能访问服务器,所以用户不能随时随地的访问
> 3. 用户是通过 ODBC 连接到数据库的,所以用户数受限,不易扩张
> 4. 由于针对小范围的客户,所以不能实现真正大范围的信息共享,信息传达和发布
### 开发成本
> 1. 需要聘用高素质的人员,对其培训,费用高
> 2. 初次开发就需要配备好客户端,服务器,需要有专业水准的技术人员,所以成本高
### 后期成本
> 1. 系统升级维护麻烦,需要更改大量程序,投入大量精力和金钱
> 2. 业务扩展或变更时,需要更改程序,客户端的界面也需要重新更改
> 3. 初次投入成本后不能一劳永逸,后期需要很多成本,比如服务器的更换,客户端的更变等
## C/S架构应用
C/S架构的软件是在是数不胜数,从办公的 OFFICE,WPS,WINRAR 到杀毒软件如金山,瑞金再到我们的娱乐软件,如播放器,QQ,微信等,无处不见 C/S 架构。
# B/S架构
## B/S架构及其背景
随着 Internet 和 WWW 的流行,以往的主机/终端和 C/S 都无法满足当前的全球网络开放、互连、信息随处可见和信息共享的新要求,于是就出现了 B/S 型模式,即浏览器/服务器结构。<font color="#FF0000">**它是 C/S 架构的一种改进,可以说属于三层 C/S 架构**</font> 。主要是利用了不断成熟的 WWW 浏览器技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

<font color="#FF0000">**第一层是浏览器**</font>,即客户端,只有简单的输入输出功能,处理极少部分的事务逻辑。由于客户不需要安装客户端,只要有浏览器就能上网浏览,所以它面向的是大范围的用户,所以界面设计得比较简单,通用。
<font color="#FF0000">**第二层是 WEB 服务器**</font>,扮演着信息传送的角色。当用户想要访问数据库时,就会首先向 WEB 服务器发送请求,WEB 服务器统一请求后会向数据库服务器发送访问数据库的请求,这个请求是以 SQL 语句实现的。
<font color="#FF0000">**第三层是数据库服务器**</font>,他扮演着重要的角色,因为它存放着大量的数据。当数据库服务器收到了 WEB 服务器的请求后,会对 SQL 语句进行处理,并将返回的结果发送给 WEB 服务器,接下来,WEB 服务器将收到的数据结果转换为 HTML 文本形式发送给浏览器,也就是我们打开浏览器看到的界面。
<font color="#FF0000">B/S架构和C/S架构不同</font>,浏览器不是直接和数据库服务器相连,所以是多对多的结构。因此在此结构下,很适合在广域网里实现巨大的互联网,甚至是全球网。有着很强大的信息共享性。
在 B/S 出现的早期,浏览器只能显示静态页面,得不到良好的交互,不能进行大量的逻辑处理,当时浏览器主要用来实现信息的发布,是一种单向的应用。后来出现了动态网页,这里的动态有三个方面,一是交互,二是动画,三是数据。这样,浏览器的交互性能得到极大提高。页面也越来越丰富多彩。浏览器也能处理部分逻辑事务,<font color="#FF0000">**所以浏览器成为了客户端,但由于处理的内容较少,所以叫“瘦”客户端**</font>。
## B/S架构的优点
B/S 架构是应 WEB 技术的飞速发展而从传统的 C/S 架构发展而来,并且一举成为当今主要的网络架构。目前主要的网站,尤其是商务网站都是基于 B/S 架构建立的。细数一下 B/S 架构的优点,它到底为什么受到大家的青睐。
### 浏览器
> 1. 能面对广大的用户实现信息传播共享
> 2. 浏览器只处理一些简单的逻辑事务,负担小
> 3. 页面的更新能实现同步,所有用户都能看到
> 3. 界面设计开发简单,对程序员的要求较低,不需要大量的培训
> 4. 业务扩展方便,只需要增加几个业务扩展的页面即可,不需要大量的编程
> 5. 界面不需要太多的编写,比较通用,更改界面也比较简单,所以几乎不需要维护
> 6. 由于 Web 的平台无关性,可以从一台服务器、几个用户的工作组级扩展成为拥有成上万用户的大型系统
### 服务器
> 1. 数据都集中存放在数据库服务器,所以不存在数据不一致现象
> 2. 能有效地保护数据平台和管理访问权限,服务器数据库也很安全
> 3. 在数据库服务器上不一定使用 WINDOWS 系统,选择更多,成本更少
> 3. 如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享
> 4. 在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效
> 5. 数据存放在数据库服务器,客户端并不存放任何业务数据或者数据库连接信息,所以数据比较安全
> 6. 随着服务器负载的增加,可以平滑地增加服务器的个数并建立集群服务器系统,然后在各个服务器之间做负载均衡
### 用户
> 1. B/S建立在广域网上,所需的网速不高
> 2. 外部的用户也可以对浏览器进行访问
> 3. 界面人性化,通用化,不需要多少培训就能掌握
> 3. 不需要安装客户端,只要能连上网,就能随时随地的浏览页面
> 4. 借助 Internet 强大的信息发布与信息传送能力可以有效地解决企业内部的大量不规则的信息交流
> 5. 所有的用户都是通过一个 JDBC 连接缓冲池连接到数据库的,用户并不保持对数据库的连接,用户数基本上是无限的
### 成本
> 1. 软件重用性强,节省了大量的成本
> 2. 不需要安装特殊的软件,客户端几乎零维护
> 3. 开发简单,升级便捷,人员不需要太多培训,节省了大量的资金
> 3. 客户端几乎不需要维护,只要盯紧服务器就可以了,所以成本较小
> 4. 一般只有初期一次性投入成本,有利于软件项目控制和避免IT黑洞
> 5. 建立在广域网之上的, 不必是专门的网络硬件环境,例如电话上网, 租用设备等,成本较小
## B/S架构的缺点
虽说 B/S 架构有很多优越性,但是也不可避免有些缺陷,不然也不会暴发究竟使用哪种架构的口水战。不过,在理论上,既然 B/S 是 C/S 的改进版,应该克服 了C/S 的很多缺陷,所以缺点应该不是很多。下面我们来看看实际上是什么情况。
### 客户端
> 1. 面通用化,不突出个性
> 2. 页面需要不断地动态刷新,尤其是用户增多,网速慢得情况,很费时
> 3. 由于不需要安装客户端,客户端易扩展,还有就是外部用户也可以访问,所以B/S面对大量的不可知用户
### 服务器
> 1. 用户增多时,服务器响应速度慢
> 2. 功能虽然多样化,但是不能专门化,不能实现复杂的功能
> 3. 服务器承担着重要的责任,数据负荷较重。一旦发生服务器“崩溃”等问题,后果不堪设想
## B/S架构应用
当时在讲解典型的 C/S 架构时,提到了了常用的 QQ 软件。现在新出来了一个 WEBQQ,从 WEBQQ 名称中的 WEB 就不难看出它属于 B/S 架构,是一种浏览器服务器结构。事实上也是如此,因为 WEBQQ 根本不需要安装客户端,只需要有浏览器就可以进行聊天交互了。
# C/S和B/S
## C/S和B/S关系概述
B/S 架构是从 C/S 架构改进而来,可以说是三层 C/S 架构,由此可见两者关系不一般。B/S 从 C/S 中脱离而出,后来随着 WEB 技术的飞速发展以及人们对网络的依赖程度加深,B/S 一举成为当今最流行的网络架构。两种架构都在各自岗位上虎虎生威,它们各有千秋,都是非常重要的网络架构。在响应速度,用户界面,数据安全等方面,C/S 强于 B/S ,但是在业务扩展和适用 www 条件下,B/S 明显胜过 C/S。可以这么说,B/S 的强项就是 C/S 的弱项,反之亦然。它们各有优缺点,相互无法取代。
## C/S和B/S的不同点

### 比较大的差别
#### 1、结构
C/S 是两层架构,由客户端和服务器组成,而 B/S 是三层架构,由浏览器,WEB 服务器和数据库服务器组成。
#### 2、逻辑事务处理
C/S 架构合理地让客户端和服务器承担一部分逻辑事务处理,使得服务器的负担减轻了,而且客户端也能进行一些数据处理和存储的功能。B/S 架构的浏览器就是它的客户端,可是这个客户端只能进行一些简单的输入输出和信息发布共享的功能,主要的逻辑事务处理还是要靠服务器,所以服务器的负担很重。
#### 3、工作原理
C/S 架构是客户端和服务器直接相连,实现点对点的通信,B/S 是浏览器通过 WEB 服务器向数据库服务器发送数据请求,实现多对多的通信。
#### 4、响应速度
C/S 架构的客户端和服务器直接相连,中间没有任何阻隔,所以相应速度快,尤其是在用户增多时更加明显。B/S 架构相应速度慢,主要的重任在数据库服务器身上,由于 B/S 架构的无限扩展性,当用户激增,访问量庞大时,服务器相应速度慢,服务器存在瘫痪的危险。
#### 5、成本
C/S 架构开发时,硬件需要一次性购买,费用较高,且需要训练有素的技术人员,培训费用高,而且软件后期也需要不断投入大量资金。B/S 架构只需要一次性投入几乎可以一劳永逸,有利于软件项目控制和IT黑洞。
#### 6、维护、升级以及扩展
C/S 架构一旦有业务的变更或要升级,客户端界面就要重新设计,需要投入大量的人力物力。软件维护也比较麻烦,需要专业人士进行维护。用户扩展也比较麻烦,需要安装客户端,对软硬件要求高。B/S 架构的维护和升级都非常容易,只要更改页面内容或者增减页面即可,客户端几乎是零维护,只需要维护好服务器。所以相对来说更简易,方便。由于 B/S 可以随时随地的访问,所以极易扩展。
#### 7、信息共享
C/S架构是建立在局域网之上的,面向的是可知的有限用户,信息共享只在小范围内。B/S 架构建立在广域网之上,用户随时随地都可以访问,外部用户也可以访问,尤其是 WEB 技术的不断发展,B/S 面对的是几乎无限的用户群体,所以信息共享性很强。
#### 8、客户端界面
C/S 架构可以针对不同的功能设计出不同的很有特色的用户界面,实现个性化。但是一旦业务改变就需要重新设计,很麻烦。B/S 架构的用户界面很通用,不能针对用户突出个性,但是业务改变时只需要改变界面内容或者增减页面,很轻松就能实现。
### 小的差别
#### 1、适用的网络
C/S架构是建立在局域网的基础之上的,局域网之间通过专用服务器提供连接提供服务。B/S架构是建立在广域网的基础之上,有更大的使用范围。
#### 2、访问
C/S架构下,用户需要安装客户端才能够访问服务器,而B/S架构下,用户可以随时随地访问,只要有网有浏览器,方便快捷
#### 3、数据库连接类型
C/S采用的是ODBC连接,所以只要用户连接了数据库就一直保持连接不会断开,所以限制了用户数,而B/S采用的是JDBC连接,用户并不保持对数据库的连接,所以用户数几乎是无限的。
#### 4、功能
C/S架构能够实现单一的复杂功能,如财政管理等,所以现在大多数比较大型的ERP系统仍是C/S架构,B/S架构的界面比较通用,所能处理的逻辑事务较少,所以功能较弱。
#### 5、安全性
C/S架构建立在局域网之上,面向比较固定的用户,对安全的要求较高。B/S架构建立在广域网上,面对不可知人群,安全性差。
#### 6、信息流向不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像个交易中心。
#### 7、对技术人员的要求
C/S的功能比较专业化,对设计和开发人员的要求较高,需要专业的培训。B/S的界面比较人性化,通用化,所以不需要多高的技能。
浅谈 C/S 和 B/S 架构