日常2018/4/9---b/s和c/s架构分别是什么?区别?
b/s和c/s架构分别是什么?区别?
b/s是指前后端分别是 Browser/Server的模式。(3层c/s模式)
c/s是指前后端分别是 Client/Server的模式。(2层c/s模式)
c/s架构介绍。
b/s架构介绍。
c/s架构和b/s架构区别。
- 全文转载于此博客,如有侵权;联系我删除
c/s架构是什么,有何特点?
前言:一般系统都由三部分组成:‘表示层,功能层,数据层’。其中表示层是和用户进行交互的;而功能层是对事物进行处理数据运算;数据层进行数据查,改,存储等操作。
这里说的c/s架构一般是指client-server的两层c/s架构;客户端在整个架构中负责表示层和功能层任务,除了可以负责和用户交互事物的运算和数据存储,后端服务器负责数据层任务。极大程度上共享了用户终端的资源;实现了胖客户端;瘦服务端的效果。
c/s架构特点:
- 开发者成本高:程序的适配性差;需要针对不同环境开发不同系统版本;开发成本高;维护扩展困难。实现client和server数据同步统一需要做针对性处理。
- 性能优良:共享终端的资源;因此响应速度较快,性能优势明显,但是扩展性较差,不适合大型分布式架构。
- 用户使用成本高:使用成本高;使用需要安装,升级;但多进程功能更丰富,界面效果号。
- c/s服务端更安全:服务端压力较小有客户端分担事物;数据存储管理透明,公开度低。用户参入度小,有专人管理。和服务端直连,点对点模式更安全,直连响应速度快,大数据通信时不易堵塞。
- 数据安全:数据分布式存储;单个集团数据一旦出问题会影响总的数据同步,安全性差,且单集团数据一旦同步异常会导致整个数据一致性出现问题。程序响应慢,数据无法实时处理,一旦需要升级或优化,需要对所有节点都进行重新部署。
缺点:
- 客户端适配性差,针对不同系统需要开发不同版本,成本高,维护扩展困难。
- 对网络要求高,用户需要安装,功能变更又需要升级用户成本高。
- c/s架构适用于局域网,网络成本高。
- 界面通用性差,一旦需求变更,只能重新改写,复用性低。
服务器:
- 对服务器要求高,用户增多,服务器难以担当时,只能更换更高性能服务器,扩展性差。
- 胖客户端,当客户端用户增多时;用户数增多会出现通信拥堵,服务器响应速度慢等情况。
- 用户是通过ODBC连接到数据库的,且每个连接到数据库的用户都会保持一个ODBC连接,会一直占用中央服务器的资源,对服务器的要求很高。
用户:
- 用户需要安装才能使用;不能随时随地使用,网络要求较高。
- 由于是odbc连接库,导致用户数量收到限制,难以扩展。
- 适用于局域网,难以扩展到全球用户
开发维护成本高
b/s架构是什么,有何特点?
c/s架构的改进;用通用的浏览器代替了客户端;可以说是3层c/s架构。下图常规b/s架构结构图:
第一层是浏览器,即客户端,只有简单的输入输出功能,处理极少部分的事务逻辑。由于客户不需要安装客户端,只要有浏览器就能上网浏览,所以它面向的是大范围的用户,所以界面设计得比较简单,通用。
第二层是WEB服务器,扮演着信息传送的角色。当用户想要访问数据库时,就会首先向WEB服务器发送请求,WEB服务器统一请求后会向数据库服务器发送访问数据库的请求,这个请求是以SQL语句实现的。
第三层是数据库服务器,他扮演着重要的角色,因为它存放着大量的数据。当数据库服务器收到了WEB服务器的请求后,会对SQL语句进行处理,并将返回的结果发送给WEB服务器,接下来,WEB服务器将收到的数据结果转换为HTML文本形式发送给浏览器,也就是我们打开浏览器看到的界面。
优点:
架构
- 非局域网;基于广域网;能实现大量用户的信息传播。
- 页面/需求变更成本低;一经变更;所有用户都能看到;无需考虑系统版本;适配性强。
- 和web平台无关;服务器方便扩展。扩展性强。
开发
- 技术难度低,开发成本低。代码或模块通用性强。
- 页面或模块通用性强;易复用。
服务器
- 数据集中存放在中央数据库;数据同步性好;
- 数据集中存放有利于数据安全和权限分配;
- 服务器系统选择空间大;结构稳定。
- 服务器易于扩展;容易实现负载均衡。
用户
- 基于广域网;对用户网速要求低。
- 无需安装;外部用户也可以使用;用户使用成本低。
- 基于jbcd连接
- 所有的用户都不直连数据库;而是通过一个JDBC连接缓冲池连接到数据库的,用户数基本上是无限的。
成本
1、开发成本低:代码复用性强,开发技术要求不高,基本不需要维护,需求和程序变更方便;
2、用户使用成本极低。
3、硬件网络要求低。
缺点:
1、无法实现复杂的页面效果;比如英雄联盟页面。
2、用户过多时;服务器压力很大;响应会变慢;性能比不上c/s架构。
3、数据过于集中;一旦服务器崩溃就彻底game over。
4、性能有瓶颈,对性能要求高的应用,比如大型网游一般不能考虑b/s架构。
c/s架构和b/s架构区别
在响应速度,用户界面,数据安全等方面,C/S强于B/S,但是在业务扩展和适用www条件下,B/S明显胜过C/S。可以这么说,B/S的强项就是C/S的弱项,反之亦然。它们各有优缺点,相互无法取代。
区别主要在以下方面:
- 架构
- 逻辑事物处理
- 工作原理:C/S架构是客户端和服务器直接相连,实现点对点的通信,B/S是浏览器通过WEB服务器向数据库服务器发送数据请求,实现多对多的通信。
- 响应速度
- 成本
- 维护,升级,扩展成本
- 信息共享覆盖用户
日常2018/4/9---b/s和c/s架构分别是什么?区别?的更多相关文章
- 2018/05/02 每日一学Linux 之 .bash_profile和.bashrc的区别
最近一直在学习其他,导致博客就疏忽了,很不好(其实就是自己懒了......). -- 为什么要使用 .bash_profile和.bashrc ? 在平常的使用中,有些文件夹或者命令很长,在执行时需要 ...
- 2018/03/08 每日一学PHP 之 常量defind 和 const区别
常量defind 和 const区别 什么是常量? 如字面理解的,在脚本执行期间不可改变的的量. 定义一个常量应该注意的事项? 1:常量默认大小写敏感,错误的大小写不会被识别为常量. 2:常量只能是标 ...
- 2018/03/16 echo、print_r、print、var_dump之间的区别
还是先说下我对这个方法的理解 print_r()用于 cli模式下的输出调试,error_log() 调试 var_dump() 用于页面的显示调试 echo() 用处比较多,__toString() ...
- 2018年1月17日总结 css3里transition 和animation 区别
transition 和animation两个CSS3属性经常被用到实际项目中,想把它整理出来. 1.先介绍transition >>>>> a. 在做项目中经常会遇见 ...
- 2018.7.9 Android—显式Intent和隐式Intent的区别
1:都是用来在一个activity中启动另外一个activity 2:显示Intent直接指明要启动activity的定义,即activity.class:隐式intent通过在androidmani ...
- 2018.5.7 androidStudio中:layout_gravity 与 gravity的属性的区别
android:gravity:设置的是控件自身上面的内容位置 android:layout_gravity:设置控件本身相对于父控件的显示位置. 看下面 <LinearLayout xmlns ...
- 2018.5.7每天一题面试题----final, finally, finalize 的区别
1.final修饰符(关键字).被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承. 因此一个类不能既被abstract声明,又被final声明.将变量或方法声明为final ...
- A Dream (PKUWC 2018)
A Dream (PKUWC 2018) 这是一个梦. 从没有几分节日气氛的圣诞,做到了大雪纷飞的数九寒天. 忘了罢! 不记得时间,不记得地点.随着记忆的褪去,一切也只会不复存在. Day-34? D ...
- ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文
https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...
随机推荐
- SQL命令如何分发到集群的各节点
有些数据库集群的规模是很大的,有上百个节点,那么维护SQL命令如何快速分发给各个节点,例如:要加个字段,逐个节点操作那是十分低效,枯燥的. TreeSoft增加了[SQL分发]功能,简单配置,可以快速 ...
- 【Tools】三款笔记本电脑硬件检测工具-官网下载
一.CPU-Z 下载地址: https://www.cpuid.com/softwares/cpu-z.html 描述: CPU-Z已经是大名鼎鼎了.这里就不多说了. 二.Cinebench 下 ...
- 微服务Consul系列之服务部署、搭建、使用
使用Consul解决了哪些问题 是否在为不同环境来维护不同项目配置而发愁 是否有因为配置的更改导致代码还要进行修改.发布因为客流量大了还要规避开高峰期等到半夜来发布 微服务架构下应用的分解业务系统与服 ...
- PMP备考笔记--1.1
题型 200道中英文单选题 基本概念题(%10) 过程工具/技术和输入输出题ITTO (%10) 情景题(%70) 计算题(3-5道题) 图 pmp四大挑战 试卷100页,题干长,阅读量大,考试4个小 ...
- git和GitHub初级
使用方式: 一种是本地创建一个文档, 然后在github上创建一个仓库, 在上传上去 一种是从仓库下载代码, 然后在本地编辑, 然后在上传上去 第一种: 首先在linux上创建一个文档, mkdir ...
- js控制数量包含截取
<div class="usermes_index_line"> 进行中的单 <div id="usermes_index_line_i2"& ...
- 什么是netty--通俗易懂
一.Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架.Netty 提供异步的.基于事件驱动的网络应用程序框架,用以快速开发高性能.高可靠性的网络 ...
- 以环形角度理解php数组索引
array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) : ...
- Python——继承
Python的继承是多继承机制,一个子类可以同时有多个直接父类:继承可以得到父类定义的方法,子类就可以复用父类的方法. 一.继承的语法 子类:实现继承的类. 父类(基类.超类):被继承的类. 子类继承 ...
- CentOS7+Docker+MangoDB下部署简单的MongoDB分片集群
简单的在Docker上快速部署MongoDB分片集群 前言 文中使用的环境如下 OS:CentOS Linux release 7.5.1804 (Core) Docker:Docker versio ...