阅读目录:

  • 什么是C/S架构

  • 什么是B/S架构

  • B/S架构的几种形式

  • 发展前景

一、什么是C/S架构

C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。

它可以分为客户机和服务器两层

第一层:  在客户机系统上结合了界面显示与业务逻辑;

第二层:  通过网络结合了数据库服务器。

简单的说就是第一层是用户表示层,第二层是数据库层

  这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情,如图所示:

C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端,安装后就可以使用。比如QQ,OFFICE软件等。

1、C/S架构的优点:

1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)

2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。

3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)

2、C/S架构的缺点:

可以将QQ作为类比:

1 适用面窄,通常用于局域网中。

2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。

3 维护成本高,发生一次升级,则所有客户端的程序都需要改变。

二、什么是B/S架构

B/S架构的全称为Browser/Server,即浏览器/服务器结构。

Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。

其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

B/S架构的分层:

与C/S架构只有两层不同的是,B/S架构有三层,分别为:

第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

第三层数据层:主要是接受客户端请求后独立进行各种运算。

如图所示:

B/S架构的优点:

1、客户端无需安装,有Web浏览器即可。 
2、BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 
3、BS架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载啊什么的。

B/S架构的缺点:

1、在跨浏览器上,BS架构不尽如人意。 
2、表现要达到CS程序的程度需要花费不少精力。 
3、在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。 
4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

三、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层了,会直接将缓存的页面(如果没过期的话)返回给用户。

四、发展前景

1、 C/S和B/S各有优势,C/S在图形的表现能力上以及运行的速度上肯定是强于B/S模式的,不过缺点就是他需要运行专门的客户端,而且更重要的是它不能跨平台,用c++在windows下写的程序肯定是不能在linux下跑的。

2、B/S模式就,它不需要专门的客户端,只要浏览器,而浏览器是随操作系统就有的,方便就是他的优势了。 
而且,B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步, 
B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。尤其是HTML5的普及,在图形的渲染方面以及音频、文件的处理上已经非常强大了。 
不过,C/S架构也有着不可替代的作用。

深入理解B/S与C/S架构相关推荐

  1. 理解并取证:DLS网络架构和PPPOE数据帧

    理解并取证:DLS网络架构和PPPOE数据帧 对应的教学录像在: http://edu.51cto.com/lecturer/user_id-7648423.html9.9发布,待管理员24小时审核后 ...

  2. 计算机操作系统(9):深入理解B/S与C/S架构

    深入理解B/S与C/S架构 阅读目录 C/S架构简要介绍 什么是B/S架构 B/S架构的几种形式 发展前景 一.C/S架构简要介绍 在了解什么是B/S架构之前,我们有必要了解一下什么是C/S架构: C ...

  3. 计算机处理器缓存参数,小知识:通俗易懂理解处理器中的主频、架构、核心、线程、缓存...

    小知识:通俗易懂理解处理器中的主频.架构.核心.线程.缓存 处理器,作为计算机的核心硬件,决定了一台电脑的运算性能好坏.我们在选择处理器的时候,通常都会在网上查询处理器型号参数,主要是看主频.架构.核 ...

  4. 【我对软件平台架构的理解】第一部分:软件平台架构有什么用

    一.先说说软件工程 在提"软件平台架构"这个概念之前,先说一下我对软件工程的理解,借鉴一下网上对软件工程的定义:[注1] (1).将系统化的.规范的.可量化的方法应用于软件的开发. ...

  5. 彻底理解微商城多租户Saas架构设计

    彻底理解微商城多租户Saas架构设计 原文链接:https://blog.csdn.net/haponchang/article/details/104246317,感谢作者提供这么好的总结! 1.具 ...

  6. 理解云原生--开发模型、架构原则、主要技术

    1. 为什么需要云原生 云计算从工业化应用到如今,已走过十五个年头,然而大量应用使用云的方式仍停滞在传统 IDC 时代: 虚拟机代替了原来的物理机 使用文件保存应用数据 没有经过架构改造(如微服务改造 ...

  7. 分布式列数据库--理解hbase列存储机制、架构、表结构设计、命令操作

    1. HBase简介 HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库. HBase和HDFS HDFS适用于存储大容量文件的分布式文件系统,不 ...

  8. FPGA||ZYNQ概念理解之: Cortex-A9 处理器及架构

    源起 Zynq系列的亮点在于FPGA里包含了完整的ARM处理子系统(PS),每一颗Zynq系列的处理器都包含了Cortex-A9处理器,整个处理器的搭建都以处理器为重心,而且处理器子系统中继承了内存控 ...

  9. mysql wal_我所理解的MySQL之一:基础架构

    今天MySQL教程栏目为大家介绍我所理解的基础架构. 作为一个正经的 CRUD 工程师,与数据库的交互是日常工作中比重较大的内容,比如日常迭代的增删改查.处理历史数据.优化 SQL 性能等等.随着项目 ...

  10. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

    MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例, ...

最新文章

  1. Ditto剪贴板增强工具 ,方便复制粘贴多条历史记录
  2. 使用 LxRunOffine 迁移 WSL Ubuntu安装目录
  3. php 腾讯云 文字识别_腾讯云安全为何成为企业首选?4大原因成为制胜王道
  4. 看技术笔记,提高嵌入式基础
  5. Java 8 之lambda表达式语法
  6. java中的文本框_java里的JTextField文本框怎么设置大小?
  7. 使用Guava retryer优雅的实现接口重试机制
  8. 超全面的权限系统设计方案!
  9. 2021-11-14
  10. Cadence学习之路:什么是PCB工艺的正片与负片
  11. 什么是MergedBeanDefinition?
  12. (附源码)计算机毕业设计SSM基于远程协作的汽车故障诊断系统
  13. 魔域充值卡表cq_card里chk_sum参数的算法
  14. 多元线性方程的几种解法
  15. 【SPIE独立出版|往届已检索、湘潭大学主办】第二届绿色通信、网络与物联网国际学术会议 (CNIoT 2022)
  16. 好消息:微软行星云计算更新发布了Planet Science Update
  17. 微信小程序拒绝定位之后 如何再次开启以及判断是否打开了系统定位功能
  18. [转贴精华]《新概念》英语学习方法完全手册-学新概念英语必读
  19. 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
  20. 适合中国程序员的保命教材—— 程序员羊皮卷 书评 7

热门文章

  1. android银行卡输入密码,android 仿微信添加银行卡时输入支付密码
  2. android-手势密码
  3. 电脑自动打开代理服务器无法上网解决方案
  4. 如何获取Intel网卡驱动的源代码
  5. Graphics2D画图案例
  6. 【PM】1.2 认识产品经理 产品经理能力模型
  7. Java学习成长路径
  8. 新手上路——树莓派3B+换源
  9. 解决WPS公式上浮问题
  10. 安卓虚拟键盘_安卓这些年变化多惊人?那些老玩家才懂的回忆