一个关于 B/S 开发模式的讨论

转载 2007年09月16日 18:05:00

来源: http://bbs.51js.com

我们知道:B/S 开发模式越来越受推崇,我所在的公司近2年中较大的一些case都是基于B/S模式开发的。
其优势我这里不多加论述了。

但不可否认,传统的B/S系统有几大缺点

1. 表现层的代码不易复用
2. 网络上跑着大量重复的数据
3. 服务器几乎要处理所有业务逻辑和动态交互,经常执行重复的操作,负载过重。
4. 从人机对话的界面上,难以要求客户的操作规范化。
5. 服务器只能被动接受请求,而不能通过“推”的方式把数据主动发送给客户端。
...

为解决这些问题,我们必须用一种全新的开发模式来开改造 B/S。

针对上面几个问题,我分别制定了以下几个步骤来解决:(具体细节就不写了)

1.客户端的脚本及html 必须以“类”或“可复用的组件”的方式存在。

        说明:        面向过程的 JavaScript -> “基于对象”的 JavaScript
                原子型的 dhtml -> 组件模式的 htc, wsc

2.在客户端建立一块公共的存储空间(内存中),即:存在一个全局对象(类似delpehi、c++ builder中的 Application),所有应用页面都共享该对象,并能通过这个对象交换数据或复杂对象。

        说明:        构建 appliation 对象实现上面的功能,该对象的生存期和整个应用保持一致。(注意:这 appliation 是指客户端的,并不是 asp/jsp 中在服务器端的application对象)

3.实现 客户端和服务端 的数据同步机制,减少客户端的数据丢失率,避免对服务器作重复请求。

        说明:        所有类在客户端实现cache,重启IE或重启系统皆不必重新从服务器加载类资源。
                采用 RMI/RPC 方式,实现客户端 的 js 对象 能远程调用 服务器端的一个对象(或应用)的方法,并能保存其状态和数据。对开发者来讲,这种调用机制是透明的。
                代码和数据分离,所有涉及UI的页面均用静态页面形式存在(减轻server负载,且这些静态资源会被IE自动cache,下次不会被重复下载),所有动态交互部分的数据,除了以RMI的方式返回给客户端以外,皆以 XML 形式返回,并在客户端建立cache机制。


4.用 “模式/同步” 的操作方式,代替传统中 “非模式/异步” 的操作方式,从而约束用户的操作步骤,使其规范化。

        说明:        浏览器很多操作默认都是 异步/非模式 方式的(比如:form的提交,window.open,等等)这样可以实现多线程请求数据,会比较快,但有时侯在处理单个流程,却会带来不少麻烦。
                比如:某个操作要等数据提交成功后执行,我们希望能有一个阻塞,待执行完提交后,接下来执行后面的操作,然而异步方式只能用回调的方式实现,中途的各种情况处理的逻辑判断太多,着实麻烦。
                解决办法:对数据请求或发送:用 xmlhttp xmldom 的同步方式调用。
                          对窗体模块的调用:用 showModalDialog 方式调用。

5.启动“扫描线程”侦听服务器的“推”动作,或者利用 ClientSocket 组件(我已封装成一个htc)和服务器进行有连接的通讯。


我下面摘一段客户端的 code,展示一下这种开发模式的代码风格。(比如:xxx.htm)

<html>
<script src="/common/jslib/jsvm.js"></script>
<script>

_import("js.lang.System");        // 可以在一开始就加载一些类或包
_import("js.graphics.*");


function init(){
        try{
               
                ...
                _import("cn.x86.common.user.Login");         // 也可以在过程中动态决定是否要加载一个类或包
                var login = new cn.x86.common.user.Login();

                login.loadInfo();        //远程调用,直接从服务器端得到登录者信息
               
                ...
                var cav = new Canvas(); // 画布类,实现 UI 作图  这里也可以用完整的类名来实现: var cav = new js.graphics.Canvas();
               
                cav.pen.color = "blue";
                cav.outText(100,100,"Out Text");
                cav.pen.color = 'red';
                cav.lineTo(500,300);
                ...

        }
        catch(ex){
                System.out.printError(ex);
        }
}


