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

深入理解B/S与C/S架构

阅读目录

  • C/S架构简要介绍

  • 什么是B/S架构

  • B/S架构的几种形式

  • 发展前景

 

一、C/S架构简要介绍

在了解什么是B/S架构之前,我们有必要了解一下什么是C/S架构:

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

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

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

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

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

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


 

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

C/S架构的优点:

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

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

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

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架构也有着不可替代的作用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机信息管理相关课题论文,计算机信息管理课题论文[].doc

计算机信息管理课题论文[]目 录一、 引言………………………………………………………………… 2二、方案目标………………………………………………………………2三、安全需求………………………………………………………………3四、风险分析……………………………………………

硬件设计--DC/DC电源芯片详解

本文参考:http://www.elecfans.com/article/83/116/2018/20180207631874.html https://blog.csdn.net/wangdapao12138/article/details/79763343 第一次写博客,不喜勿喷,谢谢!!! DC/DC电源指直流转换为直流…

计算机操作系统(10):集群和分布式

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。 例如: 如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时…

Unity预计算全局实时GI(gi params)

Unity提供许多进阶的光照贴图控制方法,这些设定被放在一个光照参数集(LightmapParameters)的资源里,好让设定能在不同的项目场景或是透过版本控制和团队一起共享。 要建立一个Lightmap Parameters资源,先找到Project窗口从Create下拉选单建立…

计算机工程与应用单像素成像,2011计算机工程与应用基于压缩感知理论的单像素成像系统研究_白凌云.pdf...

2011计算机工程与应用基于压缩感知理论的单像素成像系统研究_白凌云.pdf116 2011 ,47 (33) Computer Engineering and Applications 计算机工程与应用基于压缩感知理论的单像素成像系统研究1 1 2白凌云,梁志毅 ,徐志军1 1 2BAI Lingyun &…

计算机操作系统(11):负载均衡

负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。 为什么要引入负载均衡…

[bzoj3994] [SDOI2015]约数个数和

Description 设d(x)为x的约数个数,给定N、M,求 \(\sum_{i1}^N\sum_{j1}^Md(ij)\) Input 输入文件包含多组测试数据。 第一行,一个整数T,表示测试数据的组数。 接下来的T行,每行两个整数N、M。 Output T行,每…

计算机配置对电子竞技的影响,配置高并不是唯一优点 看看电竞硬件还要啥?...

01宁美国度星河 战列舰XS现在有很多游戏品牌依靠品牌的力量为自己背书,以至于很多游戏玩家很难找的合适自己的高性能电脑,电竞体验也就无从谈起,但是今年的新品里还是有一些意外之喜,在整机性能上表现不俗。比如电脑发烧友们向来有…

玩转oracle 11g(10):初步了解Rman备份

备份与恢复的定义及分类 备份的定义及分类: 备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本,从不同的角度…

计算机硬盘与格式化,什么是磁盘格式化 格式化与快速格式化区别 - 驱动管家...

电脑磁盘格式化,对于电脑爱好者肯定很好理解,但对于一些新手,可能不太理解。格式化是什么?简单的说,格式化就是把一张空白的盘划分成一个个小的区域,并编号,供计算机储存,读取数据。接下来对磁…

玩转oracle 11g(11):开启归档模式

如果归档模式已经开启并设置归档路径,请跳过 1. 开始-》运行-》cmd 2. 输入:sqlplus sys/密码 as sysdba 3. Sql> archive log list ; 如下图所示: Rman 在线备份 如果“数据库日志模式”为“非存档模式” 按照如下开启归档…

LeetCode:204. 计数质数

1、题目描述 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。2、题解 2.1、解法一 缺点:太慢 class Solution(object):def countPrimes(self, n):""":type n: int:rtype: int…

玩转oracle 11g(12):卸载

从 Oracle 11gR2 开始,Oracle 推荐使用 deinstall 来完全卸载 Oracle 数据库。 使用 Oracle Universal Install(OUI) 的图形方式来卸载 Oracle 数据库软件,会看到下图警告: "请运行命令 C:\app\administrator\product\11.2.0\dbhome_1\deinstall\de…

jenkins 部署问题

1. 怀疑 jenkins 没有拉到最新的包解决:清除 jenkins 工作空间 2. jenkins 自动构建时, start.sh 脚本已经执行成功,但是应用总是启动后自动退出了进程没有起来,从 pid 文件来看,start.sh 确实已经启动过,从…

计算机操作系统(12):计算机工作原理

计算机工作原理 编辑 计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然…

戴尔计算机主板电路图,戴尔Dell-D630主板电路图.pdf

A B C D ECOMPAL CONFIDENTIALMODEL NAME : IBQ001 1PCB NO : LA-3302P ( DAA00000K0L)BOM P/N :012 M08 (DIS) Briscoe 2uFCPGA Mobile MeromIntel Crestline ICH8M2007-03-07REV : 0.4 (X03)3 3 : Nopop Component1 : Populate for G72MV

[SHOI2011]双倍回文 manacher

题面: 洛谷:[SHOI2011]双倍回文‘ 题解: 首先有一个性质,本质不同的回文串最多O(n)个。 所以我们可以对于每个i,求出以这个i为结尾的最长回文串,然后以此作为长串,并判断把这个长串从中间劈开后…

计算机操作员可以免考自考吗,计算机《职业资格证书》可以免考高

随着全国计算机等级考试(NCRE)的持续发展,NCRE的合格证书已被各行业广泛认可,部分省级自考办实行获得NCRE合格证书可免考高等教育自学考试相关课程的办法以拓展考试功效。为规范管理和保证课程免试的科学性,根据重庆市考办(渝考办发[200630]号…

服务器术语大全

1 服务器的1U 2U 含义 U是unit的缩写,表示服务器外部尺寸的单位,U规定服务器宽为(48.26cm19英寸),高厚度为(4.445cm)U为基本单位,服务器大小必须为U 的倍数. 服务器常见专业术语大全…

python中出现ascii编码问题的解决办法

一劳永逸,一次性全盘解决的办法 环境变量中去设置 以centos 7为例: vim /etc/profile export PYTHONIOENCODINGutf-8 source /etc/profile 其它方法有: 代码头加: #coding:utf-8 等各种格式的声明 python2: import sys reload…