5、C/S架构的缺点:
- 适用面窄,通常用于局域网中。
- 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
- 维护成本高,发生一次升级,则所有客户端的程序都需要改变。
二、B/S(Browser Server)三层架构
1、B/S架构背景:
B/S架构(即浏览器/服务器模式)是C/S架构的一种改进,可以说属于三层C/S架构。B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。节约了开发成本,维护和升级方式更简单,客户端是浏览器,基本不需要维护,只需要维护升级服务器端就可以。在手机或电脑上用浏览器上百度搜索、看新闻等就是在使用“B/S”结构进行数据交互。
2、三层架构:
- 第一层:浏览器——表现层,主要完成用户和后台的交互及最终查询结果的输出功能;
- 第二层:WEB服务器——逻辑层,主要是利用服务器完成客户端的应用逻辑功能;
- 第三层:数据库服务器——数据层,主要是接受客户端请求后独立进行各种运算。
3、B/S架构的三种形式:
第一种:客户端—服务器—数据库(常用模式)
(1)客户端向服务器发起Http请求;
(2)服务器中的web服务层能够处理Http请求;
(3)服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法;
(4)如果有必要,服务器会和数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端。
第二种:客户端—Web服务器—应用服务器—数据库
类似于第一种方法,只是将web服务和应用服务解耦;
(1)客户端向web服务器发起Http请求;
(2)web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口;
(3)应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器;
(4)web服务器将模版+数据组合渲染成html返回给客户端。
第三种:客户端-负载均衡器(Nginx)-中间服务器(Node)-应用服务器-数据库
这种模式一般用在有大量的用户,高并发的应用中;
(1)整正暴露在外的不是真正web服务器的地址,而是负载均衡器器的地址;
(2)客户向负载均衡器发起Http请求;
(3)负载均衡器能够将客户端的Http请求均匀的转发给Node服务器集群;
(4)Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口;
(5)应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node;
(6)Node层将模版+数据组合渲染成html返回反向代理服务器;
(7)反向代理服务器将对应html返回给客户端。
Nginx的优点有:
1、它能够承受、高并发的大量的请求,然后将这些请求均匀的转发给内部的服务器,分摊压力.
2、反向代理能够解决跨域引起的问题,因为Nginx,Node,应用服务器,数据库都处于内网段中。
3、Nginx非常擅长处理静态资源(img,css,js,video),所以也经常作为静态资源服务器,也就是我们平时所说的CDN。
比如:前一个用户访问index.html, 经过Nginx-Node-应用服务器-数据库链路之后,Nginx会把index.html返回给用户,并且会把index.html缓存在Nginx上,
下一个用户再想请求index.html的时候,请求Nginx服务器,Nginx发现有index.html的缓存,于是就不用去请求Node层了,会直接将缓存的页面(如果没过期的话)返回给用户。
4、B/S常用架构流程:
客户机浏览器——经过Http请求——Web服务器——经过查询——数据库服务器——响应查询后返回结果——Web服务器——再经过Http响应——返回给客户机浏览器。
5、B/S架构的优点:
- 客户端无需安装,有Web浏览器即可。
- BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
- BS架构无需升级多个客户端,升级服务器即可,可以随时更新版本。
6、B/S架构的缺点:
- 在跨浏览器上,BS架构不尽如人意。
- 表现要达到CS程序的程度需要花费不少精力。
- 在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。
- 客户端服务器端的交互是请求——响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax流行后此问题得到了一定程度的缓解)
三、C/S与B/S的结构区别
1)比较大的差别
1、数据交互方式
- C/S是两层架构,由客户端和数据库服务器组成,客户端跟服务端进行数据交互,数据传输采用Socket协议。
- B/S是三层架构,由浏览器,WEB服务器和数据库服务器组成,浏览器跟服务器进行数据交互,数据传输采用HTTP协议。
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架构的用户界面很通用,不能针对用户突出个性,但是业务改变时只需要改变界面内容或者增减页面,很轻松就能实现。
2)小的差别
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、信息流向不同