• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

服务器端改XML冲突的解决方法讨论

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网 XML文件不同access,那个access数据库好像有防止更改冲突的机制,但是我们“微小”的微软XMLDom没有给我们准备这个防止冲突!



具体例子:
两人同时调用写入XML文件的asp,结果只有一个人能写进去,另外一个却没有。
这跟XMLDom的工作方法有关。
用XMLDom.load(Path)载入文件之后,文本对象被载入内存,只读属性解除。当两个人同时载入一个XML文件时,XMLDom的内容是一样的。这样问题来了。
例如:
tmp1.XML
<Root></Root>


A君在XMLDom根中插入一个子标签<Chd1>Chd1</Chd1>,B君在XMLDom中又插入一个子标签<Chd2>Chd2</Chd2>。然后两个人保存,现在我们来看两人的XMLDom对象都是什么东西


A:
<Root>
<Chd1>Chd1</Chd1>
</Root>


B:
<Root>
<Chd2>Chd2</Chd2>
</Root>


OK,谁处理的慢,谁就被写进tmp1.XML文件啦。
但是我们想得到的是,两个人增加的东西都写入到XML文件,就是tmp1.XML的结果应该是这样的。


tmp1.XML
<Root>
<Chd1>Chd1</Chd1>
<Chd2>Chd2</Chd2>
</Root>


如何解决这个问题呢?


初步构想:
方法1:利用Application.Lock的特性:在载入XML文件之前,建立一个Application,并且Lock起来,在写入完成之后再Unload。那么,同时执行的asp就会停在Application.Lock那里,等Application重新开放再执行下来,从而达到XML异步写入的目的。具体例子:
tmp1.asp
以下内容为程序代码:
<%
application("XMLFiles1"),Lock
XMLDom.loat(path)
处理过程
XMLDom.save(path)
application("XMLFiles1").unlock
%>

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/