软件学报
JOURNAL OF SOFTWARE 
1999年 第10卷 第5期 Vol.10 No.5 1999



一种基于Web浏览器的分布式应用系统的构造方法
吕纪竹　王鼎兴　郑纬民　沈美明
摘要　 文章提出了一种利用Web浏览器插入程序(Plug-in)构造紧耦合的分布式应用系统的方法.该 方法适合于开发在因特网上或企业网内部运行的以数据处理为主的分布式应用系统.它充分 利用Web浏览器的功能,使得用户可以利用本地结点计算资源,方便地访问并加工远程结点或 本地结点的数据.文章通过举例说明了构造这类系统的方法.
关键词　Web浏览器,插入程序,分布式应用系统.
中图法分类号　TP311
A Method for Designing Web Browser-based Distributed Application Systems
LU¨Ji-zhu　WANG Ding-xing　ZHENG Wei-min　SHEN Mei-ming
Department of Computer Science and Technology　Tsinghua Universi ty　Beijing　100084
Abstract　 In this paper, a method for designing web-based distributed application systems is proposed in the form of web browser plug-ins. This method can be used to de velop distributed data processing systems for Intranet or Internet. It fully utilizes the functions and the characteristics of web browsers, and thus enable s the users to easily access and process remote or local data by using local com puting resources. The method is illustrated by the design of a supposed applicat ion system.
Key words　Web browser, plug-in, distributed application system.
　　Web浏览器［1］自身包含了许多功能来支持它解释和显示用HTML［2］描述的 主页,如,JPEG和GIF格式的图像文件就是由它内部的程序来显示的.但让它自身包含所有用户 所需的功能是不现实的,因此,不少Web浏览器(如Netscape)采取一种开放的策略,允许用户定 义它自身不支持的某种类型的数据由何种外部应用程序来处理,也允许用户按照一定的方式 来写插入程序(Plug-in),以处理用户自己定义的某种类型的数据.Netscape的插入程序 ［3］中有不少成功的范例,如SGI公司开发的VRML［4］,还有各公司开发的在主页 中播放声音、VEDIO以及显示WORD文档、PowerPoint文档、电子表格等的各种插入程序.Web 浏览器的插入程序一般为轻小型应用,而采用这种形式开发较大的、以数据处理为中心的分 布式应用系统也是可行的.本文将以具有较复杂的作业流程控制、包含多个处理模块且每个 模块都有各自相应的多种输入参数组合、主要面向数据处理的应用系统作为描述Web浏览器 插入程序形式应用系统的数据结构和程序结构的例子,其主要目的是表述一种思想,同时也想 说明控制结构更为复杂的应用系统也是可由这种形式实现的. 
1　Web浏览器插入程序与分布式应用系统
　　Web浏览器对不同的数据类型是通过文件名的后缀来区分的.当用户通过浏览器从网络的 其他结点上、下载或打开本机上某一类型的数据文件时,或下载的主页中包含这类型的数据 文件时,它会根据事先的定义自动地启动相应的插入程序来处理该类型的数据文件；当访问 其他主页时,浏览器会关闭当前主页启动的插入程序.当访问的主页中包含有多个同类型的数 据或打开的多个窗口的主页中含有同一类型的数据时,浏览器会启动相应的同一插入程序的 多个副本来处理该类型数据［3］.Web浏览器的供应商为浏览器插入程序的开发者提 供了软件包,但其功能有限,因而只能开发轻小型插入程序,对于开发大型系统,特别是交互处 理软件是远远不够的.因此,仍然利用普通的软件包,按正常方式开发应用系统;而利用插入程 序的开发软件包开发激发程序,则可以实现应用系统与浏览器的结合.如果已在数据服务器或 拥有用户可处理数据的结点上建立了描述数据体的主页,或者用户知道要访问的数据体文件 所在的结点地址和路径,当用户在安装了插入程序形式的应用系统的结点上访问这些主页,并 选择某个数据体或直接给出地址访问某个数据体文件时,浏览器会在下载所选中的数据体的 同时,根据事先定义自动启动相应的能够处理这种类型数据的应用系统来处理该数据体.应该 说,这是一种特殊的分布式应用系统,因为对同一个用户来说,他可以通过打开两个以上的浏 览器窗口同时访问并处理企业网内1个以上的其他结点的数据,即他所处理的数据可以是分布 的；另一方面,企业网内多个结点上的用户可同时独立地在网上进行类似的访问和处理,从而 使整个网络满足分布式系统的“活动的独立性和松散地耦合的并行性”的特征［5］. 
2　Web浏览器插入程序形式的应用系统的分类
　　这类应用系统主要由两部分组成：① 由1个以上的处理模块组成的Web浏览器插入程序 ；② 分布在网络上的供Web浏览器插入程序处理的数据文件.可根据需要,设计相关的主页, 但并不是必须的.
　　一个较复杂的浏览器插入程序形式的应用系统可以这样分类：(1) 按系统构成形式可分 为两种：① 紧耦合,即拥有多个处理模块,但整个系统只作为一个Web浏览器的插入程序出现 ,只处理一种类型的数据(对浏览器来说)；② 松散耦合,即系统由多个插入程序构成,一个插 入程序对应处理一种类型的数据.(2) 按处理方式可分为3种：① 批量处理方式,即当用户把 编辑好的作业流程提交给应用系统后,系统会根据它自动调用多个处理模块直到完成整个作 业,处理过程中不需要人工干预；② 交互处理方式,用户不提供作业编码,每次只进行一个模 块的处理,处理结束后,可以显示处理后的结果,并根据结果选择用不同的参数重新调用该模 块进行处理或调用其他的模块进行下一步处理.模块本身既可以是交互的,即在处理过程中可 根据其中间处理结果修改其内部参数或改变其运行过程,也可以是批量的;③ 批量交互混合 处理方式,即在用户组织的作业流程中既可以有交互处理模块,也可以有批量处理模块,且任 意两个模块间可以设置检查点.当执行到检查点时,系统会显示处理结果,并允许用户改变处 理流程和模块处理参数,或选择按原流程和参数继续处理下去.限于篇幅,本文将以一个应用 系统作为实例,分别给出开发以上3种处理方式的紧耦合应用系统的方法,包括数据文件结构 、系统程序结构以及用Petri网［6］形式描述的系统运行过程.如何开发松散耦合的 这类应用系统的方法将另文描述. 
3　Web浏览器插入程序形式的紧耦合应用系统的构造
3.1　应用系统的需求描述
　　该系统是对一个实际的数据处理应用系统的抽象和简化.它包含多个处理模块,专门用来处理 某一大类数据,在处理过程中会用到其他类型的辅助数据,模块的调用顺序由用户决定,前一 个模块的输出作为后一个模块的输入.每个模块都有自己能够接受并处理的参数集合,实调用 模块时,所给定的参数值的集合决定了该模块处理数据时所采取的策略和行为.用户可用该系 统特有的编码语言编写作业,提交给系统作批量处理.作业包括一个模块调用序列,它指明了 模块调用的顺序和循环过程,还包括每个模块所需要的各种参数以及要加工的数据集范围等. 应用系统应能够保留、显示数据处理历史；数据集可以通过组织多个作业完成最终的处理. 
3.2　交互处理方式紧耦合应用系统的构造
3.2.1　数据文件的基本结构
　　数据文件的基本结构至少应包括以下几部分.(1) 内部索引.它包括对数据文件本身的结构以 及数据部分的描述.(2) 数据处理历史.它记录了该数据文件中的数据体已经过了哪些模块的 处理,以及调用这些模块时使用的参数.(3) 数据体说明和数据体.数据体说明描述了数据体 本身的类型、结构和大小以及其他各种属性.数据体是应用系统真正要完成处理的对象,它不 一定是同一类型或逻辑上紧密相关的唯一的一块数据体,而可以是多个相对比较独立的数据 体的集合.例如,有的模块在处理主要的数据体时可能要用到其他辅助的数据体,尽管这些辅 助数据体的其他模块不一定用得到,但我们必须保证系统在运行时所调用模块所需的各种数 据都能够从该数据文件中得到.
3.2.2　系统的程序结构
　　系统的程序结构至少应包括以下几部分.(1) 数据文件的输入、输出,负责根据控制部分给出 的要求,按给定格式和给定路径的文件名进行输入、输出.(2) 用户界面显示,包括处理历史 显示,处理前数据体显示,处理参数的输入和编修改辑,处理结果的显示等.(3) 控制和资源管 理.负责插入程序内部各部分程序的协调、根据用户选择调用相应的模块以完成操作和资源 分配.(4) 功能模块集合.模块将根据参数真正完成对数据的加工.
3.2.3　系统的运行过程
　　如图1所示,系统的运行过程用Petri网的形式描述如下.

