B/S与C/S的优缺点比较
C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S是美国 Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多。
B/S
优点:
1、维护和升级方式简单。B/S架构的软件只需要管理服务器,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;客户机越来越“瘦”,而服务器越来越“胖”
2、分布性强。只要有网络。浏览器,可以随时随地进行查询、浏览业务处理。
3、客户机配置门槛低。B/S模式操作简单,内存占用少,而C/S模式内存占用大,安装复杂
4、业务扩展简单方便。通过增加页面即可增加服务器功能
缺点:
1、应用服务器运行数据负荷较重
2、在跨浏览器上,BS结构不尽如人意。
3、在速度和安全性上需要花费很多设计成本,响应速度不及C/S
4、用户体验不是很理想,B/S需要单独界面设计,各个浏览器厂商的对浏览器的解析的标准不同。 客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。
C/S
优点:
1、应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
2、C/S结构的界面和操作简单丰富。具有较强的事务处理能力。响应速度快。
3、由于客户端实现与服务器的直接相连,没有中间环节,只有一层交互,因此响应速度较快。
4、C/S结构的安全性能可以很容易保证,实现多层认证也不难。
5、能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再交给服务器,所以C/S客户端相应速度快
缺点:
1、维护成本高昂
C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,产品升级困难
2、客户机配置门槛高
因为客户端中不仅包含了界面渲染也包含了部分业务逻辑处理,所以对内存、cpud等的资源有很大依赖。并且客户端需要人为安装,对使用人员有一定要求
3、客户端需要安装专用的客户端软件
4、对客户端的操作系统一般也会有限制。可能适应于WinXP,但不能用于WinVista或Win7。或者不适用于微软新的操作系统等等,还有Linux、Unix等等操作系统。
1、定义
B/S结构(Browser/Server)是浏览器服务器这种开发模式,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。
C/S又称Client/Server或客户/服务器模式。需要做客户端服务器端 。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。
客户端/服务器模式与浏览器端/服务器模式,即C/S模式与B/S模式之间的区别,其实与RCP和TCP程序的区别一样,在于运行平台和数据交换模式的区别。
2、B/S架构
Browser/Server 模式是从传统的 C/S 发展起来的计算方式。C/S 是松散耦合系统通过消息传递机制进行对话由客户端发出请求给服务器服务器进行相应处理后经传递机制送回客户端;B/S 模式则把C/S 模式的服务器端进一步深化分解成应用服务器(Web 服务器)和多个数据库服务器同时简化 C/S 中的客户端将客户端的计算功能移至 Web 服务器仅保留其表示功能从而成为一种由表示层(Browser)、功能层(Web Server)与数据库服务层(DATABASE Server)构成的三层分布式结构。
B/S模式中,无需安装客户端程序,只需要通过浏览器即可访问,升级时也无需在客户端安装,因而传播更加广泛,如谷歌、百度等。
2.1、客户端-服务器-数据库(B/S三层结构)
客户机端只有 Browser一般没有应用程序,借助于 Java applet、VBScript、JavaScript、ActiveX 等技术可以处理一些简单的客户端处理逻辑显示用户界面和 Web Server 端的运行结果。它向 URL 所指定的 Web 服务器提出服务申请,Web 服务器对用户进行身份验证后用 TCP/IP 协议把所需的文件资料传送给用户,客户端只是接收文件资料并显示在浏览器上。
服务器端由 Web Server 和 DATABASE Server 构成,Web Server 负责接受远程或本地的数据查询请求然后运行服务器脚本借助于 CGI、ADO、API、JDBC 等中间部件把数据请求发送到 DB Server 上以获取相关数据再把结果数据转化成 HTML 及各种脚本传回客户的 Browse。
DB Server 负责管理数据库处理数据更新及完成查询要求、运行存储过程。可以是集中式的也可以是分布式的。Browse 与 Web Server 之间的关系就类似于主机/终端结构中两者之间的关系而 WebServer 与 DB Server 之间的关系就像 Client/Server 结构中两者之间的关系。
总的概括三层结构中的流程为:
1、客户端向服务器发起Http请求。
2、服务器中的web服务层能够处理Http请求。
3、服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法请求数据库完成相应业务功能。
4、服务器请求数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端。
在三层结构中数据计算与数据处理集中在中间即 Web Server 这一层由于中间层的服务器的性能容易提升所以在 Intranet 下的三层结构可以满足用户的需求。但这种结构对数据库服务器提出了高要求。从管理的角度来看程序代码的维护、数据库的备份虽然可以在服务器端执行但这种三层结构对网络带宽是有一定要求的因为客户端每次要求获取的数据和反馈信息都要通过网络与服务器联系。
2.2、客户端-web服务器-应用服务器-数据库
类似于第一种方法,只是将web服务和应用服务解耦,总流程变化不大,但是解耦后的结构的性能却有了很大的提高。
1 客户端向web服务器发起Http请求。
2 web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口。
3 应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器。
4 web服务器将模版+数据组合渲染成html返回给客户端。
2.3、客户端-负载均衡器(Nginx)-中间服务器(Node)-应用服务器-数据库
在以上方法中方法,增加了Nginx进行负载均衡,分布式部署应用服务,进一步提高了服务性能。
1、正暴露在外的不是真正web服务器的地址,而是负载均衡器器的地址。
2、客户向负载均衡器发起Http请求。
3、负载均衡器能够将客户端的Http请求均匀的转发给Node服务器集群。
4、Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口。
5、应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node。
6、Node层将模版+数据组合渲染成html返回反向代理服务器。
7、反向代理服务器将对应html返回给客户端。
3、C/S架构
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。其有Client/Server结构、Client/appliction/Server架构、多层C/S架构等,C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
C/S模式中,在客户端需要安装RCP程序,负责客户端与服务器之间的数据交换,因而RCP程序的升级更新会对用户造成麻烦,限制了其广泛使用,如迅雷、QQ等。
3.1、Client/Server结构
Client/Server架构把业务逻辑都写在客户端应用程序内部,客户端这时候,就是富客户端的形式,只需要读取信息或则是写回信息的时候访问数据库,这时候我们可以把数据库看作是服务器端。现阶段很多新的软件的架构模式已经发生了变化了,不是简单的这样的结构,因为无论是应用的集成或者是后续的扩展等这样的架构方式,无疑都是需要大批量的修改程序才能实现的,并且在性能等各方面都会有瓶颈。
客户端应用程序,内部包含了业务逻辑处理,只是在必要的时候请求和访问数据库。进行数据的持久化操作。
这种模式的应用场景:一般应用于需要客户端提供富应用的情况,比如医院信息系统。
这种模式的代表语言:PB,VB,Delphi等。当然.NET的Winfrom应用程序,这样的也有不少。
优点:可以重复利用PC资源,降低服务器的压力,符合用户的操作习惯,用户体验较好。
缺点:安装和更新麻烦,不轻便,信息共享比较麻烦,互联网上没有办法进行访问。
3.2、Client/appliction/Server架构
Client/appliction/Server架构相比Client/Server架构强大许多,因为变成轻量级的客户端和浏览器差不多,不但提供了强大的用户体验和符合用户的传统软件的操作方式,同时不会像胖客户端一样,那么重,该客户端还能支持自动升级。
应用服务器:负责处理客户端提交的复杂应用,当然后如果客户端用户量大的时候,可以通过一些措施来将请求进行任务的分发等,这个就是我们后面说的多层了。这里应用服务器是负责处理客户端发送的请求信息处理,带有与数据库数据相关的业务逻辑操作时,客户端将请求打发送到应用服务器,应用服务器接收请求,并进行处理。应用服务器会根据客户端的请求,访问数据库,并进行业务逻辑处理,将处理完成后的结果,返回给客户端,客户端显示结果。
这样,客户端内部只要包含必要的组件即可,所有的业务处理过程都通过应用服务器来完成。这样会大大的降低客户端的运行效率,同时为日后的用户增长,提供了水平扩展的基础。
3.3、多层C/S结构
多层C/S结构不但提供了类似浏览器的支持互联网访问,同时具有很好的用户体验。
随着服务器性能的提速,我们会发现,其实并不是CPU慢,也不是内存不够用,所有的性能瓶颈,全部都是出现在IO,这个问题,不管是现在谈的任何的逻辑架构,物理架构,或者是数据架构,一般来说,都是为了解决IO瓶颈方面的问题。我们不放仔细的考虑考虑目前的很多上市的大公司,不管是互联网的还是工具类的。一旦数据量大,请求的响应效果,关键点就是在IO。
我们学过计算机组成原理,我们能知道内存和CPU之间有差,数量级上就有差别,硬盘和内存之间,又有数量级上的差别,所以这CPU一般来说,不进行多任务或者大量运算的时候,瓶颈一般不会出现在这里了。
要解决伴随而来的瓶颈就引入了分布式的多层C/S架构设计:
数据库服务集群的多层C/S结构缓解了对数据IO操作是的瓶颈,使用读写分离、主从复制等的技术可以有效提升数据库服务的性能。
业务服务集群的分布式C/S结构实现业务切分的部署。