再论B/S与C/S(欢迎讨论,up无分)
首先我想说,我很清楚在不久之前这里就讨论过BS好还是CS好。而且这样的话题也绝不只讨论过这一两次。那我为什么还来这里大声嚷嚷?因为,这回我算是有了相当的基础和论据(也就有了自己的看法)再来“旧事重提”的。
我的看法是:除非面对的是不确定的大众(比如说你是做B2C),否则C/S结果有绝对的优势。
我将分两部分讨论,第一是B/S的缺点;第二是对C/S的误解。在此之前我先要声明一下,我所说的CS与BS并不是在指n层还是两层,因为CS完全可以做n层,而且比BS还要好。
第一、B/S的缺点:
B/S当然也是C/S的一种,BS中的B就是CS中的C的一种,叫浏览器。在拼命的说它的坏话之前,我先要说一点它比CS(的C)好的一点:方便获得!每一个windows安装之后都有一IE。而你公司的client应该没有那么普及,哪怕是联众的客户端也不会比IE的安装数量多。
浏览器也是Client,有着Client通有的缺点,比如版本问题。不同浏览器厂商,同一厂商的不同版本都有大量不兼容现象。当我这几天学习JavaScript、HTML、CSS的时候(课程到今天完成),我发现,这种不兼容的程度比我想象的大得多,绝不是边边角角的东西,而是很多核心内容。可以说乱的简直一塌糊涂!也许有人说这只是暂时的,但是我想问,谁向你保证这只是暂时的了?退一步,就算是暂时,要暂时多久?想想看什么时候我们现在用着的最新的浏览器再也没有人用了,那时才有可能(应该不是一两年的事)。
看看Web设计人员为什么而对CSS欢呼雀跃?为了能绝对定位一个Label,一个图片!这在Client里简直是易如反掌之事!当我们想把网页里的几块东西摆齐的时候,看看我们用了多少个Table?当我们想有一个圆边框的Table的时候看看我们费了多大劲!打开sina.com.cn的源码,看一看一个简简单单的结构在这里要写多少行代码,要用多复杂的结构。而这一切的一切(包括很多其它没说到的)在传统Client中实现起来简直不值一提。
再看一看为了使用Web这个东西我们要用多少工具?HTML、客户端Script(如JavaScript)与Applet、CSS、服客器端Script(如PHP,ASP,JSP)与servlet。要连接后面的EJB或封装业务逻辑可能还要用到JSPTag。以外要用相应Web Server软件如IIS,tomcat,apache等等。把它们加到一起不过是为了起到一个MVC里面View的作用(有时把controller也放进来)。要用这么多东西是很麻烦的,而且要么一人全懂但不可能全精(通常),要么就要分别找各精几样的一起做。但是用Client,一般只用一种语言加一两种技术:如Socket或远程过程调用。Web page这么麻烦说白了就是因为他本来就不是设计来做一个Client的,甚至于最初它根本就静态的。我们在HTML前后做了那么多事说白了就是在兜着圈子把它做成一个Client。我很纳闷,竟然没有一个人觉得可笑,这本身就够可笑的了。
最后,传输量很大,都是文本,再加上不一定用得上的cookie,加上极多重复传送的文本,造成绝对的带宽浪费,加长用户反馈时间。
总之就是两个字“憋脚”!
第二、CS的误区:
人们说CS不好,常常是在说n层比两层好。但是CS不代表两层。CS同样可以做n层。看看J2EE里的Client App都是指CS结构的Client,你不会认为是指两层结构的Client吧。
人们说CS中client更新不方便。以前已有人说过用自动更新机制,如每次连接时check版本,如需要当时下载。这当然是一个好办法。我想说的是还有一个好办法,不知道大家有没有注意到Pet Store?里面check order的client(就是CS结构)是用时临时从Server端下载的(通过在浏览器里点击一个连接就自动下载运行了)(比起web来却只下载一次),而且调用的主要模块是远程RMI Server里的东西。我想可能会是以后n层CS的典型用法,完全不存在更新不便的问题,而且不受浏览器版本影响。
说了这么多,都是我的想法,而且是经过考虑的结论。但是可能还是说得不对,请你来说说你的看法吧,欢迎反对意见。(up者绝对无分)
有好处但也有坏处
bs架构与cs架构的区别
C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。。
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。
C/S 与 B/S 区别:
Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
1.硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2.对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
3.对程序架构不同
C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
4.软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5.系统维护不同
系统维护是软件生存周期中,开销大, -------重要
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6.处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7.用户接口不同
C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
8.信息流不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心