</script>
<body>
        --  从事 Java 开发工作的人看完后是不是觉得很亲切? --
</body>
</html>



上面设计涉及到的优缺点

缺陷:

1.对developer的客户端的技术功底要求较高。        (可预见)
2.客户端的负载较传统的模式要高。                (可预见)
3.对客户端的浏览器版本及运行环境要求比较规范。        (已确认)       
4.对复杂对象的序列化工作将会增多。                (可预见)

优势:

1.服务器负载,和网络流量能大幅度减少。                (已确认)
2.模块的粒子度,灵活性,复用性将大大增强。        (可预见)
3.模块(类)之间的依赖性清晰,且易维护。        (可预见)
4.整个系统运行性能将提高。                        (适客户端的环境而定)
5.系统开发周期能减少                                (视项目具体情况而定)




整个框架的设计工作已近尾声,我提前把它拿出来让大家讨论一下,看看同志们有什么意见或好的建议,也好修正。
待2.0版本全部完成以后,与大家一起分享!
欢迎有兴趣的同志发表一下观点。

 

java b/s 开发实例

  • 2012年06月23日 10:13
  • 193KB
  • 下载

C/S开发模式与B/S开发模式间的比较

C/S开发模式与B/S开发模式间的比较   一、什么是C/S和B/S    第一、什么是C/S结构。C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体...
  • u013084746
  • u013084746
  • 2014年12月11日 17:04
  • 4206

B/S开发模式简介和与C/S模式的比较

B/S开发模式简介和与C/S模式的比较教育技术教研室秘书 发表于 2005-4-10 17:22:00 B/S开发模式简介和与C/S模式的比较   B/S结构,即Browser/Server(浏览器/...
  • lixiangzhidian
  • lixiangzhidian
  • 2009年03月04日 13:22
  • 2192

对B/S/M,MC/MS架构现实的探索

    B/S架构都是大家熟知的browser/Server模式;而C/S就是Client/Server模式,而我提出的另二种模式都是与模型驱动架构的软件开发与运营相关,B/S/M模式,就是brows...
  • wsimei
  • wsimei
  • 2010年09月13日 15:30
  • 2397

C/S B/S软件模式介绍

为了区别于传统的C/S模式,才特意将其称为B/S模式。认识到这些结构的特征,对于系统的选型而言是很关键的。   1、系统的性能        在系统的性能方面,B/S占有优势的是其异地浏...
  • u013014796
  • u013014796
  • 2013年12月17日 17:13
  • 1408

B/S模式是什么?

    B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是通过IE浏览器来实现的。B/S...
  • jianxiong8814
  • jianxiong8814
  • 2007年05月09日 13:28
  • 8517

关于目前软件开发的两种模式 C/S B/S

软件目前的两种开发模式: B/S的模式与C/S模式 C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统, 如Oracle、Sybase、I...
  • wuxinliulei
  • wuxinliulei
  • 2013年07月26日 01:01
  • 2023

Java B/S开发模式

B/S作为如今最为流行的体系结构模式,也是受到了广大开发人员以及客户的认同,其开发模式也在不断的发展着,在这里主要就Java B/S的开发模式做一番回顾和探讨,也算是自己对于Java B/S开发模式的...
  • iverson79_82
  • iverson79_82
  • 2006年12月13日 10:35
  • 1004

2009系统设计师考试大纲

/*考试科目1:信息系统综合知识  1.计算机软件与网络基础知识      1.1操作系统        操作系统的类型和结构        操作系统基本原理        网络操作系统及网络管理  ...
  • bill2006
  • bill2006
  • 2010年08月11日 16:12
  • 332

B/S 开发和 C/S开发的区别

导读:每天都从应用中心下载很多软件安装尝试,在自己的电脑上也装了很多软件,但是,就出现了一个问题,好比QQ,为什么有了APP,还要有网站应用呢?由此,结合到自己的学习,就衍生出一个问题:C/S 开发就...
  • u013034889
  • u013034889
  • 2015年12月12日 20:30
  • 5567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个关于 B/S 开发模式的讨论
举报原因:
原因补充:

(最多只允许输入30个字)