7

我有一个我想创建的应用程序。但我不知道该怎么做。我正在使用 node.js 并且想使用 couchdb,但是如果像 mongodb 或 riak 这样的东西会是一个更好的选择,我愿意听取他们的想法。但是,我有一个网站,比如说

酷网

上面有一个 couchdb 实例,以及一个管理商店的站点。说一个购物车。数据库包含商店的所有商品和数据。该应用程序本身有一个管理后端来管理该数据并可以更改项目。我想要做的是能够让用户与互联网断开连接,并且仍然有管理员后端工作。我意识到要使其正常工作,我需要将客户端框架与我的模型/路由/控制器/任何东西一起使用。但我不确定的是如何让网站在离线时运行。如果在本地安装 couchdb 可以在重新联机时将数据从本地同步到远程,如果管理员用户在计算机上,我可以让他们安装沙发。但这可能很混乱。

另外,如果管理员用户在平板电脑或手机上怎么办?我需要一个实际的移动应用程序和一个桌面应用程序来执行此操作吗?有什么方法可以设置它,以便最终用户无缝连接。我也希望最终用户也可以离线使用,但更大的受众是管理员。

另一个用例,店内 POS 系统。电源熄灭。但是 POS 系统可以从网络加载到平板电脑上,如果 wifi 不可用,他们仍然可以进行基于卡的销售,因为该应用程序可以离线使用。

我只是不知道该怎么做。假设我需要一个可以处理数据以及后端的客户端框架。像余烬或棱角分明的东西。还有像meteor和derby js这样的all in one stack,但那些不是完全离线的,而是为了实时的出现。虽然流星确实有迷你蒙戈所以它可能值得研究。

我希望有人可以帮助我弄清楚如何让这个设置工作,最好是在沙发上,但如果我有办法同步数据,其他 nosql 也可以工作。

4

3 回答 3

6

我不确定它是否适合你,但我已经考虑这样的应用程序很长一段时间了,并且一直在对可能的情况进行一些研究。我能想出的最佳解决方案是使用带有 couchdb 的服务器并基于客户端编写应用程序。然后对于数据存储,使用pouchdb并定期将 pouchdb 与您的服务器端 couchdb 同步(如果应用程序在线)。我知道邮袋处于早期阶段,尚未准备好生产,但如果你愿意投入一些工作,我会说它是可行的。

于 2012-08-29T12:24:49.383 回答
5

如果您希望客户端在脱机和联机时运行顺畅(例如断电的 POS),那么我建议您让应用程序主要在本地存储上工作,并通过后台发布或同步到云。

本地存储选项可以是从轻量级(如 sqlite、sqlexpress、firebird)到无 sql 选项(如 mongo、couchdb 等)的所有内容......

但对于客户端或设备,请考虑配置的易用性和选项的重量。您还需要考虑客户端的类型——您是否有许多平台,从设备到 PC 不等?您不想要具有大量配置和运行时占用空间的东西。这在服务方面很好。

在服务方面,请考虑数据的性质以及它是否更适合交易/关系系统(银行等)或最终一致/非交易(no-sql)文档。不要忘记混合动力作为一种选择。还要考虑服务平台 - 例如,节点与 mongodb 配合得很好(从前到后的 json 对象)......

设备和服务存储选项可以不同(并且可能应该)由服务接口(soap、rest/http、套接字等)分开。

很难有一个适合所有解决方案的解决方案,但通常在设备或客户端上轻量级的东西(如 sqlite)便于安装/配置,而服务端的可扩展性(如 sqlserver/mysql 或 couchdb/mongodb)是有意义的。

一些阅读链接:

您的问题非常广泛,没有一种适合所有解决方案的尺寸。希望我提供了一些可供考虑的选项。

于 2012-08-29T01:25:15.833 回答
4

有一个有趣的项目叫做 AppJs ( http://appjs.com/ ),它将 Node.JS 和 Chrominium 打包为桌面环境。它目前非常新鲜(文档很少),但它似乎很简单(您将使用与在线应用程序相同的工具)。

至于同步离线和在线环境。我怀疑您是否可以按照您设想的方式依赖 CouchDB。CouchDB 移动支持并不像某些文档所建议的那样全面。所以从这个意义上说,它与使用 SQL/Mongo/Punchcards 没有什么不同。

您可能会更幸运地基于 XML 或 JSON(或纯文本)设计合适的序列化方案,并在在线和离线安装之间传递文件。

编辑——写这篇文章后,Node Webkit—— http ://nwjs.io/——显然是 App.js 最明显的替代品。它有一个非常简单的 API 和一些很棒的特性。

于 2012-08-29T12:05:26.840 回答