　　t1: 数据文件被用户在浏览器中从某结点的主页中选中并下载或从本地结点打开;
　　t2: 浏览器根据事先的定义启动相应的插入程序形式的应用系统;
　　t3: 应用系统读入数据文件的索引部分；显示主用户界面;
　　t4: 用户选择显示处理历史;
　　t5: 应用系统根据索引部分从数据文件中读出并显示处理历史;
　　t6: 用户选择显示数据体本身(以图像或数值形式显示);
　　t7: 应用系统根据用户选择的范围及索引部分读出数据体中的部分数据;
　　t8: 应用系统调用数据体显示程序,并将数据及相应显示参数传递给数据体显示程序;
　　t9: 数据体显示程序显示数据体;
　　t10: 用户选择处理模块；
　　t11: 显示被选择模块的参数输入界面；
　　t12: 用户输入参数并选择开始执行；
　　t13: 模块输入数据并开始处理数据；
　　t14: 显示中间处理结果；等待用户选择程序走向；
　　t15: 用户修改内部参数,重新进行某一步骤的处理；
　　t16: 用户认可结果,进行下一步骤的处理；
　　t17: 模块处理输入数据完毕；将结果输出到用户指定的文件中去；
　　t18: 数据未全部处理完(当受内存限制不能一次将所有要加工的数据输入时);
　　t19: 数据全部处理完;将该模块名及所选参数写入处理历史；修改数据文件中的内部索 引；
　　t20: 用户选择结束；
　　t21: 退出应用系统.
3.3　批量处理方式紧耦合应用系统的构造
3.3.1　数据文件的基本结构
　　数据文件的基本结构与交互处理方式相同.
3.3.2　系统程序结构
　　系统程序结构至少应包括以下几部分.(1) 数据文件的输入输出.(2) 用户界面显示.包括作 业流程和模块参数的输入、修改编辑以及处理结果的显示.(3) 数据文件结构分析.通过读取 并分析数据文件中的内部索引,建立相应的数据结构以及便于从数据文件中获取各部分数据 的索引表格.(4) 作业流程分析.根据用户输入的作业流程,建立相应的数据结构和生成作业 流程控制中要用到的一些表格.(5) 模块参数分析.在系统运行过程中,根据用户输入的作业 流程(包括参数)分析当前运行模块所需的输入参数,并按约定生成模块可识别的参数表格.(6 ) 系统控制.负责在系统运行过程中协调和控制各部分的运行以保证系统按照作业流程完成 作业.(7) 系统存储管理和分配.负责系统的存储分配和管理,包括不同模块间的数据传递或 数据共享的管理.(8) 功能模块集合.当模块被系统控制部分根据作业流程需要调用时,根据 参数分析部分生成的参数表格对要加工的数据进行相应的处理.
3.3.3　系统的运行过程
　　如图2所示,系统的运行过程用Petri网的形式描述如下.

