首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将本地软件转换为在线软件

将本地软件转换为在线软件
EN

Stack Overflow用户
提问于 2014-11-11 18:04:02
回答 1查看 90关注 0票数 1

我们专门为小企业开发了一个管理软件。但是,出乎意料的是,一些大公司喜欢它,并开始使用它。问题是,我们的软件只在本地工作(一家商店),而较大的企业希望我们使软件在线工作(两个或更多的商店在不同的地方,但有相同的数据库)。

因此,我们希望利用我们已经存在的JAVA Swing用户界面,使我们的本地软件在线工作。

我们已经考虑了一些解决方案,但是,由于这将是一个巨大的变化,我们想知道什么是最好的方式进行下去。

重要信息:

  • 用户界面为JAVA,数据库为Postgresql。
  • 我们有成千上万的客户使用我们的软件,他们也想在网上使用。

下面是我们考虑过的解决方案。请告诉我们是否有更好的方法。

解决方案#1

一个单一的数据库在互联网和所有客户端连接到它。

缺点:

  1. 每一个查询都必须访问互联网。
  2. 客户端的源代码需要有数据库密码。那么保安就会被完全破坏。

解决方案#2

所有客户都会在互联网上拥有自己的数据库,拥有不同的密码。

缺点:

  1. 每一个查询都必须访问互联网。
  2. 需要上千个数据库。
  3. 很难维护。

解决方案#3

internet中的单个数据库,但客户端通过验证客户登录数据并返回查询结果的web服务进行连接。

缺点:

  1. 每一个查询都必须访问互联网。
  2. web服务的构建会有点复杂,它必须以某种方式返回结果,我们不知道(可能是简单的csv文本或xml)。

解决方案#4

我们所有的客户在互联网上都会有一个单一的数据库。

此外,所有客户端都将在本地拥有自己的数据库,因此它们可以执行快速选择查询。

每个更新查询将首先发送到web服务,该服务将在联机数据库中执行查询,如果成功执行,则返回。

此外,我们将有一种机制,使本地数据库与在线数据库不时地同步。

缺点:

  1. 非常复杂,很难实施。
  2. 同步机制将需要很高的处理。

有更好的方法吗?怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-11 18:46:21

我将使用解决方案3,构建一个数据库支持的服务/API,并让桌面客户端对自己进行身份验证并使用它。我将避免像解决方案4那样拥有一个本地数据库。您不能依赖您的用户不意外地破坏它,并导致同步丢失或损坏。此外,当您想要创建不同的客户端(例如,移动应用程序)时,拥有一个本地数据库会减慢您的速度。

如果您决定使用解决方案#3,当前的实际标准是基于JSON的REST。另外,您应该注意到,可以使用许多缓存技术来减少实际运行的查询数量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26871426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档