随着国内的和国际的通信网络提供快速信息交换,现在计算技术渗透到生活中的各个方面。但是,现有的网络通常仍限于是位置固定的。尽管对国际网络的访问,尤其是对跨越世界的‘Internet’(互联网)的访问,日益重要,但它仍限于有线网络的相对稀少的访问点。
80年代中移动式通信系统的出现表明,通过提供按蜂窝布局排列的复盖着广阔地理区域的发射机系统这个限制可得到缓解,其中这些发射机使用小频率集从而占据相对很小的带宽。在其地理复盖范围内利用容易买到的设备可以方便地建立通信链路。尽管这种基础设施最初是为语音话务研制的,但它已很快地扩展到还可允许数据业务。
当今,可以在大多数语音类移动通信系统上以及几个在不同国家中运行的仅用于数据的网络上建立数据连接。一个例子是最近采用的“全球移动电话系统”或者缩写为GSM,该系统不仅目前是复盖全欧的并可能在未来中短期内复盖全球,而且该系统还可提供高质量语音业务和数据连接。
商业界已把GSM接受为全球复盖的。因为无须附加的网络成本经过相同的硬件可以提供数据连接,普遍预料拥有正确封装式软件的该特定的用户界将会很好地得到诸如电子邮件的移动式数据的好处。目前硬件和软件发展商正努力提供适用于用户需要的服务和应用程序。
但是,存在着一些需要解决的问题。由于经过大气传输数据的特性需要进行大量的错误纠正,因此带宽是受限制的,目前最高可达每秒9600比特。同时,例如象GSM的网络上的移动式数据连接的计费方式是和移动式语音连接的计费方式相同的,即它们的计费是基于连接时间的而不是基于实际的数据传输量的。按照移动式电话行业的典型的最高连接费用以及低的传输速度,目前传输一兆字节的价格约为10美金的连接时间。另一方面,略微便宜但较慢的仅用于数据的面向包交换网具有大的网络换向时间的缺点(在英国换向时间超过20秒并非异常)。因为移动式链路是昂贵的,并且由于大多数常用的网络是以连接时间为基准计费的,不能有效地使用数据链路的应用程序容易浪费金钱。用户希望有效地使用移动式链路并且还希望能够控制对昂贵链路的使用。
另一个问题是使用的方便性。已经可以得到一些应用程序,这些应用程序在一定程度上通过应用先进的压缩方法有效地管理移动式连接。遗憾的是,这些应用程序经常强迫用户采用通常不仅是新的而且是独特的特殊交互方式。在所有的情况下它们具有不同于常规应用程序的“式样”。计算机专业人员通常习惯于数量不多的应用程序,并且不愿采纳新的接口,尤其在新的接口不是用于代替旧的设计而是用于和旧设计一起使用的情况下。
此外,正确地安装所有的通信部件并且起动移动式连接也不是一件简单的工作。理想地,移动式应用程序即使不和常规应用程序相同也应该相类似,并且移动式链路的使用对于用户应该尽可能的透明。
因为必须把网络内部零件接受为给定的并且这种网络内部零件是不受应用程序开发者的影响的,过去对于使用移动式连接中所遇到的各种固有的挑战及问题的解决方案集中在两个方面上,即应用程序本身或者基础通信协议上。下面将考虑这两种方法。改进各个应用程序:
在过去的几年中采纳了许多在移动式链路上运行的应用程序。象mail-reader(邮件读出软件)和news-reader(新闻读出软件)或者WWW-browser(环球网浏览器)这样的程序是特别普遍的,但是还使用着大量由用户建立的移动式应用程序(从而大众很少知道它们)。精巧调整的应用程序具有既可以改造成用于通用的移动式链路又可以改造成用于专用的一种特定移动式网络的优点。这样,它们可以充分利用网络规定的传输特性和带宽,从而提供最佳可能的数据处理。另一方面,这种精巧调整很可能涉及对低层应用程序代码的许多修改,这可能导致与原始应用程序的不可兼容性并会严重地阻碍该应用程序对其它平台及网络的可移植性。这还会导致难以在该应用程序的应用特性和与通信有关的方面之间进行区分。对每个应用程序必须重复许多这样的工作。通信协议的改进
另一种试图改进基础通信协议的方法明显地具有和应用程序无关的优点,从而可避免上述方法的许多缺陷。用于移动式链路的象TCP/IP这样的精巧调整的现有协议(例如应用V Jacobson在‘Request forComment’(RFC)1144,Feb 1990中发表的论文“Compressing TCP/IPheaders for low-speed serial links”(“用于低速串行链路的压缩TCP/IP报头”)里所讨论的压缩TCP/IP报头,或者采用增强型版本TCP/IP如‘移动式IP’或间接式TCP’),或者使这些标准协议适用于别的情况下不兼容的网络上(如IBM公司的ARTour系统所完成的那样),都具有使大量的应用程序可以从这些努力中获益的明显优点。它还清楚地把通信方面和应用程序本身区分出来。遗憾的是,这些通信平台通用地处理数据,从而不能使用专用于应用程序的简化和压缩方法。因此,它们使应用程序成为可移植的并且提供优化的数据传输子系统,但是另一方面在改善应用程序的性能上只起很小的作用。
很明显,可以一起应用这两个方法从而通过把两方面的优势即有效的数据处理和有效的数据传输结合起来得到最好的结果。对于诸如视频或者图象传输的重负荷应用程序这是有用的,但是在一般情况下因为它还把两种方法的缺陷结合起来这样做不是可取的。
两种方法在不同的层次上提高传输子系统的效率。但是对于前面的讨论中所涉及的“可预算性”和“易使用性”上作用很小。虽然在移动式网络内通过在专有协议的顶部上提供标准编程环境开发出允许在移动式链路上运行常规网络应用程序的系统,但在实际上这种方法证明是困难的,因为常规的应用软件是建立在高速链路的顶部上的从而一般对带宽要求很高难以在移动式链路上运行,或者简单地由于太贵而不能运行。各种方法都不能有效地支持交互式应用程序,在其中实际的数据传输只占该应用程序的总运行时间中的一小部分(常常少于1%)。如果与其呼叫费用是以连接时间为基准的电路交换网络(例如GSM网络)一起使用时,这种方法当然尤其受到严厉的限制。如果某时刻没有业务而可断开GSM连接时,在现有的GSM网络上重新建立调制解调器连接所需的平均时间已经确定为28秒,这使以上所述难以解决。
本发明的目的是提供一种改进的系统和方法,用于对在移动式通信网络中相互通信的多个计算机上的复制数据进行管理。
根据本发明提供一种管理共享数据文件的拷贝的方法,这些拷贝保持在可经一个移动式通信网络连接的多个计算机系统上,该方法包括:(a)为共享数据文件的每份拷贝保持一个关于该拷贝的各次修改的记录;(b)经过该移动式通信网络的连接,检索为该共享数据文件的其它各拷贝保持的记录;(c)合并检索的记录以产生一个修改次序;(d)对修改次序施以预定的规则来解决修改次序中的冲突;以及(e)根据解决冲突后的修改次序修正共享文件的拷贝。
通过提供能允许常规应用程序有效使用移动式数据连接的通用平台,上述发明缓解了前面提到的问题。由于这种方法不限于一种应用程序或者不限于一类特定的应用程序,因此它是通用的。另外,由于保持应用程序的通信自主并且安排为以一种有效的方式处理数据,该方法改进了效率。而且由于不必为使用所设置的工具而修改应用程序该方法是容易使用的。
应该注意所提到的“共享”数据文件并不是必须意味着多用户。本发明同等地可应用于单个用户在不同的计算机上“共享”文件的情况,例如在该用户办公室里的计算机以及他离开办公室时为工作而携带的便携式计算机之间“共享”文件。
在最佳实施方式中,所述记录保持步骤(a)是在多个计算机系统的每个系统上执行的,并且在步骤(a)期间这些多个计算机系统不和移动式通信网络连接。另外,这些多个计算机系统最好只在所述检索步骤(b)期间和移动式通信网络连接。
在最佳实施方式中,各个所述步骤(a)至(d)是在所述多个计算机系统的一些系统上执行的,所述步骤(b)包括通过连接移动式通信网络交换由多个计算机系统的所述一些计算机系统所保持的记录,并且所述步骤(e)包括对共享文件的本地拷贝进行修正。通过这种方法,为了能使共享数据文件的本地拷贝得到修正只需对移动式通信网络进行一次连接。
为了帮助自动解决各次修改之间的冲突,在最佳实施方式中当在所述记录保持步骤(a)期间记录修改时随着每次修改存储优先级信息,并且在所述合并步骤(c)中该优先级信息被用于向任何相冲突的修改分配相对的优先级以供所述冲突解决步骤(d)相继地解决冲突。在所述记录保持步骤(a)中存储的优先级信息最好包括进行该修改的用户的身份。另外,在最佳实施方式中,优先级信息还包括时间标记信息,从而较早的修改比较晚的修改具有较高的优先级。但是,可以存储任何其它适用的优先级信息以便可把优先级分配给相冲突的修改。
给出记录的某些如上所述的优先形式之后,接着在最佳实施方式中在冲突解决步骤(d)期间使具有较低优先级的相冲突的修改完全无效。通过采用这种方法,保证保持文件格式,但会丢失信息。替代地,可以采用一种不同的方法,这种方法只使较低优先级修改中的有冲突的部分无效。其优点是仅去掉为了得到无冲突修改集所需的最少数量的信息,但是可能不保持文件格式。很明显可以采取别的定义如何在所述步骤(d)中解决冲突的策略。
为了提高在移动式通信网络上数据传输的效率,最好于沿移动式通信网络发送之前在检索步骤(b)期间先压缩记录。
从本发明的第二个方面的角度来看,提供了一种用于保持共享数据文件的一份拷贝的计算机系统,该共享数据文件的多份拷贝还保持在可经移动式通信网络和该计算机系统连接的多个其它的计算机系统上,每个计算机系统配置成当不和该移动式通信网络连接时保存一个有关其共享文件的拷贝的修改记录,该系统包括:检索装置,用于把该计算机系统和移动式通信网络连接起来以检索为保存在多个其它计算机系统上的共享数据文件的拷贝而保持的记录;合并装置,用于把所检索到的记录和为共享数据文件的本地拷贝而保持的记录合并起来以产生一个修改次序;冲突解决装置,用于应用预定的对修改次序的规则以在修改次序之中解决冲突;以及用于根据解决冲突后的修改次序修正共享文件的本地拷贝的装置。
从第三个角度来看,本发明提供一种数据管理系统,用于管理在多个可经移动式通信网络连接起来的计算机系统上所保存的一个共享数据文件的多份拷贝,该系统包括:和该共享数据文件的每份拷贝相关的记录装置,用于保持对该拷贝所做的修改的记录;检索装置,用于经过对移动式通信网络的连接检索为该共享数据文件的其它拷贝保持的记录;合并装置,用于合并所检索的记录以生成修改次序;冲突解决装置,用于应用预定的对修改次序的规则来解决修改次序中的冲突;以及用于基于解决冲突后的修改次序修正该共享文件的拷贝的装置。
本发明将参照在附图中所示的最佳实施方式仅按示例的方法予以进一步的说明,附图是:
图1表示数据通信系统中不同软件组成部分的基本分类。应用程序100分为其用户接口(‘UI’)105和应用程序的主体部分110。在操作系统层115上,把它非常粗略地划分成用于外部组成部分的存储系统120以及操作系统的驱动程序125。网络130位于下层并由操作系统115驱动。图1的中间一列对与不同部分相关的数据进行分类,并且在右侧带有各个部分所能处理的数据的多少以及其类型性的指示,该类型性指的是通过检查该数据单元所能得到的类型信息的细节。
应用程序层可处理大量的数据并且容易对数据进行分类,在较低层数据尺寸和类型性逐步下降。最终在协议层(驱动程序)小量地处理数据(按“数据包”处理)并且难以得到类型信息。
理论上,移动式通信应该在足够低的一层上进行以便可使大量的应用程序获益,但又应该在足够高的一层上进行以便深入了解所传输数据的类型从而可采用专门化压缩和简化方法。根据本发明的最佳实施方式,移动式通信是在文件系统层进行处理的,这是因为大部分应用程序使用用于数据输入及输出的文件,从而大范围的应用程序可以从中获益。另外,文件是由数据单元而不是由一条一条数据组成的,因此经常可推断出文件类型。而且还认识到在常规操作下不需要和移动式通信的连续连接,这是因为所有应用程序可以运行在本地可得到的数据上,从而可以适当地支持交互式应用程序;仅当偶而为了重新同步文件时才需要进行连接。
和移动式通信网络不同,在有线(“地面”)通信网络领域里已研制一些分布式文件系统。在有线网络中已采用例如Sun微系统公司的Network File System(NFS)或者Transarc公司的Andrew File System(AFS)的网络文件系统以得到对保持在远程节点处的数据文件的访问。这样,本地应用程序可以对保存在远程位置上的数据进行工作并且文件可由许多用户共享。实际上,用户完全察觉不出网络的使用,用户把所有的文件都看成是本地的。在这种最简单的形式下,通过采用某种远程进程调用工具在网络上经重定向读/写操作对这些系统进行操作。为减小网络上的通信负载常常使用超高速缓存。
当允许同时编辑时,常规的文件系统利用各种锁定方法来确保数据的一致性。已经建议用表决代替锁定,但是写访问仍仅限于一个地点并且在访问一个文件之前必须得到对足够多的拷贝的写允许。许多系统用令牌协调对复制文件的访问,但是令牌的传送进而需要操作地点之间的通信链路。在论文“用于复制文件的一致性及恢复控制”中(Proceeding ofthe 10th ACM Symposium on Operating Systems Principles,December1985),Davcev和Burkhard提出一种系统,这种系统在部分断开系统时允许写访问,但这种部分性的断开限于所谓的“多数划分(maiority-partition)”的前提之内。在论文“分布式数据库系统的可靠性机理综述”(Proceeding of the spring COMPCON,February1978)中,Hammer和Shipman提出一种技术,这种技术不需要由于写操作而进行锁定从而允许文件略有偏差,但要求依赖通信链路在严格的时限内解决所产生的不一致性。
Lotus公司的Notes软件允许对它的专用数据库具有多个读/写复制。复制被周期性地协调一致,通常每天不超过一到二次。在复制品之间查出冲突后如果不试图自动地解决这些冲突会造成建立独立的版本,这样一旦出现冲突会需要大量的人工劳动。在欧洲专利申请EP-A-0,684,558中讨论了一种不同的方法,该专利说明一种复制系统,其中多个服务器保持文件的可更新复制品。采用一种描述为“进取性”的更新传播协议,当识别出导致不一致数据的故障后这种协议尽可能快地造成复制品更新。事实上,这些服务器相互协调以检测复制品的不一致性并且启动更新协议在无须等待客户请求数据的前提下检测变坏的或者相冲突的复制品。尽管自动地解决某些冲突,为修补冲突文件可能需要人工干预。
最近,微软公司发布了作为Windows95产品的一部分的“Briefcase Folder”工具。该工具为在其briefcase工具的顶部上编写的应用程序提供了冲突解决的工具,但同时它仅可应用于这些应用程序的子集。另外,它不能自动地启动协调工作并且需要大量的人工指导。
上述文件系统层技术由于它们依赖快速、可连续获得的通信链路和/或它们需要充分使用会严重阻碍长期断开操作周期的锁定方法而不适用于移动式环境。
图2表示最佳实施方式的数据管理系统的建立,在下文中它被称为“移动式应用程序框架”200。在图2的例子中,两个用户210、220本地地操作共享文件(用磁盘符号205表示)的本地拷贝,框架200在底层力图保持这二个拷贝同步。尤其重要的在于要注意到借助该框架不再由应用程序而是由基础的框架进行通信或者启动传输。
一些文件系统,尤其是“CODA”(请参考J Kistler和MSatyanarayanan的论文“Coda文件系统的断开运行”,ACMTransactions on Computer Systems,10(1),Febraary 1992),现已扩充到可在网络停用阶段允许进行断开运行,从而朝这个方向迈出一步。另外,Monica Wachowicz和Stefan Hild的论文“全移动环境下位置和数据管理的组合”(Proceedings of the International Workshop onInformation Visualization and Mobile Computing,Rostock,Germany,February 1996)中说明一种“全移动性”体系结构,在这种体系结构里用户不再随身携带自己的便携式计算机而替代地在其目的地用租赁的计算机注册使用。作为这种体系结构的一部分,设想了一种断开运行,其通过运行在移动式主机上的应用程序在断开方式下处理数据。把数据文件的改变存储起来以便以后和该文件的其它拷贝协调一致。构成该全移动性体系结构的一部分的数据管理子系统的初步轮廓是由Stefan Hild在其观点论文“用于无线节点的断开运行”中表明的,该文发表在Proceedings of the ECOOP‘95 Workshop on Mobility and Replication,European Conference on Object Oriented Programming,August1995。该论文简要地说明在移动环境内断开文件访问和协调的基本概念。
“移动式应用程序框架”采取这种观点:断开运行(即不和固定的主机建立连接)是常态的而连接阶段是例外状态,这种观点和相反的做法恰恰不同。因此,本最佳实施方式的“移动性应用程序框架”在许多方面上不同于常规的网络文件系统和允许断开运行,在后面的更详细讨论中这些方面将更为清楚。
在最佳实施方式中,该“框架”用作为一种工具,以在小数量的用户之间共享少量的最重要的文件。建立这种“工作组”是一个简单的但又是一种自觉的过程。通过采取这种对“共享”概念的小心方法,该“框架”可以提供一种对文件一致性宽松得多的姿态。从而,该“框架”既不是常规网络文件系统的代替物也不是它的扩充而是用于使管理复制文件更为方便。现在更详细地讨论它的某些主要特性。
如上面所概述的那样,该框架着重依赖于断开运行。图3的状态图表示不同的运行方式并且概括说明与网络的其它部分的连接状态。
在常规(断开)运行期间,该框架处于“记录”方式(步骤300)。在这个阶段期间,记录对共享文件执行的所有修改并且把所有修改存储到日志里。不向访问这些共享文件施加任何限制:在共享同一文件的所有节点上同时支持读操作和写操作。
依靠重新接入,该框架重新建立与一些数量的(不必是全部的)保持着该共享文件拷贝的其它地点的连接,并且在步骤310与这些地点交换记录日志。这是唯一一个需要网络连接的步骤(“交换”)。
剩余的其它三个状态用于重新同步该共享文件。首先,在步骤320(“合并”)将从其它地点接收到的日志和本地日志合并成一个唯一的修改次序,接着在步骤330(“解决”)解决冲突,最后在步骤340(“重新运行”)用合并后以及解决冲突后的日志使文件协调一致。
图4表示该框架的内部组成部分并且还给出其命名的一些理由。不仅仅为移动式应用程序提供一个运行的平台,该框架还包括和应用程序运行在同一层上的组成部分(尤其是记录器410),从而提供一种使应用程序在其中运行的“框架”。细节上,这个不同的组成部分是记录器410,其记录所有在共享数据文件的本地拷贝上的修改,在图4中该文件用盘420表示。记录器410可以得到一些模型430,这些模型是对各种文件类型的内容类型和可能的编辑操作的形式说明,用于帮助对修改的检测。可以有对所有文件类型都能工作的缺省值。后面将更详细地讨论这些模型。
控制器440包含大部分逻辑线路,负责启动协调(即发送重新连接事件)并且负责指导协调进程。最好,通信模块450处理与底层移动式通信网络460的实际接口。
在最佳实施方式中,在每个保持着一份共享数据文件拷贝420的计算机系统400上都含有该移动式应用程序框架的每个上述部件。每当一个特定计算机系统400的控制器440确定其共享数据文件的拷贝应该和该数据文件的其它拷贝重新同步时,它将经过移动式通信网络460建立连接,并且将和其它保持着修改记录日志的计算机系统交换所记录的修改日志。接着将由控制器440执行图3的步骤320、330和340以更新共享数据文件的本地拷贝420。
但是,对于熟练的技术人员很显然控制器440和通信模块450可以设置在分离的专用计算机系统上。各个持有该共享数据文件的一份拷贝的系统则包含该移动式应用程序框架的其它部件以便记录该文件这份拷贝所受到的改变。周期性地,可在移动式网络上把控制器440和各计算机系统400连接起来以检索这些计算机所记录的对它们的共享文件的拷贝的改变。接着可由控制器440实施步骤320和330来合并这些拷贝并解决冲突。然后可以重新把控制器440和网络连接起来以便把解决冲突后的修改次序发送给各个计算机系统400。然后为了更新共享文件的各本地拷贝应由各计算机系统400实施步骤340。
在最佳实施方式里不采用这后一种方法,因为这种方法为了更新一个共享数据文件的一份拷贝需要连接网络二次,并且增加了运行开销。此外,因为控制器应该设置在某个中心计算机上,将不能得到有关该共享数据文件的任何特定拷贝所受到的改变的次数的细节,从而控制器必须根据某些其它准则(例如上次更新后所消逝的时间)来决定何时更新文件。这种方式不如当采用本最佳实施方式的系统时根据共享数据文件的拷贝的实际修改行为而进行的更新操作那样有效。但是,后一种方法的确具有只需要一个控制器的优点,并且集中式地管理何时需要决定进行文件拷贝的交换。从而,在某些情况下可能会决定采用后一种方法是值得的。
不论采用那种方法,很明显在不存在任何形式的锁定处理的情况下对于长时间的断开运行很可能会在高动态变化的共享文件之间出现冲突。从而该框架用一致性换取有效性。不只是该框架才具有文件偏差以及相应的不一致性的这种问题;任何分布式系统都在较小程度上承受着这些问题,并且在冲突检测和版本合并上都已进行了许多工作。但是,所有的现有技术或者在一旦检测出冲突时求助用户干涉解决冲突,或者首先避免出现冲突。大多数现有技术采用锁定方法或者锁定方法的衍生物。但是对于该框架,由于长时间的断开运行很清楚任何形式的锁定是毫无可能的。
至于冲突解决,很清楚当不能很方便地把语义意义和文件联系起来时很难智能地解决冲突。尽管大多数方法依靠用户人工地解决冲突,但是我们相信只有在可以自动地解决冲突的情况下用户才能接受断开运行。应该明白不应期待自动解决冲突在所有可想象的情况下产生逻辑上一致的结果。但是,期待着这种协调将产生可和它进行工作的文件。在文本文件的情况下,我们希望得到一种人工很容易清理的文件。在数据文件的情况下,协调处理应该保留文件格式从而可使访问该文件的应用程序仍能读该文件。
从而最佳实施方式的框架需要一种记录及冲突检测方法,这种方法在断开运行下一方面不向对文件的读写访问施加任何限制,另一方面为了得到合理的自动冲突解决记录足够的信息。
按照本发明的最佳实施方式,在第一种情况下,框架内的文件被认为是一个字符序列。在小心地避免任何涉及文件的内容类型的假定的同时,通过周期性地对现行文件和记录器所保持的备份拷贝进行比较来记录修改并且计算对“编辑距离”的一阶逼近。编辑距离是一组把第一字符串转换成第二字符串的编辑操作序列,从而基本上识别出用户怎样修改了文件。但是,它是困难的并且在计算上是昂贵的,从而在本发明的最佳实施方式中使用编辑距离的一阶逼近,因为一阶逼近简单并且在计算上是便宜的,而且已得知它可提供可接受的结果。
根据该方法,定义的两种基本操作,即“插入”操作和“删除”操作。记录器的目的在于按这些操作的序列模拟对记录文件所进行的修改。最好这是通过对两个字符串(现行文件和备份文件)从两端进行比较并且确定这两个字符串中不同的第一字符位置和最后字符位置来完成的。根据这些工作可以推断出是否执行过一次插入、一次删除或者一次删除后的一次插入。
另外,日志中的所有修改是被确定时间的,从而为以后的自动冲突解决提供了基础。可以得到专用于记录处理的模型,还可以得到用于特殊文件格式的编辑操作。例如,可以通过改变模型430之内的文件类型定义修改记录处理,从而比如它可以包含指示记录器410把文件分成一个一个部分并且接着一个一个部分独立得到考虑的信息。
为了自动地解决冲突必须回答两个问题:
首先,必须为每次修改指定优先级,从而当给出两个相冲突的修改时,一个修改可以重写在另一个上。这种优先级分配典型地取决于文件拷贝的位置;一些允许断开操作的文件系统定义一个“主拷贝”,在出现任何冲突的情况下主拷贝 具有超过所有其它拷贝的优先优先级。在最佳实施方式里不采用这种方法,因为我们认为用户可能会使用不同的计算机,在这样的情况下把修改的优先级固定在执行修改的位置是不明智的。替代地,最佳实施方式根据修改文件的用户的身份分配优先级。记录修改的具体时间也用于分配优先级。最好采用早期修改超过晚期修改的观点,因为相反的策略会导致反直观的状态:即前面的修改具有使后面修改更有可能成功的机会。
其次,必须规定对相冲突的修改的处理方法。在本发明的最佳实施方式中已经发现两种策略是特别有用的。借助“全部无效策略”,优先级较低的相冲突修改全部无效。这可能会丢失许多信息,但是保证会保留文件格式。备择地,可以定义一种仅丢弃低优先级修改的冲突部分的“部分无效策略”。很明显,这具有为了导出无冲突的修改集仅仅去掉最少量信息的优点,但是有可能不再保留文件格式。
在该框架内由用户在模型430中可以全局地定义优先级分配规则以及无效策略。图5概括地给出协调处理中的该可定制的组成部分(“模型”)。记录器410周期性地比较用户数据文件420和备份文件500,并确定用户进行的修改。出于这个目的,该模型可具有说明文件格式的概要的“文件模型”510,一组可由用户执行的“编辑操作”520,以及一组把这些编辑操作转换成缺省的插入和删除操作序列的转换规则530。“文件模型”、“编辑操作”以及“转换规则”可以用于为各种特定的文件类型和格式指导记录器410;通过缺省值本最佳实施方式的记录器410只依靠插入和删除操作并且假定一种平等文件格式。
以这种形式检测出的修改存储在日志540里。在协调期间,沿网络从同一文件的其它拷贝中收到的各个日志550由合并程序560采用一组“优先级规则”570的优先级次序得到合并。然后由解决/重新运行装置590应用“无效规则”580来检测及去掉合并后的修改集中的任何冲突。最后,在本地文件拷贝420上执行合并后的并且协调后的日志。以和记录处理相类似的方法,可以得到用于合并处理和协调处理的各种缺省值。但是,用户可能决定通过提供一个替代的“优先级规则”和/或“无效规则”按其希望对这两个处理进行定制。
所有各个可定制的部分组成“模型”430。可以为一组文件定义各种模型,例如为一种特殊文件类型的所有文件或者为一个特定文件定义各种模型。
在Stefan Hild和Peter Robinson合著的论文“移动式环境下的文件复制”中提供了适用于最佳实施方式的移动式应用程序框架的自动冲突解决算法的详细说明,该论文在本申请的优先日期之前尚未公开发表。在本申请的文件中包括该论文的一份拷贝以供参考,从而该论文的内容作为本文的参考资料。该论文详细地概述了用于计算编辑距离的一阶逼近的记录机制,并且给出其合并步骤和协调步骤确实产生可以在共享文件的各本地拷贝执行的唯一无冲突修改序列的数学证明。另外,该论文证明其协调处理可应用于部分协调序列,即应用于在同一时刻并非全部文件都同步的情况,例如某些节点超出移动式通信网络的复盖区域或者由于别的原因目前不能获得。
在本框架的范例中,数据传输不再由应用程序启动而是在框架内启动,即如图3的状态图所示触发协调处理。通信中包括有控制地交换按已知文件类型进行的文件修改。最佳实施方式中日志中所含的数据可在传输前在不同的层次上优化。
首先,可以应用各种无损失的压缩方法。这是直截了当的并且可以在极少或没有代价的情况下进行;大多数通信子系统已经应用包级上的某些形式的以字典为基础的压缩方法。由这些技术所得到的压缩是适度的。
第二,可以使用类型信息并对其施以特殊的压缩方法。取决于确切的文件类型,这些有损的压缩方法在数量上可以比无损方法更有效,但是通常应用起来更费钱。
最后,可以对数据重定比例以反映远程节点的能力。例如,对一个高分辨率图象文件重定比例以反映象素分辨率和彩色分辨率。在该全分辨率图象需要被重新生成时,例如如果需要把它传送到另一个高分辨率节点时,所有为了重新生成该全分辨率图象所需的信息都留在原始地点并且远程节点具有一个指向它的指针。
本移动式应用程序框架的基本目标之一是能够使用现有的工具和程序。但是,本质上它们不能对诸如文件协调等的框架专用功能提供任何支持。因此,我们设想应用程序可以写出“框架明白”的内容并且可以访问框架内部信息,在框架专用功能上用户可利用这些信息得到支持。例如,在协调处理期间失败的修改可被保留,并且如果需要可被恢复。可以标记由其他用户执行的修改。这样,他们可以更透明地进行协调处理并且帮助恢复在别的情况下会丢失的数据。
作为一个例子,可以设想一个简单的框架明白的ASCII代码文本编辑程序(见图6)。通过利用和修改源直接对应的颜色代码610,该编辑程序允许用户“看见”在协调处理期间进行那些修改(通过在文本的适当位置上插入人为的标记指明删除以及失败的修改)。通过定位在这些标记上用户可以检索该修改上的附加信息620,并且如果需要可以倒转其效果。图6表示一个示例的屏幕显示。通过它用户得到一个挽救别的情况下会在协调处理期间丢失的数据的简单工具,所得到的用户接口是信息充足的并且不会察觉成是过载的。
根据上面的说明,很清楚本最佳实施方式的该框架在其结构中的单一模块里(见图4)包含通信的所有方面。这不仅清晰地把和面向通信的方面与框架的面向功能的模块分隔开并且清晰地把通信工作与应用程序在框架内的运行分隔开。通信不再由应用程序启动而是由框架启动。通过把所有的通信操作集中在一个部位有可能紧紧地控制所有通信,如果一组应用程序独立地根据它们自身的需要驱动通信执行一个任务将是不可能的。
常规通信系统和本移动式应用程序框架之间的第二个重要不同在于启动通信的原因。在常规系统中,为了保证连续操作应用程序和其它地点进行通信以交换信息和数据;数据是在“请求”的基础上交换的。在本框架内,在本地保持数据,从而为了保证应用程序的运行不需要进行通信。但是,在本地保持数据必然会导致数据过期,因此本框架单独启动通信以更新数据文件。这意味着通信和交互式应用程序情况下不同,不是由运行应用程序的步调(例如,依赖外部数据继续运行)所决定的进度约束的。相反,协调及同步连接的频率和时机可以大大改变。其确切的时刻可由一些因素确定:由日志驱动的更新。可以按记录的修改规定每个文件在任何时刻所能许可的偏差量。如果进行了过多的修改(即所有修改的加权总长度超出规定的限制)则触发协调处理。可以建立具有特别低可允许偏差量的所谓“流水线文件”,这实际上意味着文件的每次改变会立即传播到所有的其它地点。这些文件可以用作为各地点之间交换报文的方便手段。周期性的更新。可以按周期性的间隔连接所有的地点。这保证即使未超过触发由日志驱动的更新临界阈限最终仍能传播小修改。现有网络的价格和可获性。在能得到更便宜的网络连接价格或者能得到更便宜的网络的非峰值期间触发协调工作的条件可以是不严格的。例如,可以想象在一定时间周期内可以把节点实际上和一条闲空的有线网络连接起来,从而持久地进行协调。这样,本框架实际上象一个常规的“网络文件系统”那样运行。任何改变立即向所有的拷贝传播并且因此不太会出现冲突。在另一种极端情况下,如果检测出移动式数据通道处于低劣状态,造成高出错率和多次重新传播并产生高传输成本,则可以推迟协调步骤。根据请求更新。一些关键性的应用程序需要最新的数据。从而可由应用程序请求协调并且由该框架立即进行服务。很明显,这些应用程序必须写成为框架明白应用程序。
可以设想用户可以制订该框架用于协调处理的一定的财务预算。通过监视典型的修改方式以及相应地改变再连接这是有可能的。
上述说明描述本最佳实施方式的移动式应用程序框架,它是一种允许标准应用程序在可预算的和可控制的方式下使用移动式数据链路的通用系统。它是通过在文件系统层上增加断开操作支持能力实现的。通过采用为每个拷贝文件建立详细修改历史的记录器并且允许自动地解决冲突,由于长时间运行于断开操作下而由不受限制的访问而造成的文件偏差问题得到解决。尽管一种通用的算法从来都不可期望在所有的情况下产生最佳结果,但其产生的文件总是可工作的并且如果需要可由人工清理。
在几个用户之间出现共享同一文件的频率很可能远小于在不同的计算机上出现同一用户的多个复制文件的频率。例如,可能经过本框架把大的固定台式计算机的文件空间镜象到小的移动式笔记本计算机上。在这些情况下,用户不仅要在两种计算机上面对相同的工作环境,而且还要面对相同的应用程序。因此,本质上本框架是易于使用的。借助本框架即使使用慢的移动式数据连接对用户也可以做成是透明的。
把该框架定位在文件系统层上允许通信子系统利用类型信息,在传输之前通过对文件应用特定的压缩方法和简化方法可以容易地导出类型信息。
此外,通过把所有的通信方面包含在一个模块里并且由单个组成部件控制,可以容易地监视传输;并且由于断开运行的好处可以很大地改变传输频率以使传输成本可得到预算控制。