　　t1: 数据文件在用户在浏览器中访问的某结点的主页中出现,或在显示的文件目录中被选 中下载,或从本地结点打开;
　　t2: 浏览器根据事先的定义启动相应的插入程序形式的应用系统;
　　t3: 应用系统读入数据文件的索引部分；
　　t4: 显示主用户界面;
　　t5: 用户选择显示处理历史;
　　t6: 应用系统根据索引部分从数据文件中读出并显示处理历史;
　　t7: 用户选择显示数据体本身(以图像或数值形式显示);
　　t8: 应用系统根据用户选择的范围及索引部分读出数据体中的部分数据;
　　t9: 应用系统调用数据体显示程序,并将数据及相应显示参数传递给数据体显示程序;
　　t10: 数据体显示程序显示数据体;
　　t11: 用户选择编辑作业流程；
　　t12: 显示作业流程编辑程序的输入界面；
　　t13: 接受用户输入或选择一系列模块名和每个模块的参数以及模块的执行顺序；用户确认 后选择开始执行；
　　t14: 系统按照用户输入建立内部控制所需的各种表格,并进行系统资源的申请和分配;
　　t15: 由输入模块将要加工数据放到模块间的数据交换区;将执行模块指针指向第1个模块;
　　t16: 执行模块指针所指向的模块,并将输入参数和模块间数据交换区地址传递给该模块;
　　t17: 模块处理数据交换区的数据完毕;输出结果数据到模块间数据交换区;
　　t18: 当前模块不是作业流程最后一个模块,则指针指向流程中下一个模块;
　　t19: 当前模块是作业流程中最后一个模块,则调用输出模块将模块间交换区的数据输出到用 户指定的文件中;
　　t20: 仍有数据未处理完(当数据交换区受内存所限放不下所有要加工的数据时);
　　t21: 整个作业处理数据完毕；将该作业编码流程（可包括所选参数）写入处理历史；修改 数据文件中的内部索引；
　　t22: 用户选择结束；
　　t23: 退出应用系统.
3.4　混合处理方式紧耦合应用系统的构造
3.4.1　数据文件的基本结构
　　数据文件的基本结构与以上两种处理方式系统相同.
3.4.2　系统的程序结构
　　系统的程序结构除包含批量处理方式的系统所包含的内容外,还应包括一个特殊的内部模块 ,即检查点模块.该模块被运行时,要根据系统传递给它的信息完成两种不同的功能：(1) 当 被按照正常顺序调用时,它将以图形或其他适当方式显示前一个模块处理后放在数据交换区 中的数据结果,并将当前的数据结果保留在一个临时缓冲区或临时文件中,当作业中设有多个 检查点时,处在作业中不同位置上的检查点程序必须将数据结果保留在不同的临时缓冲区或 临时文件中,然后让用户选择作业走向,并将用户的选择通知系统,系统则根据用户选择或重 新修改作业流程或参数,并按新的流程或参数调用模块处理,或继续按原流程和参数继续处理 ,或退出作业等；(2) 当用户选择从某个检查点开始重新处理时,它将原来保留在临时缓冲区 或临时文件中的数据恢复到模块间的数据交换区中去.另外,无论是交互处理模块还是批量处 理模块,与系统或其他模块之间的接口必须一致,它们之间的区别仅在于是否具有内部交互处 理过程.
3.4.3　系统的运行过程
　　如图3所示,系统的运行过程用Petri网的形式描述如下.

