这是我第一次为客户开展大型项目。所以我不确定如何解决这个问题。但是我想出了两种不同的想法,但是我需要专业人士对哪种更好的意见:)
情况:
有一个在不同客户端的iPad上运行的应用程序。应用程序数据是使用巨型XML文件存储的。服务器在所有客户端之间共享此XML文件。因此,服务器具有集中式副本,每个客户端都有自己的副本。客户端对其XML副本进行更改后,他们将更新服务器副本,其他客户端将通过更新的服务器副本来更新其副本。
现在,只有一个客户端可以一次进行更改。要解决此问题,我有一种逻辑,即在客户端开始编辑XML之前,他们需要从服务器获取所有权,而服务器只能一次允许一个客户端进行编辑。
视觉表现 :
现在在客户端,我必须考虑一种逻辑,通过该逻辑,我可以更新客户端副本并将其上传到服务器。有两种选择,
选项1 :
在选项1中,我可以使用GDataXML解析器直接处理XML文件,并将该副本上传到服务器。出于持久性考虑,我可以将客户端副本保存在iPad上的文档目录中。
选项2:
在选项2中,我可以读取XML文件,为本地存储创建CoreData表示形式。每当我更新核心数据中的数据时,我也将更改XML文件,而不是将该文件上传到服务器上。双重工作,但我想更好的持久性。
现在,哪一个更强大且更明智?我个人计划执行选项2,因为它在将应用程序数据持久存储在核心数据中时似乎更加健壮。但是选项1似乎更容易实现,但是我不知道持久性会保持多好。
很抱歉提一个冗长的问题,
感谢您的任何输入。
最佳答案
有许多因素会影响选择第一个选项而不是第一个选项。
XML文件有多大?如果需要处理非常大的文档,则可能需要将XML(SAX)逐步解析为核心数据。这样您就可以访问文档的内容,而无需立即将其全部加载到内存中。
您是否需要在数据中运行复杂的查询?如果是这样,最好使用核心数据提取谓词,而不是xpath或XSL。
您已经在使用核心数据了吗?根据XML数据的结构,将数据导入到现有的持久性存储中可能总体上更简单。
否则,您可能需要解析整个文档,然后遍历结果树或使用xpath查询。