Linux集群和自动化维1.1.3 软件开发C/S结构与B/S结构的区别

1.1.3 软件开发C/S结构与B/S结构的区别

   C/S结构是大家熟知的软件系统体系结构,即Client/Server(客户机/服务器)结构,它通过将任务合理地分配到Client端和Server端,来降低系统的通信开销,不过需要安装客户端才可进行管理操作。B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或改进的结构。在这种结构下,用户界面可完全通过WWW浏览器来实现。像QQ、Skype这类即时通信软件就属于C/S结构;而像百度、Google这样的搜索引擎就属于B/S结构。

随着计算机技术的不断发展与应用,计算模式从集中式转向了分布式,尤为典型的是C/S结构。两层结构C/S模式,在20世纪80年代及90年代初得到了大量的应用,最直接的原因是可视化开发工具的推广。之后,它开始向三层结构发展。近年来,随着网络技术的不断发展,尤其是基于Web的信息发布和检索技术、Java计算技术及网络分布式对象技术的飞速发展,导致了很多应用系统的体系结构从C/S结构向更加灵活的多级分布结构演变,使得软件系统的网络体系结构跨入一个新阶段,即B/S体系结构。基于Web的B/S模式其实也是一种客户机/服务器模式,只不过它的客户端是浏览器。为了区别于传统的C/S模式,才特意将其称为B/S模式的。了解这些结构的特征,对于系统的选型而言是很关键的。

下面是C/S结构与B/S结构的特点分析。

1.系统的性能

在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。

不过,采用B/S结构时,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这就使得服务器的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发布的信息必须是以HTML格式为主,其他格式的文件则多半是以附件的形式来存放的。而且HTML格式文件(也就是Web页面)不便于编辑修改,给文件的管理带来了许多不便。

2.系统的开发

C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且还会迫使应用开发者投入很多精力来解决应用程序以外的问题,这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统上,那么C/S结构的软件还需要开发不同版本的客户端软件。

但是,与B/S结构相比,C/S技术的发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术应是更成熟、更可靠的。

3.系统的升级维护

C/S系统的模块中只要有一部分发生改变,就会关联到其他模块的变动,这会使得系统的升级成本比较高。B/S与C/S处理模式相比,则大大简化了客户端,只要客户端机器能上网就可以。对于B/S而言,开发、维护等几乎所有的工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以了,这就降低了异地用户进行系统维护与升级的成本。如果客户端的软件系统升级比较频繁,那么B/S架构的产品优势就更明显—所有的升级操作只需要针对服务器进行即可,这对那些点多面广的应用是很有价值的,例如一些招聘网站就需要采用B/S模式,客户端分散,且应用简单,只需要进行简单的浏览和少量信息的录入即可。

在系统安全维护上,B/S则略显不足,B/S结构尤其得考虑数据的安全性和服务器的安全性,毕竟现在的网络安全系数并不高。以OA(办公自动化)软件为例,B/S结构要实现办公协作过程中复杂的工作流控制与安全性控制,还有很多技术上的难点。因此,当前虽然出现了B/S结构的OA系统产品,但尚未大范围推广。

时间: 2024-09-09 14:06:41

Linux集群和自动化维1.1.3 软件开发C/S结构与B/S结构的区别的相关文章

Linux集群和自动化维2.6.4 开发类脚本

2.6.4 开发类脚本 业务需求在不断地变化,有时候互联网上的开源方案并不能全部解决,这个时候就需要自己写一些开发类的脚本来满足工作中的需求了,虽然很多时候脚本都可以独立运行,但笔者的做法还是尽量将其return结果写成Nagios能够识别的格式,以便配合Nagios发送报警邮件和信息. 1.监测redis是否正常运行 笔者接触的线上NoSQL业务主要是redis数据库,多用于处理大量数据的高访问负载需求.为了最大化地利用资源,每个redis实例分配的内存并不是很大,有时候程序组的同事导入数据量

Linux集群和自动化维3.7.1 开发环境中的Fabric应用实例

3.7 Fabric应用实例 3.7.1 开发环境中的Fabric应用实例 笔者公司在开发环境下使用的都是Xen和KVM虚拟机器,有不少数据,因为是内网环境,所以直接用root和SSH密码连接.系统统一为CentOS 6.4 x86_64,内核版本为2.6.32-358.el6.x86_64,Python版本为2.6.6. 实例1,同步Fabric跳板机的/etc/hosts文件,脚本如下: #!/usr/bin/python # -*- coding: utf-8 -*- from fabri

Linux集群和自动化维导读