　　t1: 数据文件在用户在浏览器中访问的某结点的主页中出现,或在显示的文件目录中被选 中下载,或从本地结点打开;
　　t2: 浏览器根据事先的定义启动相应的插入程序形式的应用系统;
　　t3: 应用系统读入数据文件的索引部分；
　　t4: 显示主用户界面;
　　t5: 用户选择显示处理历史;
　　t6: 应用系统根据索引部分从数据文件中读出并显示处理历史;
　　t7: 用户选择显示数据体本身(以图像或数值形式显示);
　　t8: 应用系统根据用户选择的范围及索引部分读出数据体中的部分数据;
　　t9: 应用系统调用数据体显示程序,并将数据及相应显示参数传递给数据体显示程序;
　　t10: 数据体显示程序显示数据体;
　　t11: 用户选择编辑作业流程；
　　t12: 显示作业流程编辑程序的输入界面；
　　t13: 接受用户输入或选择一系列模块名、模块的执行顺序、每个模块的参数以及设置检查 点等；用户确认后开始执行；
　　t14: 系统按照用户的输入建立内部控制所需的各种表格,并进行系统资源的申请和分配;
　　t15: 由输入模块将要加工的数据放到模块间数据交换区;将执行模块指针指向第1个模块;
　　t16: 执行模块指针所指向的模块,并将输入参数和模块间数据交换区地址传递给该模块;
　　t17: 模块开始处理数据；
　　t18: 交互处理模块显示中间处理结果；等待用户选择程序走向；
　　t19: 用户修改内部参数重新进行某一步骤的处理；
　　t20: 用户认可结果,进行下一步骤的处理；
　　t21: 非交互(批量）处理模块根据给定的参数处理数据；
　　t22: 模块处理数据交换区的数据完毕;输出结果数据到模块间数据交换区;
　　t23: 当前模块不是作业流程最后一个模块,则指针指向流程中下一个模块;
　　t24: 当前模块是作业流程中最后一个模块,则调用输出模块,将模块间交换区的数据输出到 用户指定的文件中;
　　t25: 仍有数据未处理完(当数据交换区受内存所限放不下所有要加工的数据时);
　　t26: 整个作业处理数据完毕；将该作业编码流程（可包括所选参数）写入处理历史；修改 数据文件中的内部索引；
　　t27: 用户选择结束；
　　t28: 退出插入程序形式的应用系统.
4　结束语
　　本文通过举例,从逻辑上说明了Web浏览器的插入程序并非只能用于开发轻小型程序,对于开 发较大控制、较复杂的应用系统也是可行的.一个普通的应用系统与Web浏览器结合在一起扩 展了应用系统的功能和应用范围,并且由于企业内部网内多个用户可以同时在多个结点上访 问和处理其他结点或本地的数据,从而使整个企业网构成了一个分布式的数据处理系统.考虑 到企业内部网的网络带宽的因素,这种浏览器插入程序形式的应用系统适用于数据量相对于 计算量较小的应用领域.另外,在实际使用时只需要第1次将原始数据从其他结点下载过来,输 出时将结果存于本地结点文件,下次组织新的作业时就可以从本地结点打开文件对数据进行 进一步处理. 
　
作者吕纪竹,1962年生,博士生,高级工程师,主要研究领域为并行 /分布处理技术.
王鼎兴,1937年生,教授,博士生导师,主要研究领域为并 行/分布处理技术.
郑纬民,1946年生,教授,博士生导师,主要研究领域为 并行/分布处理技术.
沈美明,女,1938年生,教授,博士生导师,主要研究领 域为并行/分布处理技术.
本文通讯联系人:吕纪竹,北京 100084,清华大学计算机科学与技术系
作者单位：（清华大学计算机科学与技术系　北京　100084）
　　　　　E-mail: ljz888@mail.cic.tsinghua.edu.cn
参考文献
　[1]　Yuval Fisher. Spinning the Web--a Guide to Serving Information on the World Wide Web. New York: Springer-Verlag, 1996
　[2]　Tittel E, Gaither M, Hassinger S et al. Foundations of World Wide Web Programming with HTML & CGI. Foster: IDG Books Worldwide, 1995
　[3]　Plug-in Guide. WWW Documentation. http: ∥developer.netscape.com/library/d ocumentation/communicator/plugin/index.htm
　[4]　Tilton E, Steadman C, Jones T. Web Weaving: Designing and Managing an Effec tive Web Site. Reading, MA: Addison-Wesley Developers Press, 1996
　[5]　苏运霖.分布式系统与分布式算法.广州：暨南大学出版社,1995
(Su Yun-lin. Distributed System and Distributed Algorithm. Guangzhou: Ji'nan Un iversity Press, 1995)
　[6]　卢开澄,卢华明.图论及其应用.北京:清华大学出版社,1995
(Lu Kai-cheng, Lu Hua-ming. Graph Theory and Its Applications. Beijing: Tsingh ua University Press, 1995)
本文1998-02-13收到原稿,1998-05-19收到修改稿
