offline app
在我们设计一些在线应用时,一般会有两种设计方法。一种是客户端/浏览器只负责展示,所有客户端的指令都发往服务端,然后服务端再告诉客户端接下来需要做哪些操作。另外一种就是我们接下来要讲的 offline app。第一种做法在很多低频交互的应用,其实挺好使,比如 ERP,CRM 等。但对于一些高频操作的场景,比如写邮件、编辑文档、记笔记等场景,体验就会差很多,比如 Notion,作为一款记笔记的软件,却需要跟服务端频繁交互,整个的体验就很差。而与之对应的 Roam Research,尽管不提供客户端,只有 Web 端,但由于使用了 offline app 的设计,反而使用起来非常顺滑。
Roam Research 的 offline app 做得非常透明,如下图所示,在顶上会有一个小圆点,标记当前的状态,绿色表示跟服务端完全同步,橙色表示本地或者服务端有还没有同步的信息。点开之后,会有一个详细的信息,包括了本地和远程还没有提交的更改。
offline app 设计的好处是平滑,但坏处也有。比如开发难度更大,因为你需要把业务逻辑在客户端实现一遍(有的时候需要在客户端和服务端各实现一次),其次还有就是两边修改的合并,以及冲突的处理,对于 Roam Research 来讲,他的一篇文章有很多 block(一个 block 可以认为是一个段落),处理冲突的时候可以简单地把两边新增的 block 合并在一起。而很多业务,对于冲突的容忍度很低,那么对于这种业务,offline 的意义就很小。其次就是 offline app 在运行前,需要加载更多的内容,比如 Roam Research 就会选择把你的全部笔记(不含富媒体部分)都下载下来,然后在本地完成更新,搜索等功能,所以经常可以发现,第一次进入的速度其实很慢。
上面拿笔记软件做 offline 模式的例子,其实在其他软件也有类似的模式,比如 Dropbox 对文件同步的处理,其实也是一种 offline 模式。类似 mosh 这种支持本地回显的 ssh 终端,其实也可以认为是一种 offline 的优化。
版权声明: 本文为 InfoQ 作者【lidaobing】的原创文章。
原文链接:【http://xie.infoq.cn/article/d0cd479d0349a3c03a5869a8b】。文章转载请联系作者。
评论