2014-02-12 35 views
2

在我最终决定自行发布问题之前,我已阅读过几个关于SO的问题和解答。为某些文件的自动更新编写修补程序应用程序

我的目标是写一个补丁,它会针对一些位置,最多最新文件的某些内容。如果能够尽可能少地下载和上传,最好的办法是检测修改后的文件,并替换完整的文件或者更好的是只替换二进制增量。

我想过做在服务器端块的校验和客户端上对他们的检查,只有得到那些块,有不同的校验。

我真正想知道的是理论方法,因为我读了一下到VCDIFF和其他方法,但我不知道我理解他们。这种问题有没有共同的方法?大块的想法是否正确?我将如何着手在C#或Java中实现它?

预先感谢您!

回答

2

根据文件类型(文本,二进制),你可以使用一个diff算法来缩小你要发送的变化。

我们的一个实习生做的版本控制管理的研究,他与一个diff算法提出了基于一些研究。也许它对你有用。

你可以找到一些文献在这里:

  1. E.迈尔斯“的O(ND)差分算法及其变种,” Algorithmica页。 15,1986.
  2. mmanela,“Diffplex”,http://diffplex.codeplex.com/releases/view/66796

如果你想发送文件,我至少会考虑校验和和长度,因为这些肯定是唯一的。

您可以创建一个格式像

  • 校验
  • 长度

张贴到服务器。让它回归的变化,如果:

  1. 的文件不是在客户端上尚未
  2. 校验或长度不同

在其他情况下,离开它。

+0

这看起来很有趣 - 谢谢!但我认为我需要的是知道如何去做一个补丁。我会创建文件的校验和还是将其与文件中的一些校验和字符串进行比较,我已经在服务器上预先创建了该文件?这是我不明白,我想。 – Igor

+0

查看我的更新回答 –

+0

好的..所以我会先让修补器加载一个包含校验和的文件。然后我读取客户端文件的校验和和日期,并下载具有不同校验和的文件(或文件块)。听起来不错 - 谢谢你:)。如果你不介意的话,我会试试,然后将其标记为正确的答案。谢谢您的帮助! – Igor

相关问题