将多个桌面应用程序连接到一个在线数

时间:2012-10-03 10:21:14

标签: java php mysql synchronizing

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

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

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

  • 我可以在我的Java应用程序中自己实现这一点,也许可以借助于 Web服务器PHP?

我使用MySQL获取信息。

编辑:真正重要的是将项目发送到服务器数据库。例如,使用RSS Feed阅读来阅读它可能不那么棘手。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

然而,你必须处理冲突。 CouchDB唯一支持您的是更容易检测冲突和冲突编辑的数据,因此您的应用程序可以自动或在用户帮助下解决。

另一方面,在中央服务器上生成唯一ID可以像为每个项目ID添加创建用户的ID一样简单。