C/S与B/S架构

目录

C/S架构

什么是C/S架构

优缺点

B/S架构

什么是B/S架构

优缺点

对比项C/S 架构B/S 架构
安装相对复杂,要安装单独客户端软件易于安装,与平台无关,只需要浏览器软件
部署和维护部署维护较为繁琐,升级难易于部署和维护,容易升级
在线工作可以离线工作,前提是本地有缓存数据,涉及数据库同步需在线工作,工作效率受网络情况影响较大
客户端资源利用充分利用客户端计算机资源只能通过浏览器页面交互,没有充分利用客户端计算机资源
网络资源占用网络传输量小,只需在客户端和服务器间传输数据网络传输量大
安全性较高,方便加密和解密安全性较低

C/S架构

什么是C/S架构

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

特点

  • 如果用户想使用,需要下载一个客户端,安装后就可以使用,例如QQ,微信等
  • Windows .exe    Mac .dmg
  • Android .apk      IOS .ipa 

C/S架构可以分为客户机和服务器两层,第一层客户机作为用户表示层;第二层服务器作为数据库层,客户端通过数据库连接访问服务器端的数据。

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

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

这种架构中客户端不仅仅是做一些简单操作,也会处理一些运算,实现绝大多数的业务逻辑和界面展示,替代了本该由服务器处理的事情,因此也被称为胖客户端

优缺点

优点:

1.C/S架构的界面和操作可以很丰富,例如QQ对比在线聊天

2.由于只有两层的传输,安全性能很容易保证

3.由于只有一层交互,因此响应速度较快

缺点

1.适用面窄,通常用于局域网中。020
2.用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
3.维护成本高,发生一次升级,则所有客户端的程序都需要改变

 

测试时需考虑向前向后兼容

向前(上)兼容:旧版本系统需能接受新版本的数据,旧兼容新

向后(下)兼容:新版本系统需能接受旧版本的数据,新兼容旧

B/S架构

什么是B/S架构

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

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

特点

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

B/S架构可以分为三层,第一层客户机作为用户表示层;第二层应用服务器作为业务逻辑层,第三层数据库服务器作为数据访问层

第一层界面表示层:主要完成用户和后台的交互及最终查询结果的输出功能  --前端页面

第二层业务逻辑层:主要是利用服务器完成客户端的应用逻辑功能  --后端api接口

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

这种架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,大部分做游戏数据渲染,请求等工作,因此也被成为瘦客户端

优缺点

优点

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

 

测试时遇到版本更新只需要刷新页面即可

缺点

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

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

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

相关文章

python之网络编程

网络编程 互联网时代,现在基本上所有的程序都是网络程序,很少有单机版 的程序了。 网络编程就是如何在程序中实现两台计算机的通信。 Python语言中,提供了大量的内置模块和第三方模块用于支持各种 网络访问,而且Python语言在网络…

@Autowired 和 @Resource 注解的区别

前言 Autowired 和 Resource 是 Spring 中用于依赖注入的注解,但两者在实现机制和使用方式上有显著差异。 主要区别 1.来源不同 Autowired:由 Spring 框架提供(org.springframework.beans.factory.annotation),与 S…

2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序

2024年数维杯数学建模 B题 生物质和煤共热解问题的研究 原题再现: 随着全球能源需求的不断增长和对可再生能源的追求,生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源,源自植物和动物的有机物质,而煤…

计算机网络——物理层设备

目录 ​编辑 中继器 集线器(Hub) 集线器,中继器的一些特性 集线器和中继器不能“无限串联” 集线器连接的网络,物理上是星型拓扑,逻辑上是总线型拓扑 集线器连接的各网段会“共享带宽” 中继器 如果我们想要网络…

NVIDIA NeMo 全面教程:从入门到精通

NVIDIA NeMo 全面教程:从入门到精通 文章目录 NVIDIA NeMo 全面教程:从入门到精通目录框架介绍NeMo的核心特点NeMo的架构NeMo与其他框架的比较NeMo的模型集合NeMo的工作流程NeMo 2.0的新特性 安装指南系统要求使用Docker容器安装步骤1:安装Do…

Chrome 134 版本开发者工具(DevTools)更新内容

Chrome 134 版本开发者工具(DevTools)更新内容 一、隐私与安全面板 旧的 Security 面板已演变为隐私与安全面板,并新增了一个专注于隐私的部分。在该部分中,可以: 在 DevTools 打开时,临时限制第三方 Co…

