1、基于透明适配方法的互联网协同软件第 1 页 共 65 页装订线基于透明适配方法的互联网协同软件软件工程 温宏凯 指导老师 贾金原 王立峰【摘要】 单用户应用程序已经渗透到我们日常的工作和生活中。将单用户应用程序改造成为支持多用户协同工作的应用程序将大大提高应用程序的使用价值。作为这一领域内的新方法,透明适配方法及其相关技术能在不改变单用户应用程序源代码的情况下有效地将其转化为多用户协同程序。本文对透明适配方法进行了详细的阐述,介绍了其原理,思路和实现技术,并在此基础上做出设计,构建了系统原型,对其进行评估和测试,并结合实现原型系统中所遇到的问题,对进一步扩展和改进这一方法提出了新的思路。【关键
2、词】 应用程序共享 多用户实时协同工作 操作转换 透明适配【Abstract】 Single-user interaction computer application are pervasive in our daily lives and work. Leveraging single-user applications for supporting multi-user collaboration has the potential to significantly improve the value of applications. As a newly introduced meth
3、od, Transparent Adaptation approach and associated supporting techniques can transform a single-user application to multi-user collaborative application without changing its source code. In this thesis, we introduced the theory and technique of this approach, built a prototype, evaluated and tested
4、the prototype. Moreover, we promote new ideas to improve the usability and availability of this approach based on the implementation experiences.【Keywords】 Application sharing Muti-user real-time collaboration Operational TransformationTransparent Adaptation基于透明适配方法的互联网协同软件第 2 页 共 65 页装订线毕业设计(论文)原创性
5、声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文) ,是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日 期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索
6、与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 基于透明适配方法的互联网协同软件第 3 页 共 65 页装订线学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的
7、规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日基于透明适配方法的互联网协同软件第 4 页 共 65 页装订线目录1 引言 .41.1 研究背景 .41.1.1 概述 .41.1.2 已有成果 .41.1.3 新的方法和技术 .51.2 研究和设计目标 .51.3 研究价值与应用价值 .62 数据层面的适配技术 .72.1 基本的操作转换技术 .7
8、2.2 树状线性结构 .72.2.1 定义和性质 .72.2.1 寻址方式 .82.3 扩展后的操作转换技术 .82.3.1 操作间的关系判断策略 .92.3.2 根据地址对判断操作间的关系 .103 应用层面的适配技术 .123.1 Microsoft Excel 工作簿的数据结构 .123.1.1 概述 .123.1.2 从用户角度看 Excel 工作表 .123.1.3 从编程接口角度看 Excel 工作表 .133.2 树状线性结构的映射 .143.2.1 概述 .143.2.2 工作表(Worksheet)对象序列的映射 .153.2.3 工作表内部对象的映射 .153.2.4 对象
9、内部数据的映射 .163.2.5 总结 .174 操作层面的适配技术 .184.1 封装和过滤用户操作 .184.1.1 概述 .184.1.2 有效操作 .184.1.2 元操作 .194.2 截获用户对特定应用程序的输入 .204.2.1 概述 .204.2.2 应用程序级截获 .204.2.3 操作系统级截获 .214.2.4 需要说明的问题 .234.3 为特定应用程序定义有效操作 .234.3.1 概述 .234.3.2 Insert 方法组 .244.3.3 Delete 方法组 .244.3.4 Update 方法组 .244.4 有效操作和应用程序间的透明适配 .254.4.1
10、 概述 .254.4.2 由 API 生成有效操作 .254.4.3 将有效操作在应用程序上重现 .284.4.4 透明适配层的建立 .284.5 有效操作和元操作间的透明适配 .29基于透明适配方法的互联网协同软件第 5 页 共 65 页装订线4.5.1 概述 .294.5.2 将有效操作转化为元操作 .294.5.3 将元操作转化为有效操作 .314.5.4 透明适配层的建立 .324.6 操作适配技术的层次关系 .335 系统架构设计和原型实现 .345.1 系统概述和分层 .345.1.1 概述 .345.1.1 系统分层设计 .345.2 单用户应用程序 .355.3 通用协同引擎的
11、功能和应用 .355.3.1 概述 .355.3.2 存在形式和应用方式 .355.4 协同适配层的模块设计与功能 .365.4.1 概述 .365.4.2 API-有效操作适配器 .365.4.3 有效操作-元操作适配器 .365.4.4 本地操作处理器 .365.4.5 远程操作处理器 .375.4.6 简单示例分析 .375.5 服务器端和网络通讯模块的设计和功能 .395.5.1 概述 .395.5.2 通讯技术 .405.5.3 通讯模块的多线程架构 .405.5.4 Excel 文档文件的下载和上传 .415.5.5 有效操作的传递策略 .426 系统评估和性能分析 .436.1
12、系统评估与讨论 .436.1.1 透明适配方法的评估和分析 .436.1.2 原型系统开发过程的评估和分析 .436.2 系统性能分析 .466.2.1 概述 .466.2.2 客户端程序性能分析 .476.2.3 网络通讯性能分析 .487 结论与展望 .527.1 结论 .527.2 展望 .53参考文献 .54谢辞 .55基于透明适配方法的互联网协同软件第 6 页 共 65 页装订线1 引言1.1 研究背景1.1.1 概述计算机支持的协同工作(CSCW)这一概念是在 1984 年由 MIT 的 Irene Grief 和 DEC 的 Paul Cashman 两位研究员在描述他们所组织的
13、有关如何利用计算机来支持不同领域和学科的人们共同工作的研究课题时首次正式提出的。它的研究主要定位于协同工作系统的建设、群体工作方式研究和支持群体工作的相关技术研究、应用系统的开发等。CSCW 这一理念是无所不在,它的研究与发展必将极大的影响和改变人们的工作和生活方式。在国际上,CSCW 的研究经过 20 余年的发展,已经具有相当规模和影响力。大量国际知名高校、企业、研究机构,都加入到 CSCW 的研究中来,并且大量研究成果已经得到了实际应用。例如微软的 Office System,Exchange Server,IBM 的 Lotus Notes 都是得到广泛使用的协同软件,凝集着 CSCW
14、研究的大量成果。信息资源共享则是当前的又一个热门话题。当今世界信息化程度与日俱增,我国也正在加快信息化建设的步伐。有效的信息共享机制可以消除信息孤岛,提高信息化效率,减少不必要的重复投资和建设。当前,在政府决策、交叉学科研究、前沿学科的突破性进展、高等教育质量的提高、企业技术创新活动中,无不显示出信息资源共享的重要性。传统的信息共享研究主要集中在数据库、计算机网络、操作系统等领域,实现数据、文件及设备资源的小范围的简单共享。近年来,大量新兴技术,例如网格技术,Web 服务技术,P2P 技术,语义与知识处理技术、XML 等,则致力于更广泛,更普遍,更通用的信息共享,并且取得了巨大成就。CSCW
15、与信息共享这二者都是 IT 领域中对我们整个社会的发展有着深刻影响的主题。同时,这两个领域又有着密切的联系。在协调不同小组及个人的工作时,信息资源在一定程度上的共享是协同工作的前提,要实现不同对象之间的协同工作,首先就必须在对象之间共享相关资源;同时,为了做到信息资源的有序共享及科学管理,共享者之间的协同也是必须的。单用户交互应用已经渗透到我们的日常生活和工作中,与之相比,可供选择的多用户协作应用程序是非常有限的。现有的大多数商业应用都是设计成单用户的,而未来的应用设计很可能仍将以单用户为中心。多年来,人们梦想研究出将单用户应用透明地转换为多用户应用的技术。这种技术不但能提高现有单用户应用软件
16、的价值,可用性和可扩展性,更能显著地消除因为重复设计和重复开发所带来的无谓成本。1.1.2 已有成果使用现有的单用户软件来实现多用户实时协同的想法在很早之前就被提出。早期的系统有Microsoft NetMeeting 和 SunForum 等等。诸如此类的系统都是提供了一种通用的共享应用程序的环境,而单用户软件在这样一种环境中被多个用户所实时使用。而这种通用的应用共享系统采用集中的体系结构(Centralized Architecture)2 7,这也就意味着为了达到一致性要求,这类应用程序必须采用一种顺序化的交互方式,即同一时间只能有一个用户操作被共享的基于透明适配方法的互联网协同软件第
17、7 页 共 65 页装订线应用程序。该架构的优点在于系统结构简单,并发控制的实现较为容易。但与此同时,这样的系统存在着严格的 WYSIWIS(What You See Is What I See)要求1 7、响应能力差以及不能有效地使用网络资源等多方面的问题。最终这种体系结构被研究者认为是不灵活的,并且不能适应并发操作和多用户自由交互的要求。为了解决这种集中式结构带来的问题,一些早期研究原型,如 VConf,Dialogo 等采用复制的体系结构(Replicated Architecture)5 6,即在整个协同系统中,单用户应用程序在每个客户端均有实例存在。该结构有助于实现好的响应性、不严格
18、的 WYSIWIS 和有效的网络使用,并且支持并发协作。但与此同时,这类系统面临一致性维护、外部资源管理和新加入者协调等方面的问题。这些技术障碍多年来阻滞了这一体系架构的发展,甚至有些研究人员开始认为复制结构是一个错误的方法9。随着软件行业的规范和设计思路的拓展,组件化思想逐渐深入人心。有研究者提出了一种新的复制式体系结构:松散式 JAMM(Java Applets Made Multiuser) 。这种结构的精髓在于组件替换的思想,即利用应用程序级别的语义信息,在运行时将单用户应用程序的接口自动地替换成多用户协同应用的接口。这种方案能有效地提高本地程序的响应速度,提高网络利用效率,于此同时还
19、能维持松散的 WYSIWSI。但这种方案的局限性也是巨大的:为了实现上述目标,松散式 JAMM 要求底层平台对于运行时模块替换,动态绑定,以及截获和重现用户输入功能的支持。但是遗憾的是,能满足松散式 JAMM 要求的单用户应用程序数目不多而且不够流行。1.1.3 新的方法和技术近年来,一种新的透明适配方法1出现,这种方法宣称可以将未经定制的商业性的单用户软件转换到多用户的实时协同应用,同时不改变现有软件的源代码11 12。研究者将这种方法应用在文字编辑软件(MS Word)和幻灯片制作软件(MS PowerPoint)上,并取得了一定的成功。这种方法为我们研究和开发基于互联网的协同软件系统提供
20、了新的思路。因此,这一方法既不是在操作系统级别上对所有应用程序进行协同(例如 NetMeeting) ,也不是专门针对一个接口库进行的组件替换(例如 JAMM) ,它是在单用户应用程序与协同控制之间加入了一个恰当的适配层,使单用户应用程序能透明地转化为多用户协同应用程序。由于这一方法对单用户应用程序完全透明,基于透明适配的协同应用程序支持并发工作、具有好的响应能力和松散的 WYSIWIS,同时可以避免复制共享系统所面临的大多数问题1 13 14。透明适配方法的主要基础在于单用户应用程序的应用程序编程接口(API) 。它的思路是使用这些 API 来截获用户输入,并对多个用户的操作进行并发控制,同
21、时将其他用户对应用程序的操作回显到本地。但这一方法仍面临一些问题和局限,需要进一步检验和完善。尤其是针对具有复杂数据结构和多种对象类型的大型应用程序,如何扩展和修改透明适配方法使之适应更多,更复杂应用程序的需要,仍需要进一步深入的研究,而这也正是本文的目的所在。1.2 研究和设计目标1、本文选择主流应用软件 Microsoft Excel 为研究载体,采用透明适配方法将其转化为一个基于互联网的多用户实时共享协同系统原型,并使其支持多用户并发工作,具有较好的响应能力和理想的用户体验,同时对这一原型系统进行测试和评价。2、本文深入分析透明适配方法中的技术关键,讨论实现对单用户软件“透明地”转化为多
22、用户实时协同软件的一般化的技术、一般化的构建步骤,在上一个目标完成的基础上,进行归纳和总结,提出一套标准规范,尝试提出实现一个低侵入性架构的方案,并分析其得到推广的基于透明适配方法的互联网协同软件第 8 页 共 65 页装订线可行性。 1.3 研究价值与应用价值CSCW 的研究具有重大现实意义:通过建立计算机支持的协同工作环境,改善人们进行信息交流和共享的方式,消除或减少人们在时间和空间上的分隔和障碍,提高群体工作质量和效率,从而提高企业、机关、团体乃至整个社会的整体效益和人们的生活质量。而信息资源共享正在成为一种趋势,正在逐渐融入社会生活的方方面面。信息资源的共享,特别是科学数据和资源的共享
23、,正得到政府有关部门的广泛关注和大力支持。当前,我国在 CSCW 与信息共享的研究方面仍存在着严重分离的现象,缺乏 CSCW 和信息共享的结合研究。尤其是在基于信息共享的复杂 CSCW 应用领域,相关理论、模型和关键技术等还几乎是一片空白。而有效发挥单用户交互式应用软件在多用户实时协同环境中的推动作用,既是一种机遇,更是一项挑战。此项技术一旦成熟,无数的单用户应用软件可以透明化地转变为协同工具,能够极大地增加可用的协同应用软件的数量。对于软件的供应商来说,这意味着可以增加产品的价值,延长现有产品的生命周期,以增加利润。对于软件的消费方,这意味着他们不仅能够进行合作,而且可以使用他们所熟悉的应用
24、软件。而作为研究者,我们可以提出一套标准,将一般单用户软件和操作系统的接口进行规范化,甚至能够实现一种无侵入性或低侵入性的架构(Framework) ,将主流单用户软件纳入其中,完美地实现对多用户实时协同工作的支持,而这些都具有巨大的应用前景和市场价值。特别地,在图形图像和多媒体设计领域,这种多人协同共作的方式更有实际意义和现实价值。相对于单纯的办公软件而言,这类主流开发环境更加复杂和多元化,同时所开发项目的规模也更加巨大,这就意味着多人同时展开工作能有效地提高生产率,多人协作这样一个思维碰撞的环境也更能激发创作的灵感。基于透明适配方法的互联网协同软件第 9 页 共 65 页装订线2 数据层面
25、的适配技术2.1 基本的操作转换技术在任何一种多用户协同系统的实现中,数据一致性控制都是一项核心的技术。经过多年的发展,针对数据一致性控制的解决方案也层出不穷,而操作转换技术则是其中比较合理的解决方案。操作转换技术本身是为文本编辑器而设计的,那么为了将其应用到数据结构更加复杂的应用程序中,势必要对其进行扩展。操作转换技术高度的可扩展性就成为我们选择它作为数据一致性控制解决方案的重要原因。操作转换技术可以用以下例子来解释:在一个复制结构的协同应用程序中,两个用户(用户 1 和用户 2)同时操作一份文本文件,该文本文件中只有“abc”这样一个字符串。用户 1 向文件起始位置插入一个新字符“x” ,
26、那么该操作可以被描述成用户 1 在“0”这个位置插入了字符“x” 。那么在此之后文档应变成“xabc”。但在这一操作未被发送到用户 2 之前,用户 2 仍然认为文件内容为“abc”并希望删除“c”这个字符,该操作可以被描述为用户 2 在“2”这个位置删除了字符“c” 。在此我们假设用户 1 的操作先于用户 2 的操作,那么当用户 2 的操作被传送到用户 1 处的时候,倘若我们仍简单地认为用户 2 在“2”这个位置删除了字符“c” ,那么由于文件内容已经变为“xabc” ,我们就会错误地把字符“b”删除,这就造成了数据的不一致性。那么,为了保证数据一致性,我们必须将传递过来的用户 2 的操作转换
27、为在“3”这个位置删除字符“c” ,才能保证两用户共享数据的一致性。总的说来,基本的操作转换技术的核心就在于将传递过来操作信息的参数根据各个不同协同用户的操作进行规整和转换,以使别处传递过来的用户操作信息能够正确地作用到当前状态下的文档中,进而达到保证协同用户间数据一致性的目的。为了有效地实现数据一致性,操作转换技术实现了两个基本模型:数据模型和操作模型。数据模型定义了协同系统中共享数据的寻址方式,即数据是如何被排列和组织起来的;操作模型则定义了一系列基本的操作,这些操作是一切复杂操作的基础,因此也被称为元操作。在上述基本操作转换技术中,数据模型即为一个线性的地址空间,所有的对象都按照顺序排列
28、在这个地址空间中供用户操作;而操作模型则由两个元操作组成:插入操作和删除操作。2.2 树状线性结构2.2.1 定义和性质基本的操作转换技术能够有效地实现在一个线性地址空间内的数据一致性,对于更为复杂的文件结构,如多个地址空间或地址空间之间具有层次结构或继承关系的文件结构则无能为力。为了应对这种情况,研究者对操作转换技术进行扩展,将它的应用范围从普通文本文件扩展到基于 XML 规范的文件上去。经扩展后的操作转换技术,原本的一维线性地址空间被扩展成了一组具有相互关联的线性地址空间。这些地址空间的相互关联类似于 XML 文件中的节点间的关系,即构成一个树型结构(见图 2.1) 。基于透明适配方法的互
29、联网协同软件第 10 页 共 65 页装订线. . . . .线性空间 :线性空间 :. . . . . . .线性空间 :线性空间 :. . . . . . .线性空间 :线性空间 :. . . . . . .线性空间 :线性空间 :. . . . . . .线性空间 :线性空间 :. . . . . . .线性空间 :线性空间 :. . . . . . .图 2.1 扩展后的地址空间:树状线性结构由图 2.1 我们可以看出,扩展后的操作转换技术拥有一个树形的地址空间,树的每一个节点都是一个域,域中有多个一维线性空间。父节点中线性地址空间的每一个元素都对应了子节点中的一个域。这样类似于 XM
30、L 文件的结构让我们能方便有效地找到整个数据模型中的任何一个对象。特别需要提出的是,当一个对象没有子节点,即对象中不具有下一级结构时,我们认为其为终结对象,反之我们认为它为中间对象,即对象中仍有指向下一级对象的链接。值得注意的是,这种扩展之后的数据模型仅仅表示了被操作对象地址之间的关系,而不是对象之间的关系。在一个复杂的应用程序中,对象之间的关系可能会更加复杂,但对于操作转换技术而言,我们只需要关注对象地址间的关系就足以满足需求。更进一步说,两个对象被认为是临近的,并不一定意味着这两个对象实际的位置关系临近或是在内存中的位置临近,而是仅仅说明对于操作而言,这两者的地址是接近的。2.2.1 寻址
31、方式在扩展后的树形地址空间中,每个节点中的任何一个对象都可以用一个唯一的地址对来描述。其中 n 表示该节点中的某个一维线性空间的地址,而 p 则表示该对象在这个一(,)np维线性地址中的位置。那么,为了描述树形地址空间中的任意一个对象,我们需要一组这样的地址对来描述对象的地址,在这里,我们用一个 vector 来盛放这样一组地址:01(,),.,(),.()ikvpnpn其中 表示了第 层的地址。依照这样的方式,自根节点开始寻址,(,)iviki遍历整个 vector,总能找到目标对象。2.3 扩展后的操作转换技术为了使操作转换技术能应用于复杂的文件数据,我们需要将操作操作转换技术扩展到具有树状线性结构特征的文件数据上。前文提到,操作转换技术有两个重要模型,数据模型和操作模型,而由上文所述,我们可以将数据模型由一维线性结构扩展为树状线性结构,而操作模型也要做相应的更改以适应数据模型的变化。