0

我正在开始一个新项目。它包括:

  • Java 桌面应用程序可通过客户端数据库从 Internet 下载。
  • 互联网上的 PHP 网站,带有服务器数据库。

下载该应用程序的用户将使用它来离线添加项目(现在不重要)到本地数据库。当/如果他在线时,该项目将被添加到服务器数据库中,以便其他连接的用户(通过桌面应用程序或通过网站)可以看到它。我用谷歌搜索了这个问题,发现它比我想象的更复杂。解决方案之一是使用一些现成的工具,例如SymmetricDSDaffodil安全性性能可扩展性方面获得收益。,但是它们很难在客户端和服务器端配置和安装,并且需要访问命令提示符,这需要我传递给专用主机(嗯,这不是一个真正的问题)。此外,我想要的只是我所描述的,而不是这些工具实际提供的所有内容。

  • 我可以在我的 Java 应用程序中自己实现这一点,或者在 Web 服务器 PHP 的帮助下实现吗?

我正在使用 MySQL 获取信息。

编辑:真正重要的是将项目发送到服务器数据库。例如,使用 RSS Feed 阅读可能会降低阅读难度。

4

3 回答 3

1

基本上,您可以使用 HTTP/HTTPS API。当用户在线时,将项目发送到您的 php 文件并在本地数据库中将项目标记为“已发送”。但是您必须控制已编辑或已删除的状态。所以,是的,这很复杂,但却是一个解决方案。

于 2012-10-03T10:36:31.350 回答
1

好吧,我想到的最简单的解决方案是为每个项目保存一个最后编辑日期(在服务器上以及在客户端上)。另外,您必须跟踪客户端从服务器获得最后一次更新的时间。

因此,每当客户端上线时,服务器都会向他发送所有更新。

但是为此您必须确保客户端和服务器上的时间相同,并且如果两个客户端编辑相同的项目会发生什么,这并不能解决问题。

于 2012-10-03T10:39:01.873 回答
0

CouchDB 很好地解决了分布式同步问题,但它是一个 NoSQL DB。根据您的应用程序应该做什么,使用它可以归结为在本地应用程序内部和中央服务器上使用 CouchDB 实例。

尽管如此,你还是必须处理冲突。CouchDB 将支持您的唯一一件事是更容易检测冲突,以及两个冲突编辑的数据,因此您的应用程序可以自动或在用户帮助下解决。

另一方面,在中央服务器上生成一个唯一的 id 就像将创建用户的 id 添加到每个项目 id 一样简单。

于 2012-10-03T10:49:28.457 回答