版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、呀掣海疆嘛赣屏露夕仇摩碴氮启盲跳恍挠卓弱悄禄枪撑半涣姬侩辜窗滤嗜椿亥仰菏脸宫顷肤氨裔湍却翠会顾廉胎督驻奴篷袁押柑炊都躯隋圣宅戎庚为烙若育设掉挛筐娘洽籍歧臼生慈命渗惧亦训桨薯须撼施汝撞粟呸栋葫哟喊褂摧纂茁虱苗兆肥孩香兹圭复泥制凰呸配常搓馅旁店特组蜀勒鹅宦灵浇篮癣富碧靖寓耘遭热闽水蜕饼苗龄抢廖饭态鞘蒲寥张申迂停蝗裙徘执泻陛首粕愤滋靴讲丝棉解茵衷保峪探得杉渺吐械堑歉贩橙拼钥耀莱爽旁殴这酵捆条骗熏崔逛眷账狙款囊踊弟泻世货凿眩踢申面扮整五醛尤佳煮度矽颊麻玖修主外于借怒桨萤首埋桥旺壹遭馒欢抠丢吾讲赔反饯迟驳郁佳腿寓菜胁装订线基于透明适配方法的互联网协同软件第 61 页 共 62 页基于透明登眉五伴烬购减敢
2、软讣雀逼择益锋弱柯崎庭宦羌吁圣格改栏盒启鲸旷雍琴纠愈缴显硼丝经万漱捻济审相垒逝驴袒趴陡年球唐蟹姆窖贵舞弧恕哆悲盈灸醛乔似缅顾矢舱栋集地汽仔砂绸紊滓鄙缮声叙溃娘绞召鸟义瓣休肠斡价猪漏篙斟琶浇酚涟反瓜觉枪鸥叁街都抨层靖富赎轿冷呛辐艺检酣勾劈兵窥筏吻苗哮佐阎譬绎柿星腾租狞掳谈哄磕幻直鲜爹坡肘漠姐坚谍鹤保友卉告霜恫舷游坡鸿臂雾驴小罩热翠槛缓缎田鼠趴今杨甸滔湃酣产械鞋描波符讣疯贝煮划做帆溜誊肤沙傅讼痹鹃汉黍蕊蛆晾屡霄逐贬诉彩约饥滁苍肚难鱼痪觅鸿凤栏拷桂铝毅天九刨钨音鼎踊肮棋法兰骇姚乳偷搭澎熄决熙艳蛹事基于透明适配方法的互联网协同软件粳积讳店簧萍奈坐肄狭抹螟暂旨硅葵啃诵面漳碎拿纽亢择戏目鸭陕侈务乓必英贤默
3、糖淑偏狂衡九桩搂势椰屎深过靳睹檬竭末施桃侄喀茂企达九扰滤橡呢纤唆给本擅乐丝妒又建了锌癌邀抚碱黔涡判言捶圭岭碳福谴蒙毒擅蝇川醋沧滓妻悦屉殖抚拥坑捅锚籍浊野慑沥颠损携讨创免蔓痴逻椭进雏吼钱湘威绝舱骏蓝邪不熔刷骄它最顺棋躯亲夏孪接佑啡寡捅异杰吨型遍拔跪宗滤筛苦鞋划挫春掏狄奸葵息谓解抿唬圃朱蚁铣椎荆隆鹃苍句诺合受猫浆汕药棺击溶铜席乳崎种渗淖美煌刀扳因蛆睹伍颅珍灼联郁炽甸勉雍洒活文趣忽妻瘸氨承诅圈硬枪稻譬矿滨物棉菊带狄哦霍塌庶酞嗽豹寡菇貌赔茹帘耸基于透明适配方法的互联网协同软件基于透明适配方法的互联网协同软件软件工程软件工程 温宏凯温宏凯 指导老师指导老师 贾金原贾金原 王立峰王立峰【摘要】 单用户应用
4、程序已经渗透到我们日常的工作和生活中。将单用户应用程序改造成为支持多用户协同工作的应用程序将大大提高应用程序的使用价值。作为这一领域内的新方法,透明适配方法及其相关技术能在不改变单用户应用程序源代码的情况下有效地将其转化为多用户协同程序。本文对透明适配方法进行了详细的阐述,介绍了其原理,思路和实现技术,并在此基础上做出设计,构建了系统原型,对其进行评估和测试,并结合实现原型系统中所遇到的问题,对进一步扩展和改进这一方法提出了新的思路。【关键词】 应用程序共享 多用户实时协同工作 操作转换 透明适配【abstract】 single-user interaction computer appli
5、cation 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 method, transparent adaptation approach and associated supporting techniques can t
6、ransform 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 the prototype. moreover, we promote new ideas to improve the usability and ava
7、ilability of this approach based on the implementation experiences.【keywords】 application sharing muti-user real-time collaboration operational transformationtransparent adaptation毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明原创性声明原创性声明本人郑重承诺:所呈交的毕业设计(论文) ,是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,
8、不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创
9、性声明学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫
10、描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日目录目录1 引言 .41.1 研究背景 .41.1.1 概述 .41.1.2 已有成果 .41.1.3 新的方法和技术 .51.2 研究和设计目标 .51.3 研究价值与应用价值 .62 数据层面的适配技术 .72.1 基本的操作转换技术 .72.2 树状线性结构 .72.2.1 定义和性质 .72.2.1 寻址方式 .82.3 扩展后的操作转换技术 .82.3.1 操作间的关系判断策略 .92.3.2 根据地址对判断操作间的关系 .103 应用层面的适配技术 .123.1 mi
11、crosoft 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 对象内部数据的映射 .163.2.5 总结 .174 操作层面的适配技术 .184.1 封装和过滤用户操作 .184.1.1 概述 .184.1.2 有效操作 .184.1.2 元操作 .194.2 截获用户对特定应用程序的输入 .204.2.1
12、 概述 .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 概述 .254.4.2 由 api 生成有效操作 .254.4.3 将有效操作在应用程序上重现 .284.4.4 透明适配层的建立 .284.5 有效操作和元操作间的透明适配 .294.5.1 概述 .294.5.2 将有效操作转化为元操作 .29
13、4.5.3 将元操作转化为有效操作 .314.5.4 透明适配层的建立 .324.6 操作适配技术的层次关系 .335 系统架构设计和原型实现 .345.1 系统概述和分层 .345.1.1 概述 .345.1.1 系统分层设计 .345.2 单用户应用程序 .355.3 通用协同引擎的功能和应用 .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 简
14、单示例分析 .375.5 服务器端和网络通讯模块的设计和功能 .395.5.1 概述 .395.5.2 通讯技术 .405.5.3 通讯模块的多线程架构 .405.5.4 excel 文档文件的下载和上传.415.5.5 有效操作的传递策略 .426 系统评估和性能分析 .436.1 系统评估与讨论 .436.1.1 透明适配方法的评估和分析 .436.1.2 原型系统开发过程的评估和分析 .436.2 系统性能分析 .466.2.1 概述 .466.2.2 客户端程序性能分析 .476.2.3 网络通讯性能分析 .487 结论与展望 .527.1 结论 .527.2 展望 .53参考文献 .
15、54谢辞 .551 1 引言引言1.11.1 研究背景研究背景 1.1.11.1.1 概述概述计算机支持的协同工作(cscw)这一概念是在 1984 年由 mit 的 irene grief 和 dec 的 paul cashman 两位研究员在描述他们所组织的有关如何利用计算机来支持不同领域和学科的人们共同工作的研究课题时首次正式提出的。它的研究主要定位于协同工作系统的建设、群体工作方式研究和支持群体工作的相关技术研究、应用系统的开发等。cscw 这一理念是无所不在,它的研究与发展必将极大的影响和改变人们的工作和生活方式。在国际上,cscw 的研究经过 20 余年的发展,已经具有相当规模和影
16、响力。大量国际知名高校、企业、研究机构,都加入到 cscw 的研究中来,并且大量研究成果已经得到了实际应用。例如微软的 office system,exchange server,ibm 的 lotus notes 都是得到广泛使用的协同软件,凝集着 cscw 研究的大量成果。信息资源共享则是当前的又一个热门话题。当今世界信息化程度与日俱增,我国也正在加快信息化建设的步伐。有效的信息共享机制可以消除信息孤岛,提高信息化效率,减少不必要的重复投资和建设。当前,在政府决策、交叉学科研究、前沿学科的突破性进展、高等教育质量的提高、企业技术创新活动中,无不显示出信息资源共享的重要性。传统的信息共享研究
17、主要集中在数据库、计算机网络、操作系统等领域,实现数据、文件及设备资源的小范围的简单共享。近年来,大量新兴技术,例如网格技术,web 服务技术,p2p 技术,语义与知识处理技术、xml 等,则致力于更广泛,更普遍,更通用的信息共享,并且取得了巨大成就。cscw 与信息共享这二者都是 it 领域中对我们整个社会的发展有着深刻影响的主题。同时,这两个领域又有着密切的联系。在协调不同小组及个人的工作时,信息资源在一定程度上的共享是协同工作的前提,要实现不同对象之间的协同工作,首先就必须在对象之间共享相关资源;同时,为了做到信息资源的有序共享及科学管理,共享者之间的协同也是必须的。单用户交互应用已经渗
18、透到我们的日常生活和工作中,与之相比,可供选择的多用户协作应用程序是非常有限的。现有的大多数商业应用都是设计成单用户的,而未来的应用设计很可能仍将以单用户为中心。多年来,人们梦想研究出将单用户应用透明地转换为多用户应用的技术。这种技术不但能提高现有单用户应用软件的价值,可用性和可扩展性,更能显著地消除因为重复设计和重复开发所带来的无谓成本。 1.1.21.1.2 已有成果已有成果使用现有的单用户软件来实现多用户实时协同的想法在很早之前就被提出。早期的系统有microsoft netmeeting 和 sunforum 等等。诸如此类的系统都是提供了一种通用的共享应用程序的环境,而单用户软件在这
19、样一种环境中被多个用户所实时使用。而这种通用的应用共享系统采用集中的体系结构(centralized architecture)2 7,这也就意味着为了达到一致性要求,这类应用程序必须采用一种顺序化的交互方式,即同一时间只能有一个用户操作被共享的应用程序。该架构的优点在于系统结构简单,并发控制的实现较为容易。但与此同时,这样的系统存在着严格的 wysiwis(what you see is what i see)要求1 7、响应能力差以及不能有效地使用网络资源等多方面的问题。最终这种体系结构被研究者认为是不灵活的,并且不能适应并发操作和多用户自由交互的要求。为了解决这种集中式结构带来的问题,一
20、些早期研究原型,如 vconf,dialogo 等采用复制的体系结构(replicated architecture)5 6,即在整个协同系统中,单用户应用程序在每个客户端均有实例存在。该结构有助于实现好的响应性、不严格的 wysiwis 和有效的网络使用,并且支持并发协作。但与此同时,这类系统面临一致性维护、外部资源管理和新加入者协调等方面的问题。这些技术障碍多年来阻滞了这一体系架构的发展,甚至有些研究人员开始认为复制结构是一个错误的方法9。随着软件行业的规范和设计思路的拓展,组件化思想逐渐深入人心。有研究者提出了一种新的复制式体系结构:松散式 jamm(java applets made
21、multiuser) 。这种结构的精髓在于组件替换的思想,即利用应用程序级别的语义信息,在运行时将单用户应用程序的接口自动地替换成多用户协同应用的接口。这种方案能有效地提高本地程序的响应速度,提高网络利用效率,于此同时还能维持松散的 wysiwsi。但这种方案的局限性也是巨大的:为了实现上述目标,松散式 jamm 要求底层平台对于运行时模块替换,动态绑定,以及截获和重现用户输入功能的支持。但是遗憾的是,能满足松散式 jamm 要求的单用户应用程序数目不多而且不够流行。 1.1.31.1.3 新的方法和技术新的方法和技术近年来,一种新的透明适配方法1出现,这种方法宣称可以将未经定制的商业性的单用
22、户软件转换到多用户的实时协同应用,同时不改变现有软件的源代码11 12。研究者将这种方法应用在文字编辑软件(ms word)和幻灯片制作软件(ms powerpoint)上,并取得了一定的成功。这种方法为我们研究和开发基于互联网的协同软件系统提供了新的思路。因此,这一方法既不是在操作系统级别上对所有应用程序进行协同(例如 netmeeting) ,也不是专门针对一个接口库进行的组件替换(例如 jamm) ,它是在单用户应用程序与协同控制之间加入了一个恰当的适配层,使单用户应用程序能透明地转化为多用户协同应用程序。由于这一方法对单用户应用程序完全透明,基于透明适配的协同应用程序支持并发工作、具有
23、好的响应能力和松散的 wysiwis,同时可以避免复制共享系统所面临的大多数问题1 13 14。透明适配方法的主要基础在于单用户应用程序的应用程序编程接口(api) 。它的思路是使用这些 api 来截获用户输入,并对多个用户的操作进行并发控制,同时将其他用户对应用程序的操作回显到本地。但这一方法仍面临一些问题和局限,需要进一步检验和完善。尤其是针对具有复杂数据结构和多种对象类型的大型应用程序,如何扩展和修改透明适配方法使之适应更多,更复杂应用程序的需要,仍需要进一步深入的研究,而这也正是本文的目的所在。1.21.2 研究和设计目标研究和设计目标1、本文选择主流应用软件 microsoft ex
24、cel 为研究载体,采用透明适配方法将其转化为一个基于互联网的多用户实时共享协同系统原型,并使其支持多用户并发工作,具有较好的响应能力和理想的用户体验,同时对这一原型系统进行测试和评价。2、本文深入分析透明适配方法中的技术关键,讨论实现对单用户软件“透明地”转化为多用户实时协同软件的一般化的技术、一般化的构建步骤,在上一个目标完成的基础上,进行归纳和总结,提出一套标准规范,尝试提出实现一个低侵入性架构的方案,并分析其得到推广的可行性。 1.31.3 研究价值研究价值与应用价值与应用价值cscw 的研究具有重大现实意义:通过建立计算机支持的协同工作环境,改善人们进行信息交流和共享的方式,消除或减
25、少人们在时间和空间上的分隔和障碍,提高群体工作质量和效率,从而提高企业、机关、团体乃至整个社会的整体效益和人们的生活质量。而信息资源共享正在成为一种趋势,正在逐渐融入社会生活的方方面面。信息资源的共享,特别是科学数据和资源的共享,正得到政府有关部门的广泛关注和大力支持。当前,我国在 cscw 与信息共享的研究方面仍存在着严重分离的现象,缺乏 cscw 和信息共享的结合研究。尤其是在基于信息共享的复杂 cscw 应用领域,相关理论、模型和关键技术等还几乎是一片空白。而有效发挥单用户交互式应用软件在多用户实时协同环境中的推动作用,既是一种机遇,更是一项挑战。此项技术一旦成熟,无数的单用户应用软件可
26、以透明化地转变为协同工具,能够极大地增加可用的协同应用软件的数量。对于软件的供应商来说,这意味着可以增加产品的价值,延长现有产品的生命周期,以增加利润。对于软件的消费方,这意味着他们不仅能够进行合作,而且可以使用他们所熟悉的应用软件。而作为研究者,我们可以提出一套标准,将一般单用户软件和操作系统的接口进行规范化,甚至能够实现一种无侵入性或低侵入性的架构(framework) ,将主流单用户软件纳入其中,完美地实现对多用户实时协同工作的支持,而这些都具有巨大的应用前景和市场价值。特别地,在图形图像和多媒体设计领域,这种多人协同共作的方式更有实际意义和现实价值。相对于单纯的办公软件而言,这类主流开
27、发环境更加复杂和多元化,同时所开发项目的规模也更加巨大,这就意味着多人同时展开工作能有效地提高生产率,多人协作这样一个思维碰撞的环境也更能激发创作的灵感。2 2 数据层面的适配技术数据层面的适配技术2.12.1 基本的操作转换技术基本的操作转换技术在任何一种多用户协同系统的实现中,数据一致性控制都是一项核心的技术。经过多年的发展,针对数据一致性控制的解决方案也层出不穷,而操作转换技术则是其中比较合理的解决方案。操作转换技术本身是为文本编辑器而设计的,那么为了将其应用到数据结构更加复杂的应用程序中,势必要对其进行扩展。操作转换技术高度的可扩展性就成为我们选择它作为数据一致性控制解决方案的重要原因
28、。操作转换技术可以用以下例子来解释:在一个复制结构的协同应用程序中,两个用户(用户 1 和用户 2)同时操作一份文本文件,该文本文件中只有“abc”这样一个字符串。用户 1 向文件起始位置插入一个新字符“x” ,那么该操作可以被描述成用户 1 在“0”这个位置插入了字符“x” 。那么在此之后文档应变成“xabc” 。但在这一操作未被发送到用户 2 之前,用户 2 仍然认为文件内容为“abc”并希望删除“c”这个字符,该操作可以被描述为用户 2 在“2”这个位置删除了字符“c” 。在此我们假设用户 1 的操作先于用户 2 的操作,那么当用户 2 的操作被传送到用户 1 处的时候,倘若我们仍简单地
29、认为用户 2 在“2”这个位置删除了字符“c” ,那么由于文件内容已经变为“xabc” ,我们就会错误地把字符“b”删除,这就造成了数据的不一致性。那么,为了保证数据一致性,我们必须将传递过来的用户 2 的操作转换为在“3”这个位置删除字符“c” ,才能保证两用户共享数据的一致性。总的说来,基本的操作转换技术的核心就在于将传递过来操作信息的参数根据各个不同协同用户的操作进行规整和转换,以使别处传递过来的用户操作信息能够正确地作用到当前状态下的文档中,进而达到保证协同用户间数据一致性的目的。为了有效地实现数据一致性,操作转换技术实现了两个基本模型:数据模型和操作模型。数据模型定义了协同系统中共享
30、数据的寻址方式,即数据是如何被排列和组织起来的;操作模型则定义了一系列基本的操作,这些操作是一切复杂操作的基础,因此也被称为元操作。在上述基本操作转换技术中,数据模型即为一个线性的地址空间,所有的对象都按照顺序排列在这个地址空间中供用户操作;而操作模型则由两个元操作组成:插入操作和删除操作。2.22.2 树状线性结构树状线性结构 2.2.12.2.1 定义和性质定义和性质基本的操作转换技术能够有效地实现在一个线性地址空间内的数据一致性,对于更为复杂的文件结构,如多个地址空间或地址空间之间具有层次结构或继承关系的文件结构则无能为力。为了应对这种情况,研究者对操作转换技术进行扩展,将它的应用范围从
31、普通文本文件扩展到基于 xml 规范的文件上去。经扩展后的操作转换技术,原本的一维线性地址空间被扩展成了一组具有相互关联的线性地址空间。这些地址空间的相互关联类似于 xml 文件中的节点间的关系,即构成一个树型结构(见图 2.1) 。.线性空间:线性空间:.线性空间:线性空间:.线性空间:线性空间:.线性空间:线性空间:.线性空间:线性空间:.线性空间:线性空间:.图 2.1 扩展后的地址空间:树状线性结构由图 2.1 我们可以看出,扩展后的操作转换技术拥有一个树形的地址空间,树的每一个节点都是一个域,域中有多个一维线性空间。父节点中线性地址空间的每一个元素都对应了子节点中的一个域。这样类似于
32、 xml 文件的结构让我们能方便有效地找到整个数据模型中的任何一个对象。特别需要提出的是,当一个对象没有子节点,即对象中不具有下一级结构时,我们认为其为终结对象,反之我们认为它为中间对象,即对象中仍有指向下一级对象的链接。值得注意的是,这种扩展之后的数据模型仅仅表示了被操作对象地址之间的关系,而不是对象之间的关系。在一个复杂的应用程序中,对象之间的关系可能会更加复杂,但对于操作转换技术而言,我们只需要关注对象地址间的关系就足以满足需求。更进一步说,两个对象被认为是临近的,并不一定意味着这两个对象实际的位置关系临近或是在内存中的位置临近,而是仅仅说明对于操作而言,这两者的地址是接近的。 2.2.
33、12.2.1 寻址方式寻址方式在扩展后的树形地址空间中,每个节点中的任何一个对象都可以用一个唯一的地址对来描述。其中 n 表示该节点中的某个一维线性空间的地址,而 p 则表示该对象在这个一( , )n p维线性地址中的位置。那么,为了描述树形地址空间中的任意一个对象,我们需要一组这样的地址对来描述对象的地址,在这里,我们用一个 vector 来盛放这样一组地址:0011(,),( ,),.,( ,),.,(,)iikkvpnpn pn pnp其中表示了第 层的地址。依照这样的方式,自根节点开始寻址, ( ,),(0)iivp in pik i遍历整个 vector,总能找到目标对象。2.32.
34、3 扩展后的操作转换技术扩展后的操作转换技术为了使操作转换技术能应用于复杂的文件数据,我们需要将操作操作转换技术扩展到具有树状线性结构特征的文件数据上。前文提到,操作转换技术有两个重要模型,数据模型和操作模型,而由上文所述,我们可以将数据模型由一维线性结构扩展为树状线性结构,而操作模型也要做相应的更改以适应数据模型的变化。 2.3.12.3.1 操作间的关系判断策略操作间的关系判断策略在扩展后的树状线性结构中,一个操作所作用的对象可能会落在任意一个树节点所包含的任何一个一维线性结构中,这个特定的一维线性结构被称为该操作的目标域目标域。在扩展后的操作转换技术中,确定两个操作目标域之间的关系对于正
35、确进行操作转换具有重大的意义。仿照数据结构中树的定义,我们给两个目标域之间的关系做如下定义:1.若目标域 a 中有一个元素是指向目标域 b,那么目标域 a 被称为目标域 b 的一个父域父域。2.从根节点出发到某个操作的目标域所经过的所有域的序列,称为到该操作域的域路径域路径。当数据模型扩展成为树状线性结构后,多个用户所产生的操作可能会落到相同或不同的目标域中,这些目标域又可能具有类似树结构中的父子关系,如何才能保证操作转换技术能正确地将用户操作进行转换,以保障数据的一致性,成为很重要的一个问题。当两个操作并发进行时,某些情况下需要对其中的操作做转换,而某些情况下却不用。我们用一个例子来说明这一
36、问题。假设目前存在一个最简单的两层树状结构,根节点仅有一个一维线性结构,且共有 3 个对象,指向下一级节点。每个第二级节点中均有两个一维线性结构,如下图所示:01200001122330011操操作作3 3操操作作2 2操操作作n n操操作作4 4操操作作1 1图 2.2 树状线性结构中的操作转换在上述这样一个简单的树状线性结构中,假设存在两个并发的操作,称之为操做和操作n,其中=1,2,3,4。为了方便,我们总假设操作先于操作发生。我们以此来考察操作xxxn1 到操作 4。1.若=1,即操作 1 先于操作发生,由于操作 1 处于操作的父域上,操作 1 有可能xnn影响到操作所在域的地址,因此
37、必须对操作做转换。nn2.若=2,即操作 2 先于操作发生,由于操作 2 与操作具有同一个目标域,操作 2xnn有可能影响到操作所在域的地址,因此必须对操作做转换。nn3.若=3,即操作 3 先于操作发生,由于操作 3 与操作既不具有同一个目标域,也xnn不在操作的父域中,操作 3 不可能影响到操作所在域的地址,因此不需要对操作做转换。nnn4.若=4,即操作 4 先于操作发生,虽然操作 4 与操作具有同一个父域,但是二者xnn的目标域不同,操作 4 不可能影响到操作所在域的地址,因此不需要对操作做转换。nn经过上述四种情况的考察,我们可以得出结论,当操作先于操作发生时,当且仅当以xn下两种情
38、况下,操作需要针对操作进行转换:nx1.操作和操作具有相同的目标域;xn2.操作的目标域是操作的父域。xn更深入地研究可以发现,上述两种情况仍可以总结成一种情况,即当操作的目标域位于x操作的目标域的域路径上时,操作需要针对操作进行转换。nnx 2.3.22.3.2 根据地址对判断操作间的关系根据地址对判断操作间的关系在 2.2.1 节中,本文提到在树状线性结构中,用一组形如的地址对来描述对象的地( , )n p址,并将这一组地址对存放在一个 vector 中。利用这一结果,我们可以将 2.3.1 节中所述的操作间关系判断策略用伪代码的方式描述出来,进而可以使用实际代码将这一特性实现。基于 c+
39、语法的伪代码如下图所示:图 2.3 用地址对判断操作间关系的伪代码上述代码利用地址对来检测两个操作目标域之间的关系。根据 2.3.1 节中的策略,我们首先利用 isdomaindependent 函数检验两操作目标域是否独立,若两函数不独立,再进一步判断两目标域是否相同或者具有父子继承关系。在函数 isdomaindependent 中,若操做的域路径长度小于操作,说明操作的目标域nxn位于操作的的上级节点中,那么返回 true;反之,则遍历操作的整个目标路径,若有任何xx一个节点与操做的不重合,也返回 true。若上述情况均不满足,则返回 false,即两者的目n标域不独立。函数 check
40、targetdomainrelation 则进一步细化了两个操作目标域之间的关系。首先调用isdomaindependent 判断两目标域是否独立,若不独立,则根据两操作目标域域路径长度来判断两操作目标域是同一目标域还是继承关系。综上,通过图 2.3 中所示的两个函数,我们能利用两操作的地址对,清晰地确定出两操作目标域间的关系,以确定是否需要对后发操作实行操作转换。3 3 应用层面的适配技术应用层面的适配技术3.13.1 microsoftmicrosoft excelexcel 工作簿的数据结构工作簿的数据结构 3.1.13.1.1 概述概述由第二章所述,一致性控制的核心为操作转换技术,而操
41、作转换技术包含数据模型和操作模型两个元素。本文选取了 microsoft excel 作为研究载体,因此要首先对 excel 工作簿的数据结构进行深入的研究和分析,一边将操作转换技术应用到这种特定的应用程序上。 3.1.23.1.2 从用户角度看从用户角度看 excelexcel 工作表工作表从用户角度看,一个 excel 工作表如下图所示:图 3.1 excel 用户界面与简单的文本不同,excel 工作表是一种具有复杂结构的文件类型。从用户的角度看,一个excel 工作簿(workbook)内含有多个工作表(worksheet) ,每一个工作表内又具有复杂多样的数据对象。一个工作表内含有一
42、张以行列方式表示的表,表内的每个单元格中具有相关的文本。同时,一个工作表内还可能含有图形和图表对象,这些图形和图标对象还可能与表格中单元格数据有一定的联系,如图 3.1 所示。在相对位置上,这些图形和图表可能被放置到工作表界面的任意位置,而且用户可以随时调整其位置。根据第二章的论述,操作转换技术必须最终作用在一个线性地址空间上,而这种复杂的数据结构似乎与操作转换技术的要求并不匹配。但是经过研究发现,这样一种复杂的数据结构同样可以与操作转换技术对数据地址空间的要求相匹配。原因在于,我们在这里并不关心用户看到的数据结构是怎么样的,我们更为关心从编程接口上所反映出的底层数据结构的状态。单纯从编程接口
43、上看,excel 这种复杂的数据结构恰好能满足第二章所述的扩展后操作转换技术对数据地址空间的要求。 3.1.33.1.3 从编程接口角度看从编程接口角度看 excelexcel 工作表工作表microsoft excel 组件对象模型(com)提供了一系列复杂多样的编程接口(api)和对象,利用这些接口和对象,我们可以用 com 自动化(automation)的方式来控制 microsoft excel应用程序,并操纵 excel 文档数据。在这众多的接口和对象中,仅有一部分是比较重要或是我们需要用到的,我们用一个示意图来表示这些对象间的相互关系:工作簿对象应用程序对象application工
44、作簿对象workbook工作簿对象workbook.调用getworkbook方法工作表对象worksheet工作表对象worksheet.调用getworksheet方法单元格对象range图形对象shape图表对象chart调用getshape方法调用getchart方法调用getrange方法.图 3.2 excel 组件对象模型示意图由上图,excel 组件对象模型的基本类型层次结构以树型结构出现,最顶层的 application对象代表了一个 excel 应用程序本身,它含有大量关于运行时应用程序的属性,用户和对象信息,其主要作用在于控制 excel 应用程序的一般状态,显示属性,以
45、及通过此对象来获取其他对象。workbook 对象代表了一个 excel 工作簿。在一个 application 对象中,有一组 workbook 对象,组成一个被称为 workbooks 的集合。我们可以通过 getworkbook 方法来取到某一个工作簿的引用,也可以利用这个集合来创建、打开、关闭一个工作簿。workbook 对象也提供了大量的属性,用于运行时定义一个工作簿的各种状态。同时,也可以通过 workbook 对象来获取指向worksheet 对象的引用。worksheet 对象代表了一个 excel 工作表。在一个 workbook 对象中,同样有一组worksheet 对象,
46、组成一个被称为 worksheets 的集合。正如图 3.1 所示,当前打开的工作簿内含有三个工作表:sheet1,sheet2 和 sheet3。我们可以通过 getworksheet 方法来取得某一个工作表的引用,同时也可以利用 worksheets 集合来创建、打开、关闭任一个工作表。worksheet 对象提供的属性和方法大都和 workbook 对象类似,其区别在于 workbook 对象中的方法和属性是对这个工作簿下的所有工作表有效,而 worksheet 对象则是仅仅对该工作表有效。每一个 worksheet 对象中仍具有比较复杂的结构。在每一个 worksheet 对象中都含有
47、一个range 对象,用于表示所有的单元格对象,即我们可以通过行列参数来找到任何一个单元格,并对其进行操作。同时,worksheet 对象中还包含有 shapes 和 charts 对象,分别表示在这个工作表中存在的图形和图表对象的集合。这两个集合的组成元素分别是 shape 对象和 chart 对象,即表示单个图形和图表对象。当然,worksheet 对象中还含有其他的复杂对象,例如表示标注的commnet 对象等等,限于本文篇幅,不一一赘述。综上所述,我们可以发现,在整个 excel 组件对象模型中,各个对象均是从上层对象中获取而来,且每个对象中均有指向下层对象的集合。更加值得注意的是,这
48、些对象在对象集合中均是以一维线性的方式进行排列(如 workbook 对象中的 worksheets 集合) ,这就为我们将操作转换技术应用在 excel 文档上提供了依据和准备。3.23.2 树状线性结构的映射树状线性结构的映射 3.2.13.2.1 概述概述由 3.1.3 节所述,从应用程序接口的观点看,excel 文档中的对象呈一种较为规则的树形结构,而研究这种树形结构能否与第二章所述的扩展的操作转换技术所要求的数据结构相符合,便成为我们将操作转换技术应用于 excel 文档的前提。仿照第二章图 2.2 的形式,我们将 excel文档中各种对象之间的关系表示为如下示意图:workbook
49、:worksheets:0sheet11sheet22sheet30shape11shape22.nshapen0chart11chart22.nchartnshapes:charts:0row11row22.nrownrange:0cell11cell22.ncellncells:图 3.3 excel 文档中对象关系示意图由上图我们可以看到,左侧表示的是从用户角度看到的 excel 文档,而右侧表示的则是从应用程序接口所描述的 excel 文档结构,两者之间的关系可以由图中的虚线表示。同时,图中对 excel 文档结构进行了规整,使它的结构层次类似于第二章所所述的树状线性结构。至此,我们断
50、言,excel 文档的结构满足扩展的操作转换技术对数据结构的要求,下面一节对这一结论进行具体分析论证。 3.2.23.2.2 工作表(工作表(worksheetworksheet)对象序列的映射)对象序列的映射由上两节所述,无论从用户角度还是从应用程序接口角度,在一个 excel 文档中,工作表是以一个序列的形式出现的,正如图 3.2 所示。经过对 excel 组件对象模型中 workbook 对象中的 worksheets 属性进行考察,我们发现,有两种方式可以引用一个工作表对象。一种是按照名字查找,另一种则是根据工作表的序号进行查找。即既可以用形如 getitem(0)的方式索引一个工作表
51、对象,也可以用形如 getitem(“sheet1”)的方式应用该对象。这也就意味着从应用程序接口的角度看,工作表对象序列可以被认为是一个一维线性空间,即所有的工作表按照顺序被排成一列,而这恰好符合操作转换技术所要求的数据结构,因此在工作表层面上的操作可以直接应用操作转换技术。值得一提的是,在这里我们不采用按照名字索引对象的方式。尽管采用这种唯一性命名的方式可以让在工作表层面的操作免于实行操作转换,但其开销却是非常巨大的。在当前采用的复制式体系结构中,多个用户同时拥有一份 excel 文档的副本,当他们对各自文档副本的工作表进行增、删、改操作时,由于网络延迟等原因,各个用户所操作的工作表的名字
52、很有可能不同,这也就意味着会有潜在的造成数据不一致的危险。假如采用这种按照名字索引对象的方式,我们就必须在每个客户端维护一个全局的对象名称表,以保证操作对数据的一致性,而这种开销是非常巨大的。综上所述,在一个 excel 文档中,工作表对象序列呈一个一维线性结构,而这正好满足了操作转换技术的要求,可以使用操作转换技术来保证数据的一致性。 3.2.33.2.3 工作表内部对象的映射工作表内部对象的映射一个 excel 工作表中仍然具有较为复杂的数据结构,但本文所关心的范围主要有两个部分:表格区和绘图区。顾名思义,表格区即是 excel 工作表中表格所在的区域,它的表现形式为一个单元格二元矩阵。根
53、据 excel 版本的不同,这个矩阵的行列数目略有不同。microsoft excel 2000 至 2003版本中,表格区有 65536 行,256 列;而在 microsoft excel 2007 中,这一数据则被扩展为1048576 行和 256 列。虽然表格区的数据结构为一个二维矩阵,但 excel 组件对象模型中仍然提供了独立的行对象(row)和列对象(column) ,因此我们可以将表格区处理为两个具有集成结构的一维线性空间,这样就可以将操作转换技术应用分别应用在行对象和列对象上,即表格区可以完全映射为一个深度为 2 的树状线性结构。绘图区则是一个统称,在实际的 excel 工作
54、表中,绘图区其实含有多个对象序列,即凡是不属于表格区的对象都会出现在绘图区中,例如图形,图表,单元格注释等。以应用程序接口的角度看,这些对像均以序列的形式出现,而且可以用索引的方式来引用,尽管实际存储的形式可能不是如此。在本文范围中,我们认为,这些绘图去的对象分属于不同的对象序列,如图形对象的集合为 shapes,图表对象的集合为 notes 等等,这种理解方式既能屏蔽底层实现细节,又不影响对于 excel 文档结构的准确把握。由此,在绘图区中,这些不同的对象序列均为一维线性结构,且可以用索引形式来引用其中的对象,则操作转换技术可以顺利地应用在这些对象序列上,以保证数据的一致性。另外值得强调的
55、一点是,在绘图区中,对象的索引跟对象的 z-order(即对象的叠放次序)息息相关。例如,在图形序列 shapes 中,排在前面的图形的 z-order 永远比排在后面的 z-order 小,表现在用户界面上就是位于更底层的图层。这就决定了我们在对图形序列进行一致性控制实际上就是对图形叠放次序进行一致性控制,这样的话,当用户手动更改图形叠放次序时(如点击右键菜单中的“叠放次序”一栏)就相当于更改图形对象的索引,就会同样会出现一致性控制的问题,而这也为图形对象的一致性控制增加了复杂性。 3.2.43.2.4 对象内部数据的映射对象内部数据的映射对于每个单元格对象,图形对象或者图标对象,在 exc
56、el 中均具有进一步的内部结构,例如单元格内部有文字,图形对象内部也可以嵌入文字。这些对象的内部数据结构均为一维线性结构(如单元格内的文字) ,理论上直接满足操作转换技术对数据结构的要求。但能否在这些对象内部数据上使用操作转换技术保证数据一致性,仍需要进一步论证。我们以最简单的单元格对象为例。单元格对象内部数据实质上是一个带格式的字符串序列,那么基于上述理由,我们应该可以使用操作转换技术来实现单元格内部字符的数据一致性。但事实并非如次。造成这一现象的根本原因在于,excel 组件对象模型中并没有提供读取单元格编辑状态下光标位置的 api。在 excel 应用程序中,单元格的状态有两种:常规状态
57、和编辑状态。用户只能在编辑状态下向单元格内插入数据,且各个单元格内的数据相互独立,即每个单元格的编辑都相当于在编辑一个“小型文本文件” 。我们假设要实现单元格内部字符级别的数据一致性,那个当多个用户同时对一个单元格进行编辑的时候,根据第二章的论述,我们必须要知道每个用户当前的光标位置,以便确定其将要操作的字符位置。而 excel 恰恰没有提供这一层次上的 api,这也就造成了实现之一目标的不便。假若我们一定要实现单元格内部字符级别的数据一致性,则需要做如下的工作:1.单元格编辑状态下监视用户对左右方向键的使用,因为方向键会改变光标位置;2.在每个客户端维护一张表,这张表记录了所有编辑这一单元格
58、用户的光标位置;3.任一用户每一次光标的改变均要对所有用户广播;4.任一用户进入编辑状态(如双击鼠标,按下 f2 键)和离开编辑状态(如选中其他单元格)均要广播;5.一旦用户在编辑状态按下 esc 键,则要撤销所有的操作,并清空所有用户处关于该用户此次编辑信息和光标位置的缓存。综上所述,实现单元格内部字符级别数据一致性所要付出巨大的代价,而实现这种一致性所带来的好处却极为有限。因此,本文在原型实现中就没有实现单元格内部字符级别的数据一致性。那么,本文将 excel 工作表中的一个单元格映射为树状线性结构的叶子节点,即一个单元格操作即为一个原子操作,同一时刻一个单元格只能被一个用户编辑,这也就保
59、证了整体上文档数据的一致性。与此类似的,一个图形对象以及图表对象等,在本文中均认为是用户的最小操作单元。 3.2.53.2.5 总结总结在以上论述的基础上,我们发现 excel 文档可以被完全映射为一个满足操作转换技术要求的树状线性结构,如下图所示:workbookworksheets:0sheet11sheet22sheet30shape11shape22.nshapen0chart11chart22.nchartnshapes:charts:0row11row22.nrownrange:0cell11cell22.ncellncells:worksheetrowworksheetworks
60、heetrowrow.图 3.4 excel 文档映射成树状线性结构如图 3.4 所示,在这个树状线性结构中,根节点是工作表对象,其中含有一个工作簿对象的线性序列,而每一个工作簿对象中含有多个线性序列,分别为表格行序列,图形序列和图标序列等。而第三层中则是每个行对象中的单元格序列。与此同时,在这个结构中,每个线性序列均有自己独一无二的名字,至此,我们成功地把 excel 文档映射成为一个满足操作转换技术的树状线性结构。结合图 3.4 和第二章所论述的寻址方式,我们发现:要访问一个工作表(worksheet)对象,只需要提供一个含有域名称和索引的地址对,即形如(“worksheet” ,1)形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度楼顶景观照明设施安装与维护合同4篇
- 2024版陶瓷产品购销合同范本
- 2025年桶装水销售区域市场调研与分析合同样本3篇
- 二零二五年度果树租赁与果树种植项目投资合同3篇
- 二零二五版仓储搬运操作服务合同2篇
- 二零二五版出租汽车承包合同车辆报废及更新政策3篇
- 二零二五年度担保合同争议解决与会计处理办法合同3篇
- 2025年度机械设备买卖合同范本3篇
- 2025年度漫画连载作品授权手机游戏开发合同4篇
- 二零二五南宁市租赁市场租赁合同押金退还协议
- 焊锡膏技术培训教材
- 函授本科《小学教育》毕业论文范文
- 高考高中英语单词词根词缀大全
- 江苏省泰州市姜堰区2023年七年级下学期数学期末复习试卷【含答案】
- 药用辅料聚乙二醇400特性、用法用量
- 《中小学机器人教育研究(论文)11000字》
- GB/T 22085.1-2008电子束及激光焊接接头缺欠质量分级指南第1部分:钢
- 全过程人民民主学习心得体会
- 2023年上海期货交易所招聘笔试题库及答案解析
- 附图1岑溪市行政区划图
- word企业管理封面-可编辑
评论
0/150
提交评论