BS-CS架构比较

        公司开发项目由b/s转向C/S结构,原本做服务器的我,随着这次项目的转型,更多的工作转向Web前台开发。
        第一个印象就是B/S结构读取数据非常方便,C/S要写很多网络命令封包,做的好一点可以直接用xml传数据,不过我开发的时候还是停留在传2进制的数据上,这样程序代码多一点,网络带宽会省很多。B/S如果基于老套的javaWeb开放框架,数据和表现都在一起传送,所以可以预见,同时支持的客户数会比C/S少。现在Ajax相当流行,如果以数据为中心,传的数据会少很多,应该和xml传数据的C/S结构差不多,不过比起2进制传送,还是效率不高。开发效率上,B/S在数据传送上会快很多,可以提供的选择也相当多,传数据不一定是xml,也可以用json,也可以夹在页面里。
        第二个印象是C/S客户端结构相对简单。B/S应该完全可以做的一样简单的,如果按照Ajax,一个页面就是一个应用程序的开发方法,两者都差不多,都在客户端缓存数据,维持若干个有限状态自动机,大部分问题都是同样的解决思路,不同之处在于,C/S结构,桌面程序的开发已经有很纯熟的工具,代码的版本管理,多人协作,都会方便很多,而用Ajax做那种一个页面对应一个应用程序的开发方式,多人协作会是很大的问题,好使的类库和工具都会让人头疼较长时间。不过B/S还有很多别的选择,一种就是非常流行的基于java框架开发,一般而言,这种开发方式会让服务器端承载很多客户端需要做的事情。服务器端用session,application,page,request缓存数据,服务器端也有一些control,维护一些有限状态自动机,从原理上来说,和极端的Ajax开发很像,所以这两者之间的融合会越来越多。只要是这样一套开发方式,就可以实现以组件为基本模块的开发。至于模块是服务器端java框架生成,还是客户端的javascript框架生成,没有必要计较得那么多。另一方面,传统的网站开发是以页面为中心的,也存在不少以页面为中心的java开发框架。但并不存在以页面为中心的javascript框架,因为浏览器切换页面,所有的脚本会重新刷新,这样不同页面之间数据的联系就断了。计算机世界不是0就是1,而现实世界往往是模糊的,以页面为中心的开发方式与单页面基于组建的开发方式有很大的一个灰色地带,大多数web应用就处在这个灰色地带。总的来看,B/S客户端开发有很多选择,每种选择需要的团队成员素质不同,而java的生态环境的多样化对于新手,是一种灾难,当初我花了2星期才知道java和javascript都各有几十个甚至几百个框架,人都崩溃了,于是决定早期项目开发坚决不用任何框架。M$的用户会在入门阶段会省很多事,因为没多少选择。 
       第三个印象B/S的发布优势明显。产品容易发布,相对而言,产品也容易修改。在开发的过程中,B/S客户端的开发,修改非常容易,虽然工具不太纯熟,所见即所得,很容易修改的特点弥补了开发工具的不足。对应于我们的项目,主要功能基本实现,用户体验略有降级,B/S的开发时间明显会短些,修改成本低是非常关键的因素。就这点而言,C/S客户端开发应该借鉴B/S开发的这些优点,可以加一些特别的设计,方便修改,最好是不中断测试过程的修改。但在单元测试,和自动化测试方面,C/S客户端的开发有很大的优势。C/S客户端的机器人远比Web客户端机器人容易做,且容易使用。
        最近半年开发的一点感受,写下来做个小结。接下来会写一点javascript,css方面的学习经验。

你可能感兴趣的:(JavaScript,数据结构,框架,应用服务器,Ajax)