首页 > 其他分享 >探讨B/S与C/S架构的区别

探讨B/S与C/S架构的区别

时间:2023-06-07 11:02:14浏览次数:33  
标签:逻辑 架构 区别 处理 探讨 浏览器 服务端 客户端

前言

这几天听课,听到关于B/S架构和C/S架构的东西,颇有感触。边查阅资料边写了这篇随笔。

C/S架构

C/S架构是比较早期出现的一种系统设计架构。曾经出现过两层C/S和三层C/S架构。我们一般常见的以两层C/S架构为主。我们大家在使用计算机软件过程中基本上一定会遇见C/S架构,例如我们玩的PC游戏几乎都是C/S架构。
C/S架构最大的特点就是会有一个客户端,而且客户端会处理很大一部分逻辑,然后再将数据同步至服务端,由服务端实现剩余逻辑和数据的持久化。

有这个图片可以了解到,市面上大部分app也是使用的C/S架构思想。

C/S的优缺点

优点

  1. 客户端辅助完成业务逻辑,减少服务端对逻辑的处理。例如一些图画效果的处理,如果这部分都有客户端处理无疑客户端要崩溃。
  2. 权限较大。由于有客户端的部分,无疑开发时的权限会比B/S架构大,做过B/S的应该都了解在B/S的前端想操作一个本地文件有多难。
  3. 传输较为安全。因为是客户端与服务端点对点传输,数据的传输较B/S可靠不少。

缺点

  1. 跨平台支持性差。市场上计算机的型号不一,CPU的架构也不同,操作系统五花八门。这直接导致C/S在开发客户端的时候很难兼容所有设备。
  2. 升级困难。由于客户端包含大量逻辑处理,那么升级的时候就必须要求用户通过打补丁,或者重新安装客户端的方式升级客户端。这个对于一些用户来说无疑非常不友好。这个缺点也是我认为C/S架构最大的缺点。
  3. 服务端对数据校验的要求。由于客户端会处理一部分业务逻辑,那么也就导致可能传输假的业务逻辑处理后数据到服务端的可能性,最常见的就是游戏外挂。这就要求服务端对数据的正确性的监控。例如一个游戏角色数据是很差的装备,但是伤害数据却有好几百万,那么就有理由怀疑篡改数据了。

B/S架构

B/S架构出现的背景是互联网的流行,网速带宽的增大,以及近几年云服务的普及无疑进一步促进了B/S架构的发展。
B/S架构最大的特点是不需要单独下载一个客户端,而是使用浏览器作为用户操作的接口。前端部分只做数据的展现,并且只做非常简单的逻辑处理,大部分的业务逻辑处理都有服务端来处理。
B/S大致会分为三层:

  • 数据展现层。载体是浏览器,用以对用户展现数据和提供操作接口。
  • 业务逻辑层。载体是服务器,用来处理用户提交和业务逻辑处理。
  • 数据持久层。载体是数据库,用来将逻辑处理结果进行持久化。
    个人觉得非常类似MVC的设计模式,但是两者是从不同维度考虑问题的,不应该将二者混淆。

B/S的优缺点

优点

  1. 升级维护成本极低。由于用户主机上并没有客户端,因此升级更新维护往往是一次更新全用户同步的。
  2. 兼容性强。这个就有点类似虚拟机的概念,我们只开发在浏览器(类比虚拟机)上可以运行的程序,而用户只需要安装可以运行程序的浏览器即可,兼容性由浏览器来处理。

缺点

  1. 数据交互不安全。由于大部分B/S的数据传输是HTTP协议的,这就导致传输的不可靠性,许多的加强数据安全性的协议也是由此而来的。
  2. 客户端权限低。由于程序将在浏览器上运行,那么权限将由浏览器来限制。

总结

