我一直在构建一个web绘图程序,其中用户的艺术作品的状态被保存为一个json对象。每次我添加到客户端的撤销堆栈(只是一个描述项目状态的json对象数组)时,我也希望将状态保存到服务器。
我想知道是否有一种优雅的方法:1只发送差异,然后2以后能够下载项目并重新创建项目的当前状态?我担心这可能会变得混乱,并且倾向于在每个撤销步骤中只上传完整的json项目状态。有什么建议或建议可以优雅地解决这类问题的项目吗?
发布于 2013-05-12 23:08:58
有趣--而且是相当大的--问题。很多实现/模式/解决方案都适用于这个问题,它们根据您跟踪更新的“文档”的类型而有所不同。无论如何,避免发疯的一个简单方法是保存“产生那些状态的命令”,而不是保存“状态”。
如果您的应用程序是完全确定的(我假设它是一个绘图程序),那么您可以肯定,对于给定时间和位置的每个命令,每次执行的结果都是相同的。
所以,我会记下一个“字母表”,代表你的程序中可用的命令:
诸若此类。您可以从SVG实现中获得灵感。然后向/从服务器推送/拉取命令字符串:
timestamp: MOVE[0,15]DRAW[15,20,4,#000000]ERASE[4,8,10]DRAW[15,20,4,#ff0000]这显然只是一个通用的、伪代码的想法。希望你能从中得到一些启发。
https://stackoverflow.com/questions/16508598
复制相似问题