一、背景介绍

C/S(Client/Server):客户端/服务器结构。界面表示、事务处理逻辑放在客户端,服务端主要负责数据的存储管理,这就是胖客户端模式。而在三层架构模式下,表示层和少量的事务处理放在客户端,主要的事务处理逻辑放在业务应用服务端,同时数据存储管理仍然为独立的一层。

B/S(Browser/Server):浏览器/服务器结构,界面显示逻辑放在浏览器,事务处理逻辑则在Web Server。极少数的逻辑在前端实现,但主要的事务逻辑在服务器端实现。通常由Browser、Web Server、数据存储Server形成三层架构。

二、优缺点比较

1.   C/S优缺点

(1) 优点:

能充分发挥客户端PC的处理能力

很多工作可以在客户端处理后在提交给服务器,因此CS客户端的响应速度快。例如,可以在客户端完成20万条数据的排序、内容筛选,函数计算等;显示包含上万节点的关系图。

客户端应用可以利用工作终端的多核CPU、内存、GPU等硬件资源。像AutoCAD、Photoshop、游戏软件客户端等,还会针对显卡进行特殊优化。

操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求

客户端应用的自主性更强,客观的讲,浏览器自身就是一个客户端应用。

所以,操作界面漂亮与否应该与所使用的开发语言和框架、设计与开发人员能力、应用开发资源投入等因素密切相关。

客户端应用可以集成第三方软硬件,例如指纹仪、智能卡、加密狗等;可以使用扩展屏幕,例如PowerPoint的演讲者模式、大屏显示等。

CS结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程

容易保证安全性,程序更注重流程

C/S一般面向相对固定的用户群,可以对权限进行多层次检验,提供了更安全的存取模式。一般高度机密的信息系统采用C/S结构为宜。

(2) 缺点:

需要专门的客户端安装程序,分布功能弱,快速部署安装和配置困难

兼容性差,需要考虑运行平台,如操作系统版本

针对不同的平台,需要使用不同的开发工具开发。操作系统版本(win 7/win 10/Linux)、系统类型(x86/x64)。

尽管一些中间语言,如java、.net通过虚拟机可以解决运行平台的差异性,但涉及到Native相关的组件,仍然需要考虑平台差异性,典型的如各种解码器,第三方组件需要区分x86和x64版本。

开发、维护成本较高,需要具有一定专业水准的技术人员才能完成

发生一次升级,则所有客户端的程序都需要更新。

与客户端的形式多样、可以满足客户个性化要求相对应的就是对开发人员的要求也比较高。

用户群固定,适用面窄

通常不适合面向一些不可知的用户,因此适用面窄,通常用于局域网。

2.   B/S优缺点

(1)优点:

分布性强,客户端零维护

只要有网络、浏览器,就可以随时随地进行查询、浏览等业务处理。

业务扩展简单方便,通过增加网页即可增加服务器功能

维护简单方便,只需要改变网页,即可实现所有用户的同步更新

这是BS架构非常突出的一个优点。

开发简单,共享性强

有大量的第三方BS组件和技术,可用于后端开发、前端显示,因此从快速开发角度来看BS模式占有很大的优势。

(2)缺点:

个性化特点明显降低,无法实现具有个性化的功能要求

集成诸如指纹仪、摄像头、调用播放器变得困难。

虽然IE浏览器支持ActiveX扩展,但是在兼容性等方面又不尽如人意。

在跨浏览器上,BS架构不尽如人意

尤其是在对HTML5的支持上,各主流浏览器都存在或多或少的差异,但随着时间的推移,这种情况将会有很大的改观。

请求/响应模式带来的性能问题

为了提高使用体验,通常会采用动态刷新网页的方式,给服务器带来一定的压力(通过Ajax和WebSocket在一定程度上可以缓解这方面的问题)。

浏览器一般只负责界面表示,因此一些业务逻辑必须在服务器上完成,像异常情况处理、数据转换、操作日志等。

无状态方式下的会话控制成本

服务器端在保存数据的同时还要保存用户的状态,开发人员要精心设计提交的次序即信息的完整性,而对C/S而言只需要全部完成后提交即可。

在速度和安全性上需要花费巨大的设计成本

因为所有的操作是通过请求/响应模式工作,弱安全设计不到位,通过简单修改URL参数、篡改POST字段值就会产生安全性方面的问题。

功能弱化,难以实现传统模式下的特殊功能要求

浏览器作为界面展示的平台和脚本语言的执行环境,它无法超越浏览器所能支持的功能特性。ActiveX、Flash、Java Servlet都是为了扩展功能曾经使用的技术,但是因为兼容性、安全性等方面的问题,已经基本被淘汰。

3.   对比分析

从软件开发和运维最关注的方面进行对比:

C/S

B/S

开发

开发难度

对开发人员要求较高;

开发门槛低;

只要考虑浏览器的兼容情况;

需要考虑无状态条件下的会话控制;

功能/交互能力

自主性强;

交互方式更丰富;

依赖于浏览器;

功能弱化,存在无法实现的功能;

部署

安装

必须安装客户端程序;配置部署复杂;

只要部署服务器

升级

所有客户端都要升级

