C/S和B/S两种架构区别与优缺点分析

更新日期: 2018-11-29阅读量: 2531标签: 架构

C/S架构

概念

C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。
  C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。

优点

  •  C/S架构的界面和操作可以很丰富。
  • 安全性能可以很容易保证,实现多层认证也不难。
  • 由于只有一层交互,因此响应速度较快。

缺点

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


B/S架构

概念

      B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。
      B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。

优点

  • 客户端无需安装,有Web浏览器即可。
  • BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
  • BS架构无需升级多个客户端,升级服务器即可。

缺点

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


B/S对C/S的改进和扩展

正如前文所说,C/S和B/S都可以进行同样的业务处理,但是B/S随着Internet技术的兴起,是对C/S结构的一种改进或者扩展的结构。相对于C/S,B/S具有如下优势:
  • 分布性:可以随时进行查询、浏览等业务
  • 业务扩展方便:增加网页即可增加服务器功能
  • 维护简单方便:改变网页,即可实现所有用户同步更新
  • 开发简单,共享性强,成本低,数据可以持久存储在云端而不必担心数据的丢失。


web工作原理

  • 服务器不带应用程序和数据库,直接请求html文件

  • 服务器带应用程序(如php)

  • 服务器带应用程序和数据库


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/1447

怎么判定web前端架构师的能力高低?

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。传统软件架构描述的对象是直接构成系统的抽象组件,侧重于系统的抽象、拆分、组织方式等

从Python看Web架构的发展

在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给WEB服务器

微服务架构陷阱:过渡设计和设计不足

在这篇文章里,我将简要地介绍在设计微服务架构时需要注意的问题。如果实施得当,就会获得自治能力和灵活性,但同时也会带来通信延迟和部署及托管成本。这篇文章并不是一个高级指南

CSS 里的整洁架构

虽然开发工具早已经从 preprocessor 进化到了 styled component 甚至是 functional css,但在我看来新的工具并没有让我们的样式代码写的更好,只是更快——也可能会让代码坏的更快。

浅谈一下可扩展性网站架构设计

扩展性(Extensibility)-指对现有系统影响最小的情况下,系统功能可持续扩展或者提升的能力,表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应

微服务五种开源API网关实现组件对比

微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。微服务具有几个关键特征:

Redis高可用,高性能,架构演进史

高性能就是做分片(可以类比为分库分表,将数据分到不同服务器上),在Kafka中叫分区,在mongodb中叫shard,在HDFS上叫DataNode。而保证高可用的方式就是做交叉备份。然后我很好奇Redis是怎么部署的。

创建软件架构时应该关注什么?

软件架构师的首要关注点不是系统的功能,而是软件的品质,软件品质关注点指明了功能呢必须以何种方式交付,才能被系统的利益相关人所接受。作为一个架构师,你应该了解软件产品利益人以及他们的关注点:

网站的架构

有人说过,大型网站是根据业务需求逐步演化而来的,而不是设计出来的,下面就是一个大型网站的进化过程。在初始阶段,访问量并不大,所以应用程序、数据库、文件等所有的资源都在一台服务器上。

大型网站系统架构的演化

一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!