首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将项目保存为增量json差异?

是否将项目保存为增量json差异?
EN

Stack Overflow用户
提问于 2013-05-12 22:51:29
回答 1查看 95关注 0票数 2

我一直在构建一个web绘图程序,其中用户的艺术作品的状态被保存为一个json对象。每次我添加到客户端的撤销堆栈(只是一个描述项目状态的json对象数组)时,我也希望将状态保存到服务器。

我想知道是否有一种优雅的方法:1只发送差异,然后2以后能够下载项目并重新创建项目的当前状态?我担心这可能会变得混乱,并且倾向于在每个撤销步骤中只上传完整的json项目状态。有什么建议或建议可以优雅地解决这类问题的项目吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-12 23:08:58

有趣--而且是相当大的--问题。很多实现/模式/解决方案都适用于这个问题,它们根据您跟踪更新的“文档”的类型而有所不同。无论如何,避免发疯的一个简单方法是保存“产生那些状态的命令”,而不是保存“状态”。

如果您的应用程序是完全确定的(我假设它是一个绘图程序),那么您可以肯定,对于给定时间和位置的每个命令,每次执行的结果都是相同的。

所以,我会记下一个“字母表”,代表你的程序中可用的命令:

  • Drawx,y,size,彩色
  • 擦除,y,size
  • Movex,y

诸若此类。您可以从SVG实现中获得灵感。然后向/从服务器推送/拉取命令字符串:

代码语言:javascript
复制
timestamp: MOVE[0,15]DRAW[15,20,4,#000000]ERASE[4,8,10]DRAW[15,20,4,#ff0000]

这显然只是一个通用的、伪代码的想法。希望你能从中得到一些启发。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16508598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档