只需更新服务器

运行

操作系统/类型

区分操作系统和运行平台;

只要有兼容的浏览器即可

性能

最大化利用终端性能

性能相对较低

维护

要求高

方便

个性化需求

单独更新客户端

不支持

安全性

相对封闭,但也需要认真设计

需要花费精力设计

综合对比发现,B/S架构胜在开发相对简单,维护简单方便;而C/S架构胜在性能高自主性强。在这些方面,短期内各自占据着独有的优势。

采用何种架构,需要对软件需求进行细致的了解,最终来确定使用的架构,不能单纯的追求技术的先进性。而未来发展趋势,是将B/S与C/S的优势完美的结合起来,既能以B/S的方式发布运行,又能同时具有C/S极强的可操作性。

应用架构B/S与C/S优劣比较(一)相关推荐

  1. 从 ELK 到 EFK 演进

    http://blog.51cto.com/13527416/2051506 背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索 ...

  2. dataguard日志传输模式解析_日志系统:从ELK到EFK的演进

    为什么做日志系统 首先,什么是日志? 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志. 应用日志.安全日志.这些日志分散地存储 ...

  3. 京东C++开发工程师 2019校招卷总结

    1.一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别? 一个客户端,三百个用户 只有一个客户端,三百个用户肯定不能同时进行操作,假设每次一人操作客户端对服务器施压,服务器承受的 ...

  4. 日志搜集系统从ELK到EFK

    为什么做日志系统 首先,什么是日志? 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据. 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志. 应用日志.安全日志.这些日志分散地存 ...

  5. 从ELK到EFK,日志系统的高级玩法儿

    作为中国最大的在线教育站点,沪江日志服务的用户包含沪江网校.交易.金融.CCtalk(直播平台) 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志 ...

  6. [实训笔记] 01 软件架构模式

    第 1 讲 软件模式架构 1.软件架构模式概念 1.1 架构是什么 定义 架构是构成一个系统的基础组织结构,包括系统的组件构成,组件间的相互关系.系统和其所在的关系.以及指导架构设计和演进的相关准则. ...

  7. MO and MMO

    最近在读Square Enix的工程师中嶋谦互的<网络游戏技术核心>,可以让开发者对MO的开发有全面系统的了解,书写的非常棒.谈谈作者,他最早负责<最终幻想9>的开发.该书曾经 ...

  8. 搬:五大车载操作(VOS)系统优劣对比,车载系统架构分析

    五大车载操作(VOS)系统优劣对比,车载系统架构分析-QNX系统性能分析 2017年08月13日 08:32:28 锋影Q 阅读数:7080 五大车载操作(VOS)系统优劣对比,车载系统架构分析-QN ...

  9. 如何评价架构的优劣(转)

    这是我在今年上海参加亚太软件研发团队管理年会时,InfoQ对我的一次采访内容(我自以为普通话还算行,听了视频,才觉得自己的普通话真是糟透了.而且在采访之初,看得出来,我有些小小的紧张啊).本次发言,仅 ...

最新文章

  1. python关机程序代码_python实现的重启关机程序实例
  2. linux一切皆文件之tty字符设备(深入理解sshd创建pty的过程) (五)
  3. weblogic从入门到起飞!(weblogic安装、domain配置、管理控制台)(一)
  4. Qt Creator编辑MIME类型
  5. SetFormFullScreen()窗体全屏显示
  6. B-Donut Drone(循环/分块/DP)
  7. Storm精华问答 | Kafka在Storm中的角色是什么?
  8. [delphi]极域学生端解除键盘鼠标锁定退出全屏广播-强制窗口化-源代码
  9. HTML基础知识点(1)
  10. 50句形容美人的绝佳诗句,只看一眼,惊艳千年
  11. mysql sql注入工具下载_sql注入工具下载|超级SQL注入工具SSQLInjectionv1.0 正式版 附使用说明 - 极光下载站...
  12. 万里汇WorldFirst个人和公司帐户注册教程(送$25+0.3%提现费)
  13. 保险行业数据分析——用户画像 精准营销
  14. 【个人网站】零基础个人网站搭建完整教程(附免费源码)
  15. 作为一名程序员,我都收集了哪些好玩的神器工具?
  16. E哥的Git教程(一)
  17. python爬取5442网站图片
  18. 百度Android在线语音识别SDK使用方法
  19. python-scrapy爬虫框架爬取王者荣耀英雄皮肤图片和技能信息
  20. 数据库系统概论(第五版)王珊 自用复习笔记

热门文章

  1. 原生JS添加节点的方法
  2. 【突发】西普教育实验吧NISP网站故障
  3. 总结的几个 sql 分页存储过程
  4. 孔雀翎---- Programming C 中文版 第4版
  5. 狙击女王的“柳德米拉·米哈伊尔洛夫娜·帕夫利琴科”。
  6. Kaggle案例之泰坦尼克船员幸存预测(sklearn机器学习库)
  7. 想不到吧,Java创建线程的方式只有一种
  8. bs公式matlab画图,简单BS主图指标 通达信公式(附图)
  9. VBA之CurrentRegion属性
  10. Centos8安装MySQL8