顺序表和链表

目录 线性表顺序表概念与结构分类静态顺序表动态顺序表 动态顺序表的实现SeqList.hSeqLIst.c 和 test.c初始化SLInit增容SLCheckCapacity尾插SLPushBack打印SLPrint头插SLPushFront尾删SLPopBack头删SLPopFront查找SLFind任意插SLInsert任意删SLErase销毁顺序表SLDestroy 顺序表…

性能测试、负载测试、压力测试的全面解析

在软件测试领域,性能测试、负载测试和压力测试是评估系统稳定性和可靠性的关键手段。​它们各自关注不同的测试目标和应用场景,理解这些差异对于制定有效的测试策略至关重要。 本文对性能测试、负载测试和压力测试进行深入分析,探讨其定义、…

FPGA_YOLO(二)

上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…

Windows系统安装Node.js和npm教程【成功】

0.引言——Node.js和npm介绍 项目描述Node.js基于Chrome V8引擎的JavaScript运行环境,使JavaScript可用于服务器端开发。采用单线程、非阻塞I/O及事件驱动架构,适用于构建Web服务器、实时应用和命令行工具等npmNode.js的包管理器与大型软件注册表。拥有…

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH(Cloudera Distribution Hadoop)是一个企业级的大数据平台,由 Cloudera 公司提供,它包含了 Apache Hadoop 生态系统中的多种开源组件,并对其进行了优化和集成,以支持大规模数据存储…

Node.js的安装和环境配置

漂亮女同事想了解Node.js的安装和环境配置。首先,我说需要回忆一下自己安装Node.js的经历,确保步骤是正确的。可能用户是刚接触开发的新手,所以需要详细但清晰的指导。 首先,应该介绍Node.js是什么,不过用户可能已经知…

在普通用户下修改root用户密码

1 从普通用户切换到root用户 sudo -s 再输入密码。 2 输入passwd ,会提醒你输入当前用户密码,验证后会提醒你输入root用户密码。 3 切换到root用户,使用修改过的密码登陆。 4 成功进入root用户。

【#2】介绍第三方库

一、JsonCpp 库 🔥 JSONCPP 是一个开源的 C 库,用于解析和生成 JSON(JavaScript Object Notation)数据。它提供了简单易用的接口,支持 JSON 的序列化和反序列化操作,适用于处理配置文件、网络通信数据等场…

Qt开发:QInputDialog的使用

文章目录 一、QInputDialog的介绍二、 QInputDialog的基本用法三、使用 QInputDialog的实例四、QInputDialog的信号与槽 一、QInputDialog的介绍 QInputDialog 是 Qt 提供的一个对话框类,用于获取用户输入的文本、整数或浮点数。它提供了简单易用的静态方法和可定制…

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测 目录 SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【SCI一区级】Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测(程…

Vulnhub-Thales通关攻略

第0步:网卡配置 靶机端:将下载好的靶机环境,导入 VritualBox,设置为 Host-Only 模式 Kali端:将 VMware 中桥接模式网卡设置为 VritualBox 的 Host-only 第一步:确定靶机IP #靶机IP 192.168.56.101#KaliIP 1…

JVM 02

今天是2025/03/23 19:07 day 10 总路线请移步主页Java大纲相关文章 今天进行JVM 3,4 个模块的归纳 首先是JVM的相关内容概括的思维导图 3. 类加载机制 加载过程 加载(Loading) 通过类全限定名获取类的二进制字节流(如从JAR包、网络、动态…

Python学习笔记(7)关于列表创建,增加,删除

列表 **Python中一切都是对象 存放多个值的连续内存空间 大小可变 增加元素 a a[50]#➕运算符操作,产生了新对象 list.append(x) #将元素x增加至list尾部 list.extend(alist) #将列表alist增加至list尾部 list.insert(index.x) #将元素x插入list指定index位置 …

【图片识别Excel表格】批量将图片上的区域文字识别后保存为表格,基于WPF和阿里云的项目实战总结

一、项目背景 在信息处理和文档管理中,经常会遇到需要从大量图片中提取文字并进行整理的场景。例如,财务部门需要从大量报销票据中提取金额、日期等信息;法务部门需要从合同文档中提取关键条款;教育行业需要从试卷中提取学生的答题内容等。传统的手工处理方式不仅耗时长、…