【问题标题】:connecting to remote database连接远程数据库
【发布时间】:2010-02-15 05:59:12
【问题描述】:

在不使用中间服务器的情况下,通过互联网从 java swing 独立客户端应用程序连接到远程 mysqlserver(数据库)的最佳架构是什么

【问题讨论】:

  • 我提醒你这是远程服务器和分布式客户端架构

标签: java database user-interface connection


【解决方案1】:

您通常不希望将您的数据库直接暴露在互联网上。恕我直言,您真的应该考虑在两者之间放置一个(网络或应用程序)服务器。但是,如果您愿意或必须这样做,您应该付出真正的努力来保护它:非常强大的密码,对所有内容的非常严格的权限,使用带有客户端证书的 SSL,甚至可能设置一个 VPN ......然后这个问题就变得不那么重要了编程而不是配置和服务器故障是获取更多信息的好地方。

我在处理这个问题的 Serverfault 上发现了两个有趣的相关问题(虽然不是 MySQL):

  1. The wisdom of exposing a database server on the internet?
  2. How to expose SQL 2008 database to the world through the Internet?

从架构的角度来看,即使是胖客户端,我也希望在两者之间有一个 Web 服务器,它使用 SOAP 或 REST 为客户端应用程序提供数据库功能。

【讨论】:

  • 当我使用soap rest时,我需要任何中间服务器和特殊的配置设置吗?
【解决方案2】:

如果您想从独立的应用程序中进行连接,那么 JDBC 最适合。

【讨论】:

    【解决方案3】:

    JDBC 会是最好的

    try
    {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      String url = "jdbc:mysql://HOST/DATABASE";
      conn = DriverManager.getConnection(url, "username", "password");
      doTests();
      conn.close();
    }
    

    这是用于不同数据库的连接字符串集合

    http://devdaily.com/java/jdbc-connection-string-mysql-postgresql-sqlserver

    【讨论】:

    • 我想他问的是最好的架构,而不是如何:)
    【解决方案4】:

    您肯定想熟悉concurrency issues in Swing,以及SwingWorker 和SwingUtitlies.invokeLater 之类的结构(参见下面的链接)。从 EventDispatchThread 中进行远程调用会挂起您的 GUI,并为您的用户提供非常糟糕的体验。

    http://java.sun.com/javase/7/docs/api/javax/swing/SwingUtilities.html#invokeLater%28java.lang.Runnable%29

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多