2009-06-25 108 views
6

我正在编写一个从远程MySQL服务器检索数据的Java桌面客户端应用程序。出于开发目的,我已经将它直接连接到MySQL服务器(即使用DriverManager.getConnection(databaseURL)等),但一直打算转向使用Web服务(一旦构建完毕)。我的问题是我是否不能继续直接联系?将桌面客户端直接连接到MySQL是否明智?

什么是Web服务将给我以外的更多的代码来写?我将不得不实施我自己的认证;只依赖MySQL的有什么不对?

(我是在说这个问题而不是消极的,因为我认为这个范例在这些日子里有些皱眉;这就是我为什么这么问的原因,因为在我看来,这是一个完全没问题的问题要做的事情。)

谢谢你的任何见解,你可能会给我!

回答

2

那么,只要你给客户端只有正确的权限的用户,我什么都看不到错误与直接连接到MySQL。也许如果你将要运行很多很多的这些客户端,这将保持与MySQL打开的很多连接,而Web服务可以使用单个连接并处理来自所有客户端的负载。

Web服务的真正用处是当您有许多业务逻辑不能在数据库中时。把这个逻辑放在客户端是一个非常糟糕的主意,因为用户可能会运行过时的版本,等等。此外,Web服务允许您拥有不同类型的客户端(如Windows客户端,Web客户端等),而无需重写除演示外的任何逻辑。

3

有几个原因(排名不分先后):在一个地方

  • 更改业务逻辑,数据库架构的变化对客户端(只是服务)没有影响
  • MySQLs授权系统是相当粗糙
  • 更安全,因为你并不需要与防火墙
  • 无需牛逼打开DB向外界
  • Web服务通过非标准HTTP端口操作,故障少o安装ODBC驱动程序

当然,Web服务不是万能的灵丹妙药。以上一些可能不适用于您的特定场景,请使用最适合您的方式。

0

Web服务将使您能够缓存数据,减少数据库上的压力。 这也可以让您更容易将系统中的数据展示给其他系统。 另一件事是灵活性 - 以Web服务作为另一层,您可以更改单个位置中所有客户端的连接字符串/方案更改,您不必重新分发客户端。
你会需要这些吗?正如你所说,我通常不会去寻找范例,但我认为一个Web服务可能是有意义的。不过,只有你知道你的应用程序的设计:有多少人会使用这个客户端?与MySQL服务器的连接是否需要客户端计算机上的任何特殊软件/配置? (比如甲骨文)。

0

这送入其他的答案,但考虑到,如果你允许客户端直接连接到一台中央服务器,这将给予他们必要的凭据来运行他们在使用的数据库中的任何查询。我不知道MySQL支持MySQL的限制资源使用情况有多好,但我敢打赌,现在确定的客户端可以连接到数据库服务器,并启动一个如此糟糕的查询,从而使您的数据库服务器瘫痪。他们不一定会用恶意的意图来做这件事,也许他们只是试图实现一个你没有想到的额外功能。

所以基本上,什么网络服务可以让你做的是从用户带走一些动力。在这种情况下,他们不需要电力。除非客户当然运行他们自己的数据库服务器,但完全是一个完全不同的环境。 (如果他们要崩溃了自己的数据库,那是他们的事)

+0

是的,这似乎是一个大问题,但我想我可以只限制客户到适当的存储过程的访问和一切都会很好。也许还有更多。 – 2009-06-25 08:20:05

0

直接连接到数据库需要,很明显,具有界面到数据库从Internet直接访问。这意味着,除非您对设置权限的方式非常小心,否则可能会使整个数据库容易受到攻击。而对于Web服务,任何用户对数据库的唯一访问权限是通过Web服务提供的访问/功能。我会提出,正确保护和维护在网络上打开的MySQL数据库比创建Web服务身份验证层所涉及的额外代码更麻烦。

另外,如果你需要以任何方式更改你的表,你就必须更新您的客户端应用程序,而不是只更新Web服务,如果是由客户端生成的查询。

0

以上回答的问题中,有哪些2种方法之间的速度影响?即直接连接到MySQL或使用web服务