不得不说在我们计算机领域是没有绝对的架构的。一个软件往往是B/S和C/S架构的混合,而作为架构思想,他们的标准由没有非常明确的分界线。例如我们一个手机App往往是WebView和原生Activity混合的产品,再例如我们的一些WebApp,往往也会有很多会处理一部分业务逻辑,处理之后再同步到服务器,那就很难区分他们到底是B/S或者C/S架构了,非要说的话,也只能说是主要采用了某种架构,而不是纯粹的采用了某种架构。

标签:逻辑,架构,区别,处理,探讨,浏览器,服务端,客户端
From: https://www.cnblogs.com/Scarlett-K/p/17462721.html

相关文章

  • GRPC核心概念、架构和生命周期
    GRPC核心概念、架构和生命周期标签(空格分隔):go,grpc官网地址:https://grpc.io/docs/what-is-grpc/core-concepts/概述与许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。默认情况下,gRPC使用协议缓冲区作为接口定义语言(IDL)来描述服务......
  • 一文理清排序算法中的直接插入、快排和希尔排序的区别
    前言在上一篇文章中,给大家介绍了冒泡排序和选择排序,这两种算法都是排序算法。实际上排序算法还有插入、希尔、快速排序等,接下来我们就来学习一下这几种排序算法。全文大约【5400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理......
  • 软考高级软件架构师学习笔记一(软件架构设计)
    软件架构设计一、软件架构的概念⭐⭐⭐1、软件架构的概念需求分析-----------架构------------软件设计            (鸿沟)体系结构==架构架构设计就是需求分配,即是将满足需求的职责分配到组件上。2、软件架构建模结构模型:以架构的构件、连接件和其他概念来......
  • 超实用!常用开源许可证有啥区别。
    导读电脑中的软件都有License,开源软件也不例外。不过开源软件的开源许可证那么多种,又都有什么区别呢?让我们上网搜搜看。定义下面是摘录百度百科的定义:license是版权许可证。相当于软件版权。软件版权属于知识产权的著作权范畴,具有知识产权的特征,即时间性,专有性和地域性......
  • linux和windows爬虫有什么区别
    Linux和Windows作为操作系统对于爬虫的差异不是特别大,因为两个操作系统同时都可以用于编写运行爬虫的程序。主要的差异可能源于开发工具和环境的差异。Linux上通常使用命令行工具来编写和运行爬虫程序,而Windows则更加倾向于使用图形化界面的编程软件。这并不是说在Windows上不能......
  • Jmeter 吞吐量和TPS区别与联系
    定义吞吐量:吞吐量是指单位时间内系统能够完成的工作量,它衡量的是软件系统服务器的处理能力,就是在一秒中统计所完成的工作量。一个系统的吞度量(承压能力)与请求对CPU的消耗、外部接口、IO等等紧密关联。单个请求对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高......
  • 架构师如何找到自己的商业模式
    作为一个架构师,必须要在有限的资源下最大化架构活动所带来的商业价值。对于任何一个架构活动而言,架构师的可用资源,包括商业成本、研发成本、时间成本、迁移成本等等,都是非常有限的。但架构活动就是要在这些限制条件之下,将商业价值最大化。商业价值(Businessvalue)呢,就是从现金收......
  • JavaWeb基础(5)—— 浅析 Servlet 与 JSP 两者之间的区别
    维基百科中JSP的定义JSP(全称JavaServerPages)是一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。JSP使Java代码和特定的......
  • Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别
    抽象类(AbstractClass)Java提供一个叫抽象方法的机制,这种方法是不完整的,仅有声明而没有方法体。abstractvoidf();包含抽象方法的类叫做抽象类。如果一个类包含一个或者多个抽象方法,则该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该新类的对象,就必须为基类中的所有抽......
  • 微服务架构图
    微服务架构图  posted@ 2020-11-1510:27  朱志勇 阅读(8526) 评论(0)  编辑  收藏  举报 SpringCloud微服务总体架构图Springcloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,Springcloud中各个组件在微服务架构中扮演的角色如图所示。......