Preface  前言 为什么要写这本书 笔者从事系统运维和网站架构设计的工作已有10多年,现在在一家外企担任云平台架构师.云计算是现在的主流技术,未来也有很好的发展趋势,云计算的流行对于传统的运维知识体系来说,其实也造成了冲击,有很多读者经常向笔者咨询工作中的困惑,比如从事系统运维工作3-5年后就不知道该如何继续学习和规划自己的职业生涯了.因此笔者想通过此书,跟大家分享一下自己的工作经验和心得(包括传统运维和云平台运维工作的区别与对比),以期解决大家在工作中的困惑.本书提供了大量项目实践和线上

Linux集群和自动化维1.3 如何根据服务器应用选购服务器

1.3 如何根据服务器应用选购服务器   无论物理服务器是选用IDC托管还是AWS EC2云主机(以下为了简略说明,将它们统称为服务器),我们都要面临一个问题,那就是选择服务器的硬件配置,选购硬件配置时要根据服务器的应用需求而定.因为只通过一台服务器是无法满足所有的需求,并解决所有的问题的.在设计网站的系统架构之前,应该从以下方面考虑如何选购服务器: 服务器要运行什么应用. 需要支持多少用户访问. 需要多大空间来存储数据. 业务有多重要. 服务器网卡方面的考虑. 安全方面的考虑. 机架安排是否合

Linux集群和自动化维3.7.2 线上环境中的Fabric应用实例

3.7.2 线上环境中的Fabric应用实例 笔者线上的核心业务机器统一都是AWS EC2主机,机器数量较多,每个数据中心都部署了Fabric跳板机(物理拓扑图可参考图3-3),系统为Amazon Linux,内核版本为3.14.34-27.48.amzn1.x86_64,Python版本为Python 2.6.9. 如果公司项目组核心开发人员离职,线上机器就都要更改密钥,由于密钥一般是以组的形式存在的,再加上机器数量繁多,因此单纯通过技术人员手工操作,基本上是一项不可能完成的任务,但若是通过F

Linux集群和自动化维1.4.4 Linux下CPU使用率与机器负载的关系与区别

1.4.4 Linux下CPU使用率与机器负载的关系与区别  笔者的线上竞标业务机器,在业务最繁忙的一段周期内,发现Nginx单机并发活动的连接数超过了2.6万,机器负载(基本上不到4,Nagios监控系统并没有发送报警邮件和短信)和Nginx+Lua服务都是正常的,网卡流量并没有打满,但流量就是怎么也打不进去.经过深入观察,发现这段时期内每台机器的CPU利用率都已经很高了,基本都维持在99%-100%左右,这种情况应该是CPU资源耗尽了,导致不能再继续提供服务,所以这里有必要研究下CPU负载和

Linux集群和自动化维3.1 Python语言的应用领域

第3章 轻量级自动化运维工具Fabric详解 近期公司的业务系统代码发布频繁,笔者同时在几个项目组里面穿插工作,发现发布和运维的工作都相当机械,加上频率比较高,导致时间的浪费也比较多.很多测试工作,例如通过SSH登录到测试环境,推送代码,然后修改Bug进行测试,这些操作都是非常机械并且具有重复性的.更让人郁闷的是,每次的操作都是相同的,命令基本上都是一样的,并且是在多台机器上执行,很难在本机上以一个脚本来搞定,主要时间都浪费在使用SSH登录和输入命令上了.这个时候需要一个轻量级的自动化运维工具,

Linux集群和自动化维3.6 轻量级自动化运维工具Fabric介绍

3.6 轻量级自动化运维工具Fabric介绍 笔者公司目前的数据中心采用的是分布式部署方案,在全球多地都有数据中心.数据中心采用的是AWS EC2机器,在核心的数据中心里,EC2机器的数量比较多,基本上每个数据中心都在运行着几百台AWS EC2机器,而且业务繁忙的时候,会通过AWS AMI(Amazon系统映像)直接上线几十台相同业务的EC2机器,它们的机器类型.系统应用和配置文件基本上都是一模一样的,很多时候需要修改相同的配置文件和执行相同的操作,这个时候为了避免重复性的劳动就需要用到自动化运

Linux集群和自动化维2.6 生产环境下的Shell和Python脚本分类

2.6 生产环境下的Shell和Python脚本分类 生产环境下的Shell和Python脚本的作用还是挺多的,这里根据2.1节所介绍的日常工作中Shell脚本的作用,将生产环境下的Shell脚本分为备份类.监控类.统计类.运维开发类和自动化运维类.前面3类从字面意义上看比较容易理解,后面的两类需要稍微解释一下,运维开发类脚本是利用Shell或Python实现一些非系统类的管理工作,比如SVN的发布程序等:而自动化运维类脚本则是利用Shell或Python来自动替我们做一些烦琐的工作,比如自动生