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

标签 c#

在我最终决定自己发布这个问题之前,我已经阅读了一些关于 SO 的问题和答案。

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

我考虑过在服务器端对 block 进行校验和,然后在客户端进行检查,然后仅获取具有不同校验和的那些 block 。

我真正想知道的是理论方法,因为我读了一些 VCDIFF 和其他方法,但我不确定我是否理解它们。这类问题有通用的方法吗? block 的想法正确吗?我将如何用 C# 或 Java 实现它?

提前谢谢您!

最佳答案

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

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

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

  1. E. Myers,“O(ND) 差分算法及其变体”,Algorithmica,第 14 页。 1986 年 15 日。
  2. mmanela,“Diffplex”,http://diffplex.codeplex.com/releases/view/66796 .

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

您可以创建类似的格式

  • 文件名
  • 校验和
  • 长度

将其发布到服务器。如果满足以下条件,则让它返回更改:

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

在所有其他情况下,保留它。

关于c# - 编写修补程序应用程序以自动更新某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21726673/

相关文章:

C# - 以编程方式创建 SQL Server 表

c# - 如何在 C# 中更改 Excel 工作表列的格式?

c# - 如何在 C# 中创建 xAPI (Tin Can) LRS (Learning Record Store)

c# - 重启时在 global.asax 中的 Application_Start 之后触发 Application_End

c# - 保存到元组的逻辑问题

javascript - awesomium 网络抓取某些部分

c# - 哪个是必须与语言无关的最有效的序列化技术

c# - 给定一个 .net 控件,我可以获得工具提示吗?

c# - Type.GetType() 和 Assembly.GetType() 返回不同的结果

c# - ASP.NET MVC - 修改 OnActionExecuted 中的 View 结果