在连锁软件选型的相关文章中,经常看到有人争论定时传输与实时在线的优劣,以及B/S和C/S的优劣,并曾看到有家所谓的高科技软件公司自信的宣布B/S比C/S在技术上更为优越,在下喜欢热闹,所以我也来凑份子说说我的看法。
在我看来,根本不存在定时传输和实时在线谁优谁劣的说法,也根本不存在B/S和C/S孰优孰劣的说法—— 一切因需而定。
对于定时传输和实时在线,两者从技术角度讲,本质上都是一样的,都是遵从某种通讯协议进行数据通讯(大家最熟悉的自然是TCP-IP协议)。如果你能做到定时传输,那么我相信你也能做到实时在线;如果你能做到实时在线,那么我相信你也有办法做到定时传输。事实上,有些软件系统既包括定时传输,也包括实时在线。对于用户而言,最后的解决方案,到底是采用定时传输,还是实时在线,还是兼而有之,应该是根据自己的客观需要而定,别忘了,技术是拿来用的,而不是流于概念性的争论。“黑猫白猫,抓住老鼠就是好猫”。
对于C/S和B/S,两者从技术角度讲,本质上仍然是一样的,甚至你可以将B/S看成一种特别的C/S,一种廋客户端,B/S所用的客户端软件就是浏览器(例如,IE, FireFox, Netscape等等)。从软件开发的角度看,两者的区别只是,C/S结构的软件,尤其是多层结构的C/S软件,开发难度更高一些而已。这是因为B/S结构的软件,他的客户端和数据通讯都是现成的,客户端就是浏览器,数据通讯由浏览器和Web服务器(例如IIS或者Apache等等)解决,而C/S结构的软件,其客户端和数据通讯必须由开发人员自己解决,对于真正的程序员来说,这当然不是障碍。
事实上,这都是基本的知识点,估计高手们看到这里已经不耐烦了,觉得我太啰嗦。但是,如果用户明白这些,相信就不会迷茫于“B/S比C/S在技术上更为优越”这样令人莫名其妙的话来。
刚才说了,一切因需而定。虽然在技术上,这些争论是没有意义的(无论何种方式,其技术实现都是没有障碍的),但是在具体的开发项目中,却要根据自己的需要来作出取舍。下面我举两个例子。
例子一:移动公司营业部和总部之间应用的管理软件系统。营业部因为在给顾客手机充值时候,需要即时知道该用户的余额和用户的身份信息,那么他这套系统就必须要实时在线,同时操作也比较简单,不需要对客户端进行特别的复杂的控制,所以,采用B/S结构是一个不错的选择,当然,你选择C/S也一样能实现。
例子二:有个食品连锁公司,在全国有500家连锁店,连锁店与总部之间通过软件系统进行进销存和货物调拨的管理。对于总部来说,他每天都能了解到下属连锁店的经营情况已经足够,不需要每时每刻的去了解,所以,定时传输和实时在线对于他来讲没有区别。但是,成本控制对于这样的连锁公司是非常看重的。如果实时在线,按照一个连锁店一年的宽带费用是1000元计算,那么他一年得50万元的宽带费;但是采用定时传输,一年的通讯费用只要5万元。同时,这家连锁公司要求总部和各分部能实时在线,以方便管理。所以,在这个情况下,就要求该软件系统既包括定时传输(以控制成本),同时又要包括实时在线(以方便管理),就是说,连锁店和总部服务器之间是定时传输;但是分部以及总部的人员和总部服务器之间是实时在线。在这个情况下,无疑C/S结构是一个不错的选择。当然,B/S也不是做不到。
总之,一切因需而定。什么样的需求决定什么样的应用,什么样的应用选择什么样的技术。软件开发商所要做的就是,无论什么样的需求,都能在技术上找到解决之道,而不囿于某个思维定势。