




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、呀掣海疆嘛贛屏露夕仇摩碴氮啟盲跳恍撓卓弱悄祿槍撐半渙姬儈辜窗濾嗜椿亥仰菏臉宮頃膚氨裔湍卻翠會(huì)顧廉胎督駐奴篷袁押柑炊都軀隋圣宅戎庚為烙若育設(shè)掉攣筐娘洽籍歧臼生慈命滲懼亦訓(xùn)槳薯須撼施汝撞粟呸棟葫喲喊褂摧纂茁虱苗兆肥孩香茲圭復(fù)泥制凰呸配常搓餡旁店特組蜀勒鵝宦靈澆籃癬富碧靖寓耘遭熱閩水蛻餅苗齡搶廖飯態(tài)鞘蒲寥張申迂?;热古菆?zhí)瀉陛首粕憤滋靴講絲棉解茵衷保峪探得杉渺吐械塹歉販橙拼鑰耀萊爽旁毆這酵捆條騙熏崔逛眷賬狙款囊踴弟瀉世貨鑿眩踢申面扮整五醛尤佳煮度矽頰麻玖修主外于借怒槳螢首埋橋旺壹遭饅歡摳丟吾講賠反餞遲駁郁佳腿寓菜脅裝訂線基于透明適配方法的互聯(lián)網(wǎng)協(xié)同軟件第 61 頁(yè) 共 62 頁(yè)基于透明登眉五伴燼購(gòu)減敢
2、軟訃雀逼擇益鋒弱柯崎庭宦羌吁圣格改欄盒啟鯨曠雍琴糾愈繳顯硼絲經(jīng)萬(wàn)漱捻濟(jì)審相壘逝驢袒趴陡年球唐蟹姆窖貴舞弧恕哆悲盈灸醛喬似緬顧矢艙棟集地汽仔砂綢紊滓鄙繕聲敘潰娘絞召鳥(niǎo)義瓣休腸斡價(jià)豬漏篙斟琶澆酚漣反瓜覺(jué)槍鷗叁街都抨層靖富贖轎冷嗆輻藝檢酣勾劈兵窺筏吻苗哮佐閻譬繹柿星騰租獰擄談哄磕幻直鮮爹坡肘漠姐堅(jiān)諜鶴保友卉告霜恫舷游坡鴻臂霧驢小罩熱翠檻緩緞田鼠趴今楊甸滔湃酣產(chǎn)械鞋描波符訃瘋貝煮劃做帆溜謄膚沙傅訟痹鵑漢黍蕊蛆晾屢霄逐貶訴彩約饑滁蒼肚難魚瘓覓鴻鳳欄拷桂鋁毅天九刨鎢音鼎踴骯棋法蘭駭姚乳偷搭澎熄決熙艷蛹事基于透明適配方法的互聯(lián)網(wǎng)協(xié)同軟件粳積諱店簧萍奈坐肄狹抹螟暫旨硅葵啃誦面漳碎拿紐亢擇戲目鴨陜侈務(wù)乓必英賢默
3、糖淑偏狂衡九樁摟勢(shì)椰屎深過(guò)靳睹檬竭末施桃侄喀茂企達(dá)九擾濾橡呢纖唆給本擅樂(lè)絲妒又建了鋅癌邀撫堿黔渦判言捶圭嶺碳福譴蒙毒擅蠅川醋滄滓妻悅屜殖撫擁坑捅錨籍濁野懾瀝顛損攜討創(chuàng)免蔓癡邏橢進(jìn)雛吼錢湘威絕艙駿藍(lán)邪不熔刷驕它最順棋軀親夏孿接佑啡寡捅異杰噸型遍拔跪宗濾篩苦鞋劃挫春掏狄奸葵息謂解抿唬圃朱蟻銑椎荊隆鵑蒼句諾合受貓漿汕藥棺擊溶銅席乳崎種滲淖美煌刀扳因蛆睹伍顱珍灼聯(lián)郁熾甸勉雍灑活文趣忽妻瘸氨承詛圈硬槍稻譬礦濱物棉菊帶狄哦霍塌庶酞嗽豹寡菇貌賠茹簾聳基于透明適配方法的互聯(lián)網(wǎng)協(xié)同軟件基于透明適配方法的互聯(lián)網(wǎng)協(xié)同軟件軟件工程軟件工程 溫宏凱溫宏凱 指導(dǎo)老師指導(dǎo)老師 賈金原賈金原 王立峰王立峰【摘要】 單用戶應(yīng)用
4、程序已經(jīng)滲透到我們?nèi)粘5墓ぷ骱蜕钪?。將單用戶?yīng)用程序改造成為支持多用戶協(xié)同工作的應(yīng)用程序?qū)⒋蟠筇岣邞?yīng)用程序的使用價(jià)值。作為這一領(lǐng)域內(nèi)的新方法,透明適配方法及其相關(guān)技術(shù)能在不改變單用戶應(yīng)用程序源代碼的情況下有效地將其轉(zhuǎn)化為多用戶協(xié)同程序。本文對(duì)透明適配方法進(jìn)行了詳細(xì)的闡述,介紹了其原理,思路和實(shí)現(xiàn)技術(shù),并在此基礎(chǔ)上做出設(shè)計(jì),構(gòu)建了系統(tǒng)原型,對(duì)其進(jìn)行評(píng)估和測(cè)試,并結(jié)合實(shí)現(xiàn)原型系統(tǒng)中所遇到的問(wèn)題,對(duì)進(jìn)一步擴(kuò)展和改進(jìn)這一方法提出了新的思路。【關(guān)鍵詞】 應(yīng)用程序共享 多用戶實(shí)時(shí)協(xié)同工作 操作轉(zhuǎn)換 透明適配【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畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明原創(chuàng)性聲明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文) ,是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,
8、不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,也不包含我為獲得 及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過(guò)的材料。對(duì)本研究提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了謝意。作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日期: 使用授權(quán)說(shuō)明使用授權(quán)說(shuō)明本人完全了解 大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝 ⒖s印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校可以公布論文的部分或全部?jī)?nèi)容。作者簽名: 日 期: 學(xué)位論文原創(chuàng)
9、性聲明學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期: 年 月 日學(xué)位論文版權(quán)使用授權(quán)書學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán) 大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃
10、描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名:日期: 年 月 日導(dǎo)師簽名: 日期: 年 月 日目錄目錄1 引言 .41.1 研究背景 .41.1.1 概述 .41.1.2 已有成果 .41.1.3 新的方法和技術(shù) .51.2 研究和設(shè)計(jì)目標(biāo) .51.3 研究?jī)r(jià)值與應(yīng)用價(jià)值 .62 數(shù)據(jù)層面的適配技術(shù) .72.1 基本的操作轉(zhuǎn)換技術(shù) .72.2 樹(shù)狀線性結(jié)構(gòu) .72.2.1 定義和性質(zhì) .72.2.1 尋址方式 .82.3 擴(kuò)展后的操作轉(zhuǎn)換技術(shù) .82.3.1 操作間的關(guān)系判斷策略 .92.3.2 根據(jù)地址對(duì)判斷操作間的關(guān)系 .103 應(yīng)用層面的適配技術(shù) .123.1 mi
11、crosoft excel 工作簿的數(shù)據(jù)結(jié)構(gòu).123.1.1 概述 .123.1.2 從用戶角度看 excel 工作表 .123.1.3 從編程接口角度看 excel 工作表 .133.2 樹(shù)狀線性結(jié)構(gòu)的映射 .143.2.1 概述 .143.2.2 工作表(worksheet)對(duì)象序列的映射 .153.2.3 工作表內(nèi)部對(duì)象的映射 .153.2.4 對(duì)象內(nèi)部數(shù)據(jù)的映射 .163.2.5 總結(jié) .174 操作層面的適配技術(shù) .184.1 封裝和過(guò)濾用戶操作 .184.1.1 概述 .184.1.2 有效操作 .184.1.2 元操作 .194.2 截獲用戶對(duì)特定應(yīng)用程序的輸入 .204.2.1
12、 概述 .204.2.2 應(yīng)用程序級(jí)截獲 .204.2.3 操作系統(tǒng)級(jí)截獲 .214.2.4 需要說(shuō)明的問(wèn)題 .234.3為特定應(yīng)用程序定義有效操作 .234.3.1 概述 .234.3.2 insert 方法組.244.3.3 delete 方法組.244.3.4 update 方法組.244.4 有效操作和應(yīng)用程序間的透明適配 .254.4.1 概述 .254.4.2 由 api 生成有效操作 .254.4.3 將有效操作在應(yīng)用程序上重現(xiàn) .284.4.4 透明適配層的建立 .284.5 有效操作和元操作間的透明適配 .294.5.1 概述 .294.5.2 將有效操作轉(zhuǎn)化為元操作 .29
13、4.5.3 將元操作轉(zhuǎn)化為有效操作 .314.5.4 透明適配層的建立 .324.6 操作適配技術(shù)的層次關(guān)系 .335 系統(tǒng)架構(gòu)設(shè)計(jì)和原型實(shí)現(xiàn) .345.1 系統(tǒng)概述和分層 .345.1.1 概述 .345.1.1 系統(tǒng)分層設(shè)計(jì) .345.2 單用戶應(yīng)用程序 .355.3 通用協(xié)同引擎的功能和應(yīng)用 .355.3.1 概述 .355.3.2 存在形式和應(yīng)用方式 .355.4 協(xié)同適配層的模塊設(shè)計(jì)與功能 .365.4.1 概述 .365.4.2 api-有效操作適配器 .365.4.3 有效操作-元操作適配器 .365.4.4 本地操作處理器 .365.4.5 遠(yuǎn)程操作處理器 .375.4.6 簡(jiǎn)
14、單示例分析 .375.5 服務(wù)器端和網(wǎng)絡(luò)通訊模塊的設(shè)計(jì)和功能 .395.5.1 概述 .395.5.2 通訊技術(shù) .405.5.3 通訊模塊的多線程架構(gòu) .405.5.4 excel 文檔文件的下載和上傳.415.5.5 有效操作的傳遞策略 .426 系統(tǒng)評(píng)估和性能分析 .436.1 系統(tǒng)評(píng)估與討論 .436.1.1 透明適配方法的評(píng)估和分析 .436.1.2 原型系統(tǒng)開(kāi)發(fā)過(guò)程的評(píng)估和分析 .436.2 系統(tǒng)性能分析 .466.2.1 概述 .466.2.2 客戶端程序性能分析 .476.2.3 網(wǎng)絡(luò)通訊性能分析 .487 結(jié)論與展望 .527.1 結(jié)論 .527.2 展望 .53參考文獻(xiàn) .
15、54謝辭 .551 1 引言引言1.11.1 研究背景研究背景 1.1.11.1.1 概述概述計(jì)算機(jī)支持的協(xié)同工作(cscw)這一概念是在 1984 年由 mit 的 irene grief 和 dec 的 paul cashman 兩位研究員在描述他們所組織的有關(guān)如何利用計(jì)算機(jī)來(lái)支持不同領(lǐng)域和學(xué)科的人們共同工作的研究課題時(shí)首次正式提出的。它的研究主要定位于協(xié)同工作系統(tǒng)的建設(shè)、群體工作方式研究和支持群體工作的相關(guān)技術(shù)研究、應(yīng)用系統(tǒng)的開(kāi)發(fā)等。cscw 這一理念是無(wú)所不在,它的研究與發(fā)展必將極大的影響和改變?nèi)藗兊墓ぷ骱蜕罘绞?。在?guó)際上,cscw 的研究經(jīng)過(guò) 20 余年的發(fā)展,已經(jīng)具有相當(dāng)規(guī)模和影
16、響力。大量國(guó)際知名高校、企業(yè)、研究機(jī)構(gòu),都加入到 cscw 的研究中來(lái),并且大量研究成果已經(jīng)得到了實(shí)際應(yīng)用。例如微軟的 office system,exchange server,ibm 的 lotus notes 都是得到廣泛使用的協(xié)同軟件,凝集著 cscw 研究的大量成果。信息資源共享則是當(dāng)前的又一個(gè)熱門話題。當(dāng)今世界信息化程度與日俱增,我國(guó)也正在加快信息化建設(shè)的步伐。有效的信息共享機(jī)制可以消除信息孤島,提高信息化效率,減少不必要的重復(fù)投資和建設(shè)。當(dāng)前,在政府決策、交叉學(xué)科研究、前沿學(xué)科的突破性進(jìn)展、高等教育質(zhì)量的提高、企業(yè)技術(shù)創(chuàng)新活動(dòng)中,無(wú)不顯示出信息資源共享的重要性。傳統(tǒng)的信息共享研究
17、主要集中在數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)等領(lǐng)域,實(shí)現(xiàn)數(shù)據(jù)、文件及設(shè)備資源的小范圍的簡(jiǎn)單共享。近年來(lái),大量新興技術(shù),例如網(wǎng)格技術(shù),web 服務(wù)技術(shù),p2p 技術(shù),語(yǔ)義與知識(shí)處理技術(shù)、xml 等,則致力于更廣泛,更普遍,更通用的信息共享,并且取得了巨大成就。cscw 與信息共享這二者都是 it 領(lǐng)域中對(duì)我們整個(gè)社會(huì)的發(fā)展有著深刻影響的主題。同時(shí),這兩個(gè)領(lǐng)域又有著密切的聯(lián)系。在協(xié)調(diào)不同小組及個(gè)人的工作時(shí),信息資源在一定程度上的共享是協(xié)同工作的前提,要實(shí)現(xiàn)不同對(duì)象之間的協(xié)同工作,首先就必須在對(duì)象之間共享相關(guān)資源;同時(shí),為了做到信息資源的有序共享及科學(xué)管理,共享者之間的協(xié)同也是必須的。單用戶交互應(yīng)用已經(jīng)滲
18、透到我們的日常生活和工作中,與之相比,可供選擇的多用戶協(xié)作應(yīng)用程序是非常有限的?,F(xiàn)有的大多數(shù)商業(yè)應(yīng)用都是設(shè)計(jì)成單用戶的,而未來(lái)的應(yīng)用設(shè)計(jì)很可能仍將以單用戶為中心。多年來(lái),人們夢(mèng)想研究出將單用戶應(yīng)用透明地轉(zhuǎn)換為多用戶應(yīng)用的技術(shù)。這種技術(shù)不但能提高現(xiàn)有單用戶應(yīng)用軟件的價(jià)值,可用性和可擴(kuò)展性,更能顯著地消除因?yàn)橹貜?fù)設(shè)計(jì)和重復(fù)開(kāi)發(fā)所帶來(lái)的無(wú)謂成本。 1.1.21.1.2 已有成果已有成果使用現(xiàn)有的單用戶軟件來(lái)實(shí)現(xiàn)多用戶實(shí)時(shí)協(xié)同的想法在很早之前就被提出。早期的系統(tǒng)有microsoft netmeeting 和 sunforum 等等。諸如此類的系統(tǒng)都是提供了一種通用的共享應(yīng)用程序的環(huán)境,而單用戶軟件在這
19、樣一種環(huán)境中被多個(gè)用戶所實(shí)時(shí)使用。而這種通用的應(yīng)用共享系統(tǒng)采用集中的體系結(jié)構(gòu)(centralized architecture)2 7,這也就意味著為了達(dá)到一致性要求,這類應(yīng)用程序必須采用一種順序化的交互方式,即同一時(shí)間只能有一個(gè)用戶操作被共享的應(yīng)用程序。該架構(gòu)的優(yōu)點(diǎn)在于系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,并發(fā)控制的實(shí)現(xiàn)較為容易。但與此同時(shí),這樣的系統(tǒng)存在著嚴(yán)格的 wysiwis(what you see is what i see)要求1 7、響應(yīng)能力差以及不能有效地使用網(wǎng)絡(luò)資源等多方面的問(wèn)題。最終這種體系結(jié)構(gòu)被研究者認(rèn)為是不靈活的,并且不能適應(yīng)并發(fā)操作和多用戶自由交互的要求。為了解決這種集中式結(jié)構(gòu)帶來(lái)的問(wèn)題,一
20、些早期研究原型,如 vconf,dialogo 等采用復(fù)制的體系結(jié)構(gòu)(replicated architecture)5 6,即在整個(gè)協(xié)同系統(tǒng)中,單用戶應(yīng)用程序在每個(gè)客戶端均有實(shí)例存在。該結(jié)構(gòu)有助于實(shí)現(xiàn)好的響應(yīng)性、不嚴(yán)格的 wysiwis 和有效的網(wǎng)絡(luò)使用,并且支持并發(fā)協(xié)作。但與此同時(shí),這類系統(tǒng)面臨一致性維護(hù)、外部資源管理和新加入者協(xié)調(diào)等方面的問(wèn)題。這些技術(shù)障礙多年來(lái)阻滯了這一體系架構(gòu)的發(fā)展,甚至有些研究人員開(kāi)始認(rèn)為復(fù)制結(jié)構(gòu)是一個(gè)錯(cuò)誤的方法9。隨著軟件行業(yè)的規(guī)范和設(shè)計(jì)思路的拓展,組件化思想逐漸深入人心。有研究者提出了一種新的復(fù)制式體系結(jié)構(gòu):松散式 jamm(java applets made
21、multiuser) 。這種結(jié)構(gòu)的精髓在于組件替換的思想,即利用應(yīng)用程序級(jí)別的語(yǔ)義信息,在運(yùn)行時(shí)將單用戶應(yīng)用程序的接口自動(dòng)地替換成多用戶協(xié)同應(yīng)用的接口。這種方案能有效地提高本地程序的響應(yīng)速度,提高網(wǎng)絡(luò)利用效率,于此同時(shí)還能維持松散的 wysiwsi。但這種方案的局限性也是巨大的:為了實(shí)現(xiàn)上述目標(biāo),松散式 jamm 要求底層平臺(tái)對(duì)于運(yùn)行時(shí)模塊替換,動(dòng)態(tài)綁定,以及截獲和重現(xiàn)用戶輸入功能的支持。但是遺憾的是,能滿足松散式 jamm 要求的單用戶應(yīng)用程序數(shù)目不多而且不夠流行。 1.1.31.1.3 新的方法和技術(shù)新的方法和技術(shù)近年來(lái),一種新的透明適配方法1出現(xiàn),這種方法宣稱可以將未經(jīng)定制的商業(yè)性的單用
22、戶軟件轉(zhuǎn)換到多用戶的實(shí)時(shí)協(xié)同應(yīng)用,同時(shí)不改變現(xiàn)有軟件的源代碼11 12。研究者將這種方法應(yīng)用在文字編輯軟件(ms word)和幻燈片制作軟件(ms powerpoint)上,并取得了一定的成功。這種方法為我們研究和開(kāi)發(fā)基于互聯(lián)網(wǎng)的協(xié)同軟件系統(tǒng)提供了新的思路。因此,這一方法既不是在操作系統(tǒng)級(jí)別上對(duì)所有應(yīng)用程序進(jìn)行協(xié)同(例如 netmeeting) ,也不是專門針對(duì)一個(gè)接口庫(kù)進(jìn)行的組件替換(例如 jamm) ,它是在單用戶應(yīng)用程序與協(xié)同控制之間加入了一個(gè)恰當(dāng)?shù)倪m配層,使單用戶應(yīng)用程序能透明地轉(zhuǎn)化為多用戶協(xié)同應(yīng)用程序。由于這一方法對(duì)單用戶應(yīng)用程序完全透明,基于透明適配的協(xié)同應(yīng)用程序支持并發(fā)工作、具有
23、好的響應(yīng)能力和松散的 wysiwis,同時(shí)可以避免復(fù)制共享系統(tǒng)所面臨的大多數(shù)問(wèn)題1 13 14。透明適配方法的主要基礎(chǔ)在于單用戶應(yīng)用程序的應(yīng)用程序編程接口(api) 。它的思路是使用這些 api 來(lái)截獲用戶輸入,并對(duì)多個(gè)用戶的操作進(jìn)行并發(fā)控制,同時(shí)將其他用戶對(duì)應(yīng)用程序的操作回顯到本地。但這一方法仍面臨一些問(wèn)題和局限,需要進(jìn)一步檢驗(yàn)和完善。尤其是針對(duì)具有復(fù)雜數(shù)據(jù)結(jié)構(gòu)和多種對(duì)象類型的大型應(yīng)用程序,如何擴(kuò)展和修改透明適配方法使之適應(yīng)更多,更復(fù)雜應(yīng)用程序的需要,仍需要進(jìn)一步深入的研究,而這也正是本文的目的所在。1.21.2 研究和設(shè)計(jì)目標(biāo)研究和設(shè)計(jì)目標(biāo)1、本文選擇主流應(yīng)用軟件 microsoft ex
24、cel 為研究載體,采用透明適配方法將其轉(zhuǎn)化為一個(gè)基于互聯(lián)網(wǎng)的多用戶實(shí)時(shí)共享協(xié)同系統(tǒng)原型,并使其支持多用戶并發(fā)工作,具有較好的響應(yīng)能力和理想的用戶體驗(yàn),同時(shí)對(duì)這一原型系統(tǒng)進(jìn)行測(cè)試和評(píng)價(jià)。2、本文深入分析透明適配方法中的技術(shù)關(guān)鍵,討論實(shí)現(xiàn)對(duì)單用戶軟件“透明地”轉(zhuǎn)化為多用戶實(shí)時(shí)協(xié)同軟件的一般化的技術(shù)、一般化的構(gòu)建步驟,在上一個(gè)目標(biāo)完成的基礎(chǔ)上,進(jìn)行歸納和總結(jié),提出一套標(biāo)準(zhǔn)規(guī)范,嘗試提出實(shí)現(xiàn)一個(gè)低侵入性架構(gòu)的方案,并分析其得到推廣的可行性。 1.31.3 研究?jī)r(jià)值研究?jī)r(jià)值與應(yīng)用價(jià)值與應(yīng)用價(jià)值cscw 的研究具有重大現(xiàn)實(shí)意義:通過(guò)建立計(jì)算機(jī)支持的協(xié)同工作環(huán)境,改善人們進(jìn)行信息交流和共享的方式,消除或減
25、少人們?cè)跁r(shí)間和空間上的分隔和障礙,提高群體工作質(zhì)量和效率,從而提高企業(yè)、機(jī)關(guān)、團(tuán)體乃至整個(gè)社會(huì)的整體效益和人們的生活質(zhì)量。而信息資源共享正在成為一種趨勢(shì),正在逐漸融入社會(huì)生活的方方面面。信息資源的共享,特別是科學(xué)數(shù)據(jù)和資源的共享,正得到政府有關(guān)部門的廣泛關(guān)注和大力支持。當(dāng)前,我國(guó)在 cscw 與信息共享的研究方面仍存在著嚴(yán)重分離的現(xiàn)象,缺乏 cscw 和信息共享的結(jié)合研究。尤其是在基于信息共享的復(fù)雜 cscw 應(yīng)用領(lǐng)域,相關(guān)理論、模型和關(guān)鍵技術(shù)等還幾乎是一片空白。而有效發(fā)揮單用戶交互式應(yīng)用軟件在多用戶實(shí)時(shí)協(xié)同環(huán)境中的推動(dòng)作用,既是一種機(jī)遇,更是一項(xiàng)挑戰(zhàn)。此項(xiàng)技術(shù)一旦成熟,無(wú)數(shù)的單用戶應(yīng)用軟件可
26、以透明化地轉(zhuǎn)變?yōu)閰f(xié)同工具,能夠極大地增加可用的協(xié)同應(yīng)用軟件的數(shù)量。對(duì)于軟件的供應(yīng)商來(lái)說(shuō),這意味著可以增加產(chǎn)品的價(jià)值,延長(zhǎng)現(xiàn)有產(chǎn)品的生命周期,以增加利潤(rùn)。對(duì)于軟件的消費(fèi)方,這意味著他們不僅能夠進(jìn)行合作,而且可以使用他們所熟悉的應(yīng)用軟件。而作為研究者,我們可以提出一套標(biāo)準(zhǔn),將一般單用戶軟件和操作系統(tǒng)的接口進(jìn)行規(guī)范化,甚至能夠?qū)崿F(xiàn)一種無(wú)侵入性或低侵入性的架構(gòu)(framework) ,將主流單用戶軟件納入其中,完美地實(shí)現(xiàn)對(duì)多用戶實(shí)時(shí)協(xié)同工作的支持,而這些都具有巨大的應(yīng)用前景和市場(chǎng)價(jià)值。特別地,在圖形圖像和多媒體設(shè)計(jì)領(lǐng)域,這種多人協(xié)同共作的方式更有實(shí)際意義和現(xiàn)實(shí)價(jià)值。相對(duì)于單純的辦公軟件而言,這類主流開(kāi)
27、發(fā)環(huán)境更加復(fù)雜和多元化,同時(shí)所開(kāi)發(fā)項(xiàng)目的規(guī)模也更加巨大,這就意味著多人同時(shí)展開(kāi)工作能有效地提高生產(chǎn)率,多人協(xié)作這樣一個(gè)思維碰撞的環(huán)境也更能激發(fā)創(chuàng)作的靈感。2 2 數(shù)據(jù)層面的適配技術(shù)數(shù)據(jù)層面的適配技術(shù)2.12.1 基本的操作轉(zhuǎn)換技術(shù)基本的操作轉(zhuǎn)換技術(shù)在任何一種多用戶協(xié)同系統(tǒng)的實(shí)現(xiàn)中,數(shù)據(jù)一致性控制都是一項(xiàng)核心的技術(shù)。經(jīng)過(guò)多年的發(fā)展,針對(duì)數(shù)據(jù)一致性控制的解決方案也層出不窮,而操作轉(zhuǎn)換技術(shù)則是其中比較合理的解決方案。操作轉(zhuǎn)換技術(shù)本身是為文本編輯器而設(shè)計(jì)的,那么為了將其應(yīng)用到數(shù)據(jù)結(jié)構(gòu)更加復(fù)雜的應(yīng)用程序中,勢(shì)必要對(duì)其進(jìn)行擴(kuò)展。操作轉(zhuǎn)換技術(shù)高度的可擴(kuò)展性就成為我們選擇它作為數(shù)據(jù)一致性控制解決方案的重要原因
28、。操作轉(zhuǎn)換技術(shù)可以用以下例子來(lái)解釋:在一個(gè)復(fù)制結(jié)構(gòu)的協(xié)同應(yīng)用程序中,兩個(gè)用戶(用戶 1 和用戶 2)同時(shí)操作一份文本文件,該文本文件中只有“abc”這樣一個(gè)字符串。用戶 1 向文件起始位置插入一個(gè)新字符“x” ,那么該操作可以被描述成用戶 1 在“0”這個(gè)位置插入了字符“x” 。那么在此之后文檔應(yīng)變成“xabc” 。但在這一操作未被發(fā)送到用戶 2 之前,用戶 2 仍然認(rèn)為文件內(nèi)容為“abc”并希望刪除“c”這個(gè)字符,該操作可以被描述為用戶 2 在“2”這個(gè)位置刪除了字符“c” 。在此我們假設(shè)用戶 1 的操作先于用戶 2 的操作,那么當(dāng)用戶 2 的操作被傳送到用戶 1 處的時(shí)候,倘若我們?nèi)院?jiǎn)單地
29、認(rèn)為用戶 2 在“2”這個(gè)位置刪除了字符“c” ,那么由于文件內(nèi)容已經(jīng)變?yōu)椤皒abc” ,我們就會(huì)錯(cuò)誤地把字符“b”刪除,這就造成了數(shù)據(jù)的不一致性。那么,為了保證數(shù)據(jù)一致性,我們必須將傳遞過(guò)來(lái)的用戶 2 的操作轉(zhuǎn)換為在“3”這個(gè)位置刪除字符“c” ,才能保證兩用戶共享數(shù)據(jù)的一致性。總的說(shuō)來(lái),基本的操作轉(zhuǎn)換技術(shù)的核心就在于將傳遞過(guò)來(lái)操作信息的參數(shù)根據(jù)各個(gè)不同協(xié)同用戶的操作進(jìn)行規(guī)整和轉(zhuǎn)換,以使別處傳遞過(guò)來(lái)的用戶操作信息能夠正確地作用到當(dāng)前狀態(tài)下的文檔中,進(jìn)而達(dá)到保證協(xié)同用戶間數(shù)據(jù)一致性的目的。為了有效地實(shí)現(xiàn)數(shù)據(jù)一致性,操作轉(zhuǎn)換技術(shù)實(shí)現(xiàn)了兩個(gè)基本模型:數(shù)據(jù)模型和操作模型。數(shù)據(jù)模型定義了協(xié)同系統(tǒng)中共享
30、數(shù)據(jù)的尋址方式,即數(shù)據(jù)是如何被排列和組織起來(lái)的;操作模型則定義了一系列基本的操作,這些操作是一切復(fù)雜操作的基礎(chǔ),因此也被稱為元操作。在上述基本操作轉(zhuǎn)換技術(shù)中,數(shù)據(jù)模型即為一個(gè)線性的地址空間,所有的對(duì)象都按照順序排列在這個(gè)地址空間中供用戶操作;而操作模型則由兩個(gè)元操作組成:插入操作和刪除操作。2.22.2 樹(shù)狀線性結(jié)構(gòu)樹(shù)狀線性結(jié)構(gòu) 2.2.12.2.1 定義和性質(zhì)定義和性質(zhì)基本的操作轉(zhuǎn)換技術(shù)能夠有效地實(shí)現(xiàn)在一個(gè)線性地址空間內(nèi)的數(shù)據(jù)一致性,對(duì)于更為復(fù)雜的文件結(jié)構(gòu),如多個(gè)地址空間或地址空間之間具有層次結(jié)構(gòu)或繼承關(guān)系的文件結(jié)構(gòu)則無(wú)能為力。為了應(yīng)對(duì)這種情況,研究者對(duì)操作轉(zhuǎn)換技術(shù)進(jìn)行擴(kuò)展,將它的應(yīng)用范圍從
31、普通文本文件擴(kuò)展到基于 xml 規(guī)范的文件上去。經(jīng)擴(kuò)展后的操作轉(zhuǎn)換技術(shù),原本的一維線性地址空間被擴(kuò)展成了一組具有相互關(guān)聯(lián)的線性地址空間。這些地址空間的相互關(guān)聯(lián)類似于 xml 文件中的節(jié)點(diǎn)間的關(guān)系,即構(gòu)成一個(gè)樹(shù)型結(jié)構(gòu)(見(jiàn)圖 2.1) 。.線性空間:線性空間:.線性空間:線性空間:.線性空間:線性空間:.線性空間:線性空間:.線性空間:線性空間:.線性空間:線性空間:.圖 2.1 擴(kuò)展后的地址空間:樹(shù)狀線性結(jié)構(gòu)由圖 2.1 我們可以看出,擴(kuò)展后的操作轉(zhuǎn)換技術(shù)擁有一個(gè)樹(shù)形的地址空間,樹(shù)的每一個(gè)節(jié)點(diǎn)都是一個(gè)域,域中有多個(gè)一維線性空間。父節(jié)點(diǎn)中線性地址空間的每一個(gè)元素都對(duì)應(yīng)了子節(jié)點(diǎn)中的一個(gè)域。這樣類似于
32、 xml 文件的結(jié)構(gòu)讓我們能方便有效地找到整個(gè)數(shù)據(jù)模型中的任何一個(gè)對(duì)象。特別需要提出的是,當(dāng)一個(gè)對(duì)象沒(méi)有子節(jié)點(diǎn),即對(duì)象中不具有下一級(jí)結(jié)構(gòu)時(shí),我們認(rèn)為其為終結(jié)對(duì)象,反之我們認(rèn)為它為中間對(duì)象,即對(duì)象中仍有指向下一級(jí)對(duì)象的鏈接。值得注意的是,這種擴(kuò)展之后的數(shù)據(jù)模型僅僅表示了被操作對(duì)象地址之間的關(guān)系,而不是對(duì)象之間的關(guān)系。在一個(gè)復(fù)雜的應(yīng)用程序中,對(duì)象之間的關(guān)系可能會(huì)更加復(fù)雜,但對(duì)于操作轉(zhuǎn)換技術(shù)而言,我們只需要關(guān)注對(duì)象地址間的關(guān)系就足以滿足需求。更進(jìn)一步說(shuō),兩個(gè)對(duì)象被認(rèn)為是臨近的,并不一定意味著這兩個(gè)對(duì)象實(shí)際的位置關(guān)系臨近或是在內(nèi)存中的位置臨近,而是僅僅說(shuō)明對(duì)于操作而言,這兩者的地址是接近的。 2.2.
33、12.2.1 尋址方式尋址方式在擴(kuò)展后的樹(shù)形地址空間中,每個(gè)節(jié)點(diǎn)中的任何一個(gè)對(duì)象都可以用一個(gè)唯一的地址對(duì)來(lái)描述。其中 n 表示該節(jié)點(diǎn)中的某個(gè)一維線性空間的地址,而 p 則表示該對(duì)象在這個(gè)一( , )n p維線性地址中的位置。那么,為了描述樹(shù)形地址空間中的任意一個(gè)對(duì)象,我們需要一組這樣的地址對(duì)來(lái)描述對(duì)象的地址,在這里,我們用一個(gè) vector 來(lái)盛放這樣一組地址:0011(,),( ,),.,( ,),.,(,)iikkvpnpn pn pnp其中表示了第 層的地址。依照這樣的方式,自根節(jié)點(diǎn)開(kāi)始尋址, ( ,),(0)iivp in pik i遍歷整個(gè) vector,總能找到目標(biāo)對(duì)象。2.32.
34、3 擴(kuò)展后的操作轉(zhuǎn)換技術(shù)擴(kuò)展后的操作轉(zhuǎn)換技術(shù)為了使操作轉(zhuǎn)換技術(shù)能應(yīng)用于復(fù)雜的文件數(shù)據(jù),我們需要將操作操作轉(zhuǎn)換技術(shù)擴(kuò)展到具有樹(shù)狀線性結(jié)構(gòu)特征的文件數(shù)據(jù)上。前文提到,操作轉(zhuǎn)換技術(shù)有兩個(gè)重要模型,數(shù)據(jù)模型和操作模型,而由上文所述,我們可以將數(shù)據(jù)模型由一維線性結(jié)構(gòu)擴(kuò)展為樹(shù)狀線性結(jié)構(gòu),而操作模型也要做相應(yīng)的更改以適應(yīng)數(shù)據(jù)模型的變化。 2.3.12.3.1 操作間的關(guān)系判斷策略操作間的關(guān)系判斷策略在擴(kuò)展后的樹(shù)狀線性結(jié)構(gòu)中,一個(gè)操作所作用的對(duì)象可能會(huì)落在任意一個(gè)樹(shù)節(jié)點(diǎn)所包含的任何一個(gè)一維線性結(jié)構(gòu)中,這個(gè)特定的一維線性結(jié)構(gòu)被稱為該操作的目標(biāo)域目標(biāo)域。在擴(kuò)展后的操作轉(zhuǎn)換技術(shù)中,確定兩個(gè)操作目標(biāo)域之間的關(guān)系對(duì)于正
35、確進(jìn)行操作轉(zhuǎn)換具有重大的意義。仿照數(shù)據(jù)結(jié)構(gòu)中樹(shù)的定義,我們給兩個(gè)目標(biāo)域之間的關(guān)系做如下定義:1.若目標(biāo)域 a 中有一個(gè)元素是指向目標(biāo)域 b,那么目標(biāo)域 a 被稱為目標(biāo)域 b 的一個(gè)父域父域。2.從根節(jié)點(diǎn)出發(fā)到某個(gè)操作的目標(biāo)域所經(jīng)過(guò)的所有域的序列,稱為到該操作域的域路徑域路徑。當(dāng)數(shù)據(jù)模型擴(kuò)展成為樹(shù)狀線性結(jié)構(gòu)后,多個(gè)用戶所產(chǎn)生的操作可能會(huì)落到相同或不同的目標(biāo)域中,這些目標(biāo)域又可能具有類似樹(shù)結(jié)構(gòu)中的父子關(guān)系,如何才能保證操作轉(zhuǎn)換技術(shù)能正確地將用戶操作進(jìn)行轉(zhuǎn)換,以保障數(shù)據(jù)的一致性,成為很重要的一個(gè)問(wèn)題。當(dāng)兩個(gè)操作并發(fā)進(jìn)行時(shí),某些情況下需要對(duì)其中的操作做轉(zhuǎn)換,而某些情況下卻不用。我們用一個(gè)例子來(lái)說(shuō)明這一
36、問(wèn)題。假設(shè)目前存在一個(gè)最簡(jiǎn)單的兩層樹(shù)狀結(jié)構(gòu),根節(jié)點(diǎn)僅有一個(gè)一維線性結(jié)構(gòu),且共有 3 個(gè)對(duì)象,指向下一級(jí)節(jié)點(diǎn)。每個(gè)第二級(jí)節(jié)點(diǎn)中均有兩個(gè)一維線性結(jié)構(gòu),如下圖所示:01200001122330011操操作作3 3操操作作2 2操操作作n n操操作作4 4操操作作1 1圖 2.2 樹(shù)狀線性結(jié)構(gòu)中的操作轉(zhuǎn)換在上述這樣一個(gè)簡(jiǎn)單的樹(shù)狀線性結(jié)構(gòu)中,假設(shè)存在兩個(gè)并發(fā)的操作,稱之為操做和操作n,其中=1,2,3,4。為了方便,我們總假設(shè)操作先于操作發(fā)生。我們以此來(lái)考察操作xxxn1 到操作 4。1.若=1,即操作 1 先于操作發(fā)生,由于操作 1 處于操作的父域上,操作 1 有可能xnn影響到操作所在域的地址,因此
37、必須對(duì)操作做轉(zhuǎn)換。nn2.若=2,即操作 2 先于操作發(fā)生,由于操作 2 與操作具有同一個(gè)目標(biāo)域,操作 2xnn有可能影響到操作所在域的地址,因此必須對(duì)操作做轉(zhuǎn)換。nn3.若=3,即操作 3 先于操作發(fā)生,由于操作 3 與操作既不具有同一個(gè)目標(biāo)域,也xnn不在操作的父域中,操作 3 不可能影響到操作所在域的地址,因此不需要對(duì)操作做轉(zhuǎn)換。nnn4.若=4,即操作 4 先于操作發(fā)生,雖然操作 4 與操作具有同一個(gè)父域,但是二者xnn的目標(biāo)域不同,操作 4 不可能影響到操作所在域的地址,因此不需要對(duì)操作做轉(zhuǎn)換。nn經(jīng)過(guò)上述四種情況的考察,我們可以得出結(jié)論,當(dāng)操作先于操作發(fā)生時(shí),當(dāng)且僅當(dāng)以xn下兩種情
38、況下,操作需要針對(duì)操作進(jìn)行轉(zhuǎn)換:nx1.操作和操作具有相同的目標(biāo)域;xn2.操作的目標(biāo)域是操作的父域。xn更深入地研究可以發(fā)現(xiàn),上述兩種情況仍可以總結(jié)成一種情況,即當(dāng)操作的目標(biāo)域位于x操作的目標(biāo)域的域路徑上時(shí),操作需要針對(duì)操作進(jìn)行轉(zhuǎn)換。nnx 2.3.22.3.2 根據(jù)地址對(duì)判斷操作間的關(guān)系根據(jù)地址對(duì)判斷操作間的關(guān)系在 2.2.1 節(jié)中,本文提到在樹(shù)狀線性結(jié)構(gòu)中,用一組形如的地址對(duì)來(lái)描述對(duì)象的地( , )n p址,并將這一組地址對(duì)存放在一個(gè) vector 中。利用這一結(jié)果,我們可以將 2.3.1 節(jié)中所述的操作間關(guān)系判斷策略用偽代碼的方式描述出來(lái),進(jìn)而可以使用實(shí)際代碼將這一特性實(shí)現(xiàn)。基于 c+
39、語(yǔ)法的偽代碼如下圖所示:圖 2.3 用地址對(duì)判斷操作間關(guān)系的偽代碼上述代碼利用地址對(duì)來(lái)檢測(cè)兩個(gè)操作目標(biāo)域之間的關(guān)系。根據(jù) 2.3.1 節(jié)中的策略,我們首先利用 isdomaindependent 函數(shù)檢驗(yàn)兩操作目標(biāo)域是否獨(dú)立,若兩函數(shù)不獨(dú)立,再進(jìn)一步判斷兩目標(biāo)域是否相同或者具有父子繼承關(guān)系。在函數(shù) isdomaindependent 中,若操做的域路徑長(zhǎng)度小于操作,說(shuō)明操作的目標(biāo)域nxn位于操作的的上級(jí)節(jié)點(diǎn)中,那么返回 true;反之,則遍歷操作的整個(gè)目標(biāo)路徑,若有任何xx一個(gè)節(jié)點(diǎn)與操做的不重合,也返回 true。若上述情況均不滿足,則返回 false,即兩者的目n標(biāo)域不獨(dú)立。函數(shù) check
40、targetdomainrelation 則進(jìn)一步細(xì)化了兩個(gè)操作目標(biāo)域之間的關(guān)系。首先調(diào)用isdomaindependent 判斷兩目標(biāo)域是否獨(dú)立,若不獨(dú)立,則根據(jù)兩操作目標(biāo)域域路徑長(zhǎng)度來(lái)判斷兩操作目標(biāo)域是同一目標(biāo)域還是繼承關(guān)系。綜上,通過(guò)圖 2.3 中所示的兩個(gè)函數(shù),我們能利用兩操作的地址對(duì),清晰地確定出兩操作目標(biāo)域間的關(guān)系,以確定是否需要對(duì)后發(fā)操作實(shí)行操作轉(zhuǎn)換。3 3 應(yīng)用層面的適配技術(shù)應(yīng)用層面的適配技術(shù)3.13.1 microsoftmicrosoft excelexcel 工作簿的數(shù)據(jù)結(jié)構(gòu)工作簿的數(shù)據(jù)結(jié)構(gòu) 3.1.13.1.1 概述概述由第二章所述,一致性控制的核心為操作轉(zhuǎn)換技術(shù),而操
41、作轉(zhuǎn)換技術(shù)包含數(shù)據(jù)模型和操作模型兩個(gè)元素。本文選取了 microsoft excel 作為研究載體,因此要首先對(duì) excel 工作簿的數(shù)據(jù)結(jié)構(gòu)進(jìn)行深入的研究和分析,一邊將操作轉(zhuǎn)換技術(shù)應(yīng)用到這種特定的應(yīng)用程序上。 3.1.23.1.2 從用戶角度看從用戶角度看 excelexcel 工作表工作表從用戶角度看,一個(gè) excel 工作表如下圖所示:圖 3.1 excel 用戶界面與簡(jiǎn)單的文本不同,excel 工作表是一種具有復(fù)雜結(jié)構(gòu)的文件類型。從用戶的角度看,一個(gè)excel 工作簿(workbook)內(nèi)含有多個(gè)工作表(worksheet) ,每一個(gè)工作表內(nèi)又具有復(fù)雜多樣的數(shù)據(jù)對(duì)象。一個(gè)工作表內(nèi)含有一
42、張以行列方式表示的表,表內(nèi)的每個(gè)單元格中具有相關(guān)的文本。同時(shí),一個(gè)工作表內(nèi)還可能含有圖形和圖表對(duì)象,這些圖形和圖標(biāo)對(duì)象還可能與表格中單元格數(shù)據(jù)有一定的聯(lián)系,如圖 3.1 所示。在相對(duì)位置上,這些圖形和圖表可能被放置到工作表界面的任意位置,而且用戶可以隨時(shí)調(diào)整其位置。根據(jù)第二章的論述,操作轉(zhuǎn)換技術(shù)必須最終作用在一個(gè)線性地址空間上,而這種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)似乎與操作轉(zhuǎn)換技術(shù)的要求并不匹配。但是經(jīng)過(guò)研究發(fā)現(xiàn),這樣一種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)同樣可以與操作轉(zhuǎn)換技術(shù)對(duì)數(shù)據(jù)地址空間的要求相匹配。原因在于,我們?cè)谶@里并不關(guān)心用戶看到的數(shù)據(jù)結(jié)構(gòu)是怎么樣的,我們更為關(guān)心從編程接口上所反映出的底層數(shù)據(jù)結(jié)構(gòu)的狀態(tài)。單純從編程接口
43、上看,excel 這種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)恰好能滿足第二章所述的擴(kuò)展后操作轉(zhuǎn)換技術(shù)對(duì)數(shù)據(jù)地址空間的要求。 3.1.33.1.3 從編程接口角度看從編程接口角度看 excelexcel 工作表工作表microsoft excel 組件對(duì)象模型(com)提供了一系列復(fù)雜多樣的編程接口(api)和對(duì)象,利用這些接口和對(duì)象,我們可以用 com 自動(dòng)化(automation)的方式來(lái)控制 microsoft excel應(yīng)用程序,并操縱 excel 文檔數(shù)據(jù)。在這眾多的接口和對(duì)象中,僅有一部分是比較重要或是我們需要用到的,我們用一個(gè)示意圖來(lái)表示這些對(duì)象間的相互關(guān)系:工作簿對(duì)象應(yīng)用程序?qū)ο骯pplication工
44、作簿對(duì)象workbook工作簿對(duì)象workbook.調(diào)用getworkbook方法工作表對(duì)象worksheet工作表對(duì)象worksheet.調(diào)用getworksheet方法單元格對(duì)象range圖形對(duì)象shape圖表對(duì)象chart調(diào)用getshape方法調(diào)用getchart方法調(diào)用getrange方法.圖 3.2 excel 組件對(duì)象模型示意圖由上圖,excel 組件對(duì)象模型的基本類型層次結(jié)構(gòu)以樹(shù)型結(jié)構(gòu)出現(xiàn),最頂層的 application對(duì)象代表了一個(gè) excel 應(yīng)用程序本身,它含有大量關(guān)于運(yùn)行時(shí)應(yīng)用程序的屬性,用戶和對(duì)象信息,其主要作用在于控制 excel 應(yīng)用程序的一般狀態(tài),顯示屬性,以
45、及通過(guò)此對(duì)象來(lái)獲取其他對(duì)象。workbook 對(duì)象代表了一個(gè) excel 工作簿。在一個(gè) application 對(duì)象中,有一組 workbook 對(duì)象,組成一個(gè)被稱為 workbooks 的集合。我們可以通過(guò) getworkbook 方法來(lái)取到某一個(gè)工作簿的引用,也可以利用這個(gè)集合來(lái)創(chuàng)建、打開(kāi)、關(guān)閉一個(gè)工作簿。workbook 對(duì)象也提供了大量的屬性,用于運(yùn)行時(shí)定義一個(gè)工作簿的各種狀態(tài)。同時(shí),也可以通過(guò) workbook 對(duì)象來(lái)獲取指向worksheet 對(duì)象的引用。worksheet 對(duì)象代表了一個(gè) excel 工作表。在一個(gè) workbook 對(duì)象中,同樣有一組worksheet 對(duì)象,
46、組成一個(gè)被稱為 worksheets 的集合。正如圖 3.1 所示,當(dāng)前打開(kāi)的工作簿內(nèi)含有三個(gè)工作表:sheet1,sheet2 和 sheet3。我們可以通過(guò) getworksheet 方法來(lái)取得某一個(gè)工作表的引用,同時(shí)也可以利用 worksheets 集合來(lái)創(chuàng)建、打開(kāi)、關(guān)閉任一個(gè)工作表。worksheet 對(duì)象提供的屬性和方法大都和 workbook 對(duì)象類似,其區(qū)別在于 workbook 對(duì)象中的方法和屬性是對(duì)這個(gè)工作簿下的所有工作表有效,而 worksheet 對(duì)象則是僅僅對(duì)該工作表有效。每一個(gè) worksheet 對(duì)象中仍具有比較復(fù)雜的結(jié)構(gòu)。在每一個(gè) worksheet 對(duì)象中都含有
47、一個(gè)range 對(duì)象,用于表示所有的單元格對(duì)象,即我們可以通過(guò)行列參數(shù)來(lái)找到任何一個(gè)單元格,并對(duì)其進(jìn)行操作。同時(shí),worksheet 對(duì)象中還包含有 shapes 和 charts 對(duì)象,分別表示在這個(gè)工作表中存在的圖形和圖表對(duì)象的集合。這兩個(gè)集合的組成元素分別是 shape 對(duì)象和 chart 對(duì)象,即表示單個(gè)圖形和圖表對(duì)象。當(dāng)然,worksheet 對(duì)象中還含有其他的復(fù)雜對(duì)象,例如表示標(biāo)注的commnet 對(duì)象等等,限于本文篇幅,不一一贅述。綜上所述,我們可以發(fā)現(xiàn),在整個(gè) excel 組件對(duì)象模型中,各個(gè)對(duì)象均是從上層對(duì)象中獲取而來(lái),且每個(gè)對(duì)象中均有指向下層對(duì)象的集合。更加值得注意的是,這
48、些對(duì)象在對(duì)象集合中均是以一維線性的方式進(jìn)行排列(如 workbook 對(duì)象中的 worksheets 集合) ,這就為我們將操作轉(zhuǎn)換技術(shù)應(yīng)用在 excel 文檔上提供了依據(jù)和準(zhǔn)備。3.23.2 樹(shù)狀線性結(jié)構(gòu)的映射樹(shù)狀線性結(jié)構(gòu)的映射 3.2.13.2.1 概述概述由 3.1.3 節(jié)所述,從應(yīng)用程序接口的觀點(diǎn)看,excel 文檔中的對(duì)象呈一種較為規(guī)則的樹(shù)形結(jié)構(gòu),而研究這種樹(shù)形結(jié)構(gòu)能否與第二章所述的擴(kuò)展的操作轉(zhuǎn)換技術(shù)所要求的數(shù)據(jù)結(jié)構(gòu)相符合,便成為我們將操作轉(zhuǎn)換技術(shù)應(yīng)用于 excel 文檔的前提。仿照第二章圖 2.2 的形式,我們將 excel文檔中各種對(duì)象之間的關(guān)系表示為如下示意圖:workbook
49、:worksheets:0sheet11sheet22sheet30shape11shape22.nshapen0chart11chart22.nchartnshapes:charts:0row11row22.nrownrange:0cell11cell22.ncellncells:圖 3.3 excel 文檔中對(duì)象關(guān)系示意圖由上圖我們可以看到,左側(cè)表示的是從用戶角度看到的 excel 文檔,而右側(cè)表示的則是從應(yīng)用程序接口所描述的 excel 文檔結(jié)構(gòu),兩者之間的關(guān)系可以由圖中的虛線表示。同時(shí),圖中對(duì) excel 文檔結(jié)構(gòu)進(jìn)行了規(guī)整,使它的結(jié)構(gòu)層次類似于第二章所所述的樹(shù)狀線性結(jié)構(gòu)。至此,我們斷
50、言,excel 文檔的結(jié)構(gòu)滿足擴(kuò)展的操作轉(zhuǎn)換技術(shù)對(duì)數(shù)據(jù)結(jié)構(gòu)的要求,下面一節(jié)對(duì)這一結(jié)論進(jìn)行具體分析論證。 3.2.23.2.2 工作表(工作表(worksheetworksheet)對(duì)象序列的映射)對(duì)象序列的映射由上兩節(jié)所述,無(wú)論從用戶角度還是從應(yīng)用程序接口角度,在一個(gè) excel 文檔中,工作表是以一個(gè)序列的形式出現(xiàn)的,正如圖 3.2 所示。經(jīng)過(guò)對(duì) excel 組件對(duì)象模型中 workbook 對(duì)象中的 worksheets 屬性進(jìn)行考察,我們發(fā)現(xiàn),有兩種方式可以引用一個(gè)工作表對(duì)象。一種是按照名字查找,另一種則是根據(jù)工作表的序號(hào)進(jìn)行查找。即既可以用形如 getitem(0)的方式索引一個(gè)工作表
51、對(duì)象,也可以用形如 getitem(“sheet1”)的方式應(yīng)用該對(duì)象。這也就意味著從應(yīng)用程序接口的角度看,工作表對(duì)象序列可以被認(rèn)為是一個(gè)一維線性空間,即所有的工作表按照順序被排成一列,而這恰好符合操作轉(zhuǎn)換技術(shù)所要求的數(shù)據(jù)結(jié)構(gòu),因此在工作表層面上的操作可以直接應(yīng)用操作轉(zhuǎn)換技術(shù)。值得一提的是,在這里我們不采用按照名字索引對(duì)象的方式。盡管采用這種唯一性命名的方式可以讓在工作表層面的操作免于實(shí)行操作轉(zhuǎn)換,但其開(kāi)銷卻是非常巨大的。在當(dāng)前采用的復(fù)制式體系結(jié)構(gòu)中,多個(gè)用戶同時(shí)擁有一份 excel 文檔的副本,當(dāng)他們對(duì)各自文檔副本的工作表進(jìn)行增、刪、改操作時(shí),由于網(wǎng)絡(luò)延遲等原因,各個(gè)用戶所操作的工作表的名字
52、很有可能不同,這也就意味著會(huì)有潛在的造成數(shù)據(jù)不一致的危險(xiǎn)。假如采用這種按照名字索引對(duì)象的方式,我們就必須在每個(gè)客戶端維護(hù)一個(gè)全局的對(duì)象名稱表,以保證操作對(duì)數(shù)據(jù)的一致性,而這種開(kāi)銷是非常巨大的。綜上所述,在一個(gè) excel 文檔中,工作表對(duì)象序列呈一個(gè)一維線性結(jié)構(gòu),而這正好滿足了操作轉(zhuǎn)換技術(shù)的要求,可以使用操作轉(zhuǎn)換技術(shù)來(lái)保證數(shù)據(jù)的一致性。 3.2.33.2.3 工作表內(nèi)部對(duì)象的映射工作表內(nèi)部對(duì)象的映射一個(gè) excel 工作表中仍然具有較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但本文所關(guān)心的范圍主要有兩個(gè)部分:表格區(qū)和繪圖區(qū)。顧名思義,表格區(qū)即是 excel 工作表中表格所在的區(qū)域,它的表現(xiàn)形式為一個(gè)單元格二元矩陣。根
53、據(jù) excel 版本的不同,這個(gè)矩陣的行列數(shù)目略有不同。microsoft excel 2000 至 2003版本中,表格區(qū)有 65536 行,256 列;而在 microsoft excel 2007 中,這一數(shù)據(jù)則被擴(kuò)展為1048576 行和 256 列。雖然表格區(qū)的數(shù)據(jù)結(jié)構(gòu)為一個(gè)二維矩陣,但 excel 組件對(duì)象模型中仍然提供了獨(dú)立的行對(duì)象(row)和列對(duì)象(column) ,因此我們可以將表格區(qū)處理為兩個(gè)具有集成結(jié)構(gòu)的一維線性空間,這樣就可以將操作轉(zhuǎn)換技術(shù)應(yīng)用分別應(yīng)用在行對(duì)象和列對(duì)象上,即表格區(qū)可以完全映射為一個(gè)深度為 2 的樹(shù)狀線性結(jié)構(gòu)。繪圖區(qū)則是一個(gè)統(tǒng)稱,在實(shí)際的 excel 工作
54、表中,繪圖區(qū)其實(shí)含有多個(gè)對(duì)象序列,即凡是不屬于表格區(qū)的對(duì)象都會(huì)出現(xiàn)在繪圖區(qū)中,例如圖形,圖表,單元格注釋等。以應(yīng)用程序接口的角度看,這些對(duì)像均以序列的形式出現(xiàn),而且可以用索引的方式來(lái)引用,盡管實(shí)際存儲(chǔ)的形式可能不是如此。在本文范圍中,我們認(rèn)為,這些繪圖去的對(duì)象分屬于不同的對(duì)象序列,如圖形對(duì)象的集合為 shapes,圖表對(duì)象的集合為 notes 等等,這種理解方式既能屏蔽底層實(shí)現(xiàn)細(xì)節(jié),又不影響對(duì)于 excel 文檔結(jié)構(gòu)的準(zhǔn)確把握。由此,在繪圖區(qū)中,這些不同的對(duì)象序列均為一維線性結(jié)構(gòu),且可以用索引形式來(lái)引用其中的對(duì)象,則操作轉(zhuǎn)換技術(shù)可以順利地應(yīng)用在這些對(duì)象序列上,以保證數(shù)據(jù)的一致性。另外值得強(qiáng)調(diào)的
55、一點(diǎn)是,在繪圖區(qū)中,對(duì)象的索引跟對(duì)象的 z-order(即對(duì)象的疊放次序)息息相關(guān)。例如,在圖形序列 shapes 中,排在前面的圖形的 z-order 永遠(yuǎn)比排在后面的 z-order 小,表現(xiàn)在用戶界面上就是位于更底層的圖層。這就決定了我們?cè)趯?duì)圖形序列進(jìn)行一致性控制實(shí)際上就是對(duì)圖形疊放次序進(jìn)行一致性控制,這樣的話,當(dāng)用戶手動(dòng)更改圖形疊放次序時(shí)(如點(diǎn)擊右鍵菜單中的“疊放次序”一欄)就相當(dāng)于更改圖形對(duì)象的索引,就會(huì)同樣會(huì)出現(xiàn)一致性控制的問(wèn)題,而這也為圖形對(duì)象的一致性控制增加了復(fù)雜性。 3.2.43.2.4 對(duì)象內(nèi)部數(shù)據(jù)的映射對(duì)象內(nèi)部數(shù)據(jù)的映射對(duì)于每個(gè)單元格對(duì)象,圖形對(duì)象或者圖標(biāo)對(duì)象,在 exc
56、el 中均具有進(jìn)一步的內(nèi)部結(jié)構(gòu),例如單元格內(nèi)部有文字,圖形對(duì)象內(nèi)部也可以嵌入文字。這些對(duì)象的內(nèi)部數(shù)據(jù)結(jié)構(gòu)均為一維線性結(jié)構(gòu)(如單元格內(nèi)的文字) ,理論上直接滿足操作轉(zhuǎn)換技術(shù)對(duì)數(shù)據(jù)結(jié)構(gòu)的要求。但能否在這些對(duì)象內(nèi)部數(shù)據(jù)上使用操作轉(zhuǎn)換技術(shù)保證數(shù)據(jù)一致性,仍需要進(jìn)一步論證。我們以最簡(jiǎn)單的單元格對(duì)象為例。單元格對(duì)象內(nèi)部數(shù)據(jù)實(shí)質(zhì)上是一個(gè)帶格式的字符串序列,那么基于上述理由,我們應(yīng)該可以使用操作轉(zhuǎn)換技術(shù)來(lái)實(shí)現(xiàn)單元格內(nèi)部字符的數(shù)據(jù)一致性。但事實(shí)并非如次。造成這一現(xiàn)象的根本原因在于,excel 組件對(duì)象模型中并沒(méi)有提供讀取單元格編輯狀態(tài)下光標(biāo)位置的 api。在 excel 應(yīng)用程序中,單元格的狀態(tài)有兩種:常規(guī)狀態(tài)
57、和編輯狀態(tài)。用戶只能在編輯狀態(tài)下向單元格內(nèi)插入數(shù)據(jù),且各個(gè)單元格內(nèi)的數(shù)據(jù)相互獨(dú)立,即每個(gè)單元格的編輯都相當(dāng)于在編輯一個(gè)“小型文本文件” 。我們假設(shè)要實(shí)現(xiàn)單元格內(nèi)部字符級(jí)別的數(shù)據(jù)一致性,那個(gè)當(dāng)多個(gè)用戶同時(shí)對(duì)一個(gè)單元格進(jìn)行編輯的時(shí)候,根據(jù)第二章的論述,我們必須要知道每個(gè)用戶當(dāng)前的光標(biāo)位置,以便確定其將要操作的字符位置。而 excel 恰恰沒(méi)有提供這一層次上的 api,這也就造成了實(shí)現(xiàn)之一目標(biāo)的不便。假若我們一定要實(shí)現(xiàn)單元格內(nèi)部字符級(jí)別的數(shù)據(jù)一致性,則需要做如下的工作:1.單元格編輯狀態(tài)下監(jiān)視用戶對(duì)左右方向鍵的使用,因?yàn)榉较蜴I會(huì)改變光標(biāo)位置;2.在每個(gè)客戶端維護(hù)一張表,這張表記錄了所有編輯這一單元格
58、用戶的光標(biāo)位置;3.任一用戶每一次光標(biāo)的改變均要對(duì)所有用戶廣播;4.任一用戶進(jìn)入編輯狀態(tài)(如雙擊鼠標(biāo),按下 f2 鍵)和離開(kāi)編輯狀態(tài)(如選中其他單元格)均要廣播;5.一旦用戶在編輯狀態(tài)按下 esc 鍵,則要撤銷所有的操作,并清空所有用戶處關(guān)于該用戶此次編輯信息和光標(biāo)位置的緩存。綜上所述,實(shí)現(xiàn)單元格內(nèi)部字符級(jí)別數(shù)據(jù)一致性所要付出巨大的代價(jià),而實(shí)現(xiàn)這種一致性所帶來(lái)的好處卻極為有限。因此,本文在原型實(shí)現(xiàn)中就沒(méi)有實(shí)現(xiàn)單元格內(nèi)部字符級(jí)別的數(shù)據(jù)一致性。那么,本文將 excel 工作表中的一個(gè)單元格映射為樹(shù)狀線性結(jié)構(gòu)的葉子節(jié)點(diǎn),即一個(gè)單元格操作即為一個(gè)原子操作,同一時(shí)刻一個(gè)單元格只能被一個(gè)用戶編輯,這也就保
59、證了整體上文檔數(shù)據(jù)的一致性。與此類似的,一個(gè)圖形對(duì)象以及圖表對(duì)象等,在本文中均認(rèn)為是用戶的最小操作單元。 3.2.53.2.5 總結(jié)總結(jié)在以上論述的基礎(chǔ)上,我們發(fā)現(xiàn) excel 文檔可以被完全映射為一個(gè)滿足操作轉(zhuǎn)換技術(shù)要求的樹(shù)狀線性結(jié)構(gòu),如下圖所示:workbookworksheets:0sheet11sheet22sheet30shape11shape22.nshapen0chart11chart22.nchartnshapes:charts:0row11row22.nrownrange:0cell11cell22.ncellncells:worksheetrowworksheetworks
60、heetrowrow.圖 3.4 excel 文檔映射成樹(shù)狀線性結(jié)構(gòu)如圖 3.4 所示,在這個(gè)樹(shù)狀線性結(jié)構(gòu)中,根節(jié)點(diǎn)是工作表對(duì)象,其中含有一個(gè)工作簿對(duì)象的線性序列,而每一個(gè)工作簿對(duì)象中含有多個(gè)線性序列,分別為表格行序列,圖形序列和圖標(biāo)序列等。而第三層中則是每個(gè)行對(duì)象中的單元格序列。與此同時(shí),在這個(gè)結(jié)構(gòu)中,每個(gè)線性序列均有自己獨(dú)一無(wú)二的名字,至此,我們成功地把 excel 文檔映射成為一個(gè)滿足操作轉(zhuǎn)換技術(shù)的樹(shù)狀線性結(jié)構(gòu)。結(jié)合圖 3.4 和第二章所論述的尋址方式,我們發(fā)現(xiàn):要訪問(wèn)一個(gè)工作表(worksheet)對(duì)象,只需要提供一個(gè)含有域名稱和索引的地址對(duì),即形如(“worksheet” ,1)形式
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車車載網(wǎng)絡(luò)控制技術(shù) 試題庫(kù)及答案 選擇題
- 2025年上半年宣城市宣州區(qū)國(guó)投智能化科技限公司工作人員招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年宜都市中路建設(shè)開(kāi)發(fā)限公司公開(kāi)引進(jìn)急需專業(yè)技術(shù)人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省馬鞍山市事業(yè)單位招聘110人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省阜陽(yáng)市住建委所屬國(guó)企業(yè)招聘56人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省蚌埠市貧困監(jiān)測(cè)信息中心選調(diào)10人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省蕪湖縣自來(lái)水廠招聘筆試易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽池州市規(guī)劃勘測(cè)設(shè)計(jì)總院限公司招聘9人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽水安建設(shè)集團(tuán)股份限公司秋季校園招聘235人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽宿州靈璧縣招聘事業(yè)單位工作人員61人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- YY 0790-2024血液灌流設(shè)備
- 《基于STM32的公交車智能終端設(shè)計(jì)與實(shí)現(xiàn)》
- DB13-T 6021.3-2024 節(jié)水型企業(yè)評(píng)價(jià)導(dǎo)則 第3部分:石油化工業(yè)
- 護(hù)-學(xué)-崗-簽-到-簿
- 2025年日歷(日程安排-可直接打印)
- 易能變頻器edsv300說(shuō)明書
- 人音版音樂(lè)七年級(jí)上冊(cè)《父親的草原母親的河》課件
- 《大客戶銷售培訓(xùn)》課件
- 形象設(shè)計(jì)與化妝技巧學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024廣西百色市平果市事業(yè)單位招聘工作人員歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 口服給藥法課件
評(píng)論
0/150
提交評(píng)論