编写修补程序应用程序以自动更新某些文件

时间:2014-02-12 11:28:37

标签: c#

在我最终决定自己发布问题之前,我已经阅读了几个问题和答案。

我的目标是编写一个修补程序,它使用最新文件检查某些位置的某些内容。它最好是尽可能少地下载和上传,但检测修改后的文件并替换完整文件或 - 最好 - 只有二进制增量。

我考虑过在服务器端制作块的校验和,并在客户端上检查它们,并且只获取那些具有不同校验和的块。

我真正想知道的是理论方法,因为我读了一些VCDIFF和其他方法,但我不确定我理解它们。对这类问题有一个共同的方法吗?大块的想法是正确的吗?我将如何在C#或Java中实现它?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

根据文件类型(文本,二进制),您可以使用diff算法缩小必须发送的更改。

我们的一位实习生已经完成了版本控制管理的研究,他根据一些研究提出了一种差异算法。也许这对你有用。

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

  1. 电子。 Myers,“一种O(ND)差分算法及其变化”,Algorithmica,p。 15,1986。
  2. mmanela,“Diffplex,”http://diffplex.codeplex.com/releases/view/66796
  3. 如果你想发送文件,我至少会检查校验和长度,因为这些文件肯定是唯一的。

    您可以创建类似

    的格式
    • 文件名
    • 校验
    • 长度

    将其发布到服务器。如果出现以下情况,请让它返回:

    1. 该文件尚未在客户端上
    2. 校验和或长度不同
    3. 在所有其他情况下,请保留。