我正在考虑构建一个支持离线的 Web 应用程序。
我正在考虑的架构如下:
Web 服务器(远程)<--> Web 服务器/缓存(本地)<--> 浏览器/Prism
我为这个模型设想的优点是:
- 部署是基于 Web 的,具有这种方法的所有优点
- 离线启用
- UI (html/js) 同步不是问题
- 数据同步大部分可以自动化
- 只要我保持在 RESTful 范式内
- 我可以根据需要打破这个,但手动同步在很大程度上仍然是外科手术
- 本地 Web 服务器作为服务启动;我可以运行任意代码,包括后台数据同步
- 我完全控制了数据(位置,没有大小限制,用户不可能在不知不觉中删除)
- 带有扩展名的 Prism 可以允许保持 javascript 闭源
对这种架构有什么想法吗?为什么我应该/不应该使用它?我特别在寻找成功/恐怖故事。
长版
笔记:
- 用户不是很懂电脑。例如,即使是表面上解释 Gears 的工作原理也是完全不可能的。
- 如果数据丢失,我将承担责任,即使这真的是用户的错(没有他删除他机器上的随机目录)
- 我可以要求用户在他们的机器上安装一些东西。它不必 100% 基于 Web 和/或在沙盒中运行
这个问题的常见解决方案不知何故感觉不够。以下是对每一个的简短分析。齿轮/HTML5:
- 无法控制数据,用户可以在没有任何警告的情况下删除
- 无法控制数据的位置(跨浏览器和平台不统一)
- 用户需要在浏览器中打开应用程序才能进行同步;没有自动的幕后同步
- 不同的浏览器被区别对待,单台机器上的数据没有统一的视图
- 可用磁盘空间有限
- 同步完全是手动的,基于 sql 的存储使这很痛苦(如果 sql 表被完全复制,那么复杂度会降低,但在我的情况下并非如此)。这是一个非常复杂的问题。
- 我的代码几乎是完全开源的(html/js)
土坯空气:
- 以上的一些
- 没有服务器端包括(!)
- 可以在后台运行,但不能无窗口
- 手动同步
- 网络缓存似乎很复杂
- 不知何故感觉像是一个杂物,我在某些机器上安装时遇到了麻烦
我的要求是:
- 基于网络(必须)。出于多种原因,例如在用户之间共享数据。
- 离线(必须)。应用程序必须完全可以离线使用(有一些罕见的例外)。
- 快速开发(必须)。我是一个单一的开发者,与拥有更多商业资源的玩家对抗。
- 闭源(很高兴拥有)。是的,我了解开源模型。但是,在这一点上,我不希望竞争对手太容易模仿我。同样,他们拥有更多资源,因此他们可以承担我的辛勤工作,并在比我自己更短的时间内使其变得更好。显然,他们仍然可以复制我开发自己的代码——这很好。