4

私は、とりわけ、MySQL データベースを読み書きするデータベース クライアントとして機能する Swing GUI アプリケーションに取り組んでいます。現在、明示的なデータベース ホスト名 (IP アドレス) を指定することでデータベースに直接接続する JDBC を使用してデータベースとのやり取りを実装しました (ここで説明されているように: http://www.kitebird.com/articles/jdbc.html )。

組織のローカル ネットワークの一部である PC で GUI クライアント アプリケーションを実行している限り、これは問題なく機能します。したがって、デプロイされているマシンの IP アドレスを指定することで MySQL データベースにアクセスできます。

しかし、組織のネットワークの外部にある (インターネット経由で通信している) コンピューターで GUI クライアント アプリケーションを実行する場合、データベースとの対話を実装する適切な方法は何でしょうか?

私が考えることができる2つの方法は次のとおりです。

  1. インターネット経由で MySQL のデフォルト ポート (3306) で使用できるようにデータベース サーバー マシンを構成すると、データベース サーバーの IP アドレスを指定することで、GUI クライアント アプリケーションからデータベースへの接続を続行できます。

  2. データベース サーバー マシン上で実行され、GUI クライアントと MySQL データベースの間の仲介者として機能する Web サービス (おそらく REST API ベース) を作成します。

正しい方法は、Web サービスを使用する 2 番目のオプションだと思いますが、実装の経験がありません。

したがって、私の結論の質問は次のとおりです。

インターネットを介したデータベースとの通信を実装する正しい方法は何ですか? また、Web サービスを使用する場合は、どこから始めればよいですか? そのようなものを実装するために使用される一般的なライブラリまたはフレームワークは何ですか?

このすべてを読むために忍耐を持っていた人に感謝します.

4

2 に答える 2

0

大きな仕事のように聞こえますが、簡単な答えがあるかどうかはわかりません。データベースへの接続をインターネットに公開しないでください。潜在的な攻撃者にとって強力なベクトルになるためです。

Web サービスは、これに対する非常に優れたソリューションです。RESTful Web サービスの Java 標準は、JCR (JSR-170)、参照実装は Apache Jackrabbit (http://jackrabbit.apache.org/). セットアップは非常に簡単で、そのようなサービスを保護するためのさまざまなオプションがあります.

編集:違います!JAX-RS と Jersey (http://jersey.java.net/) のことです。ごめん!

于 2012-11-20T10:02:44.893 に答える
0

最も簡単な解決策は、VPN をセットアップして、リモート クライアントが同じデータベースに接続できるようにすることです。これにより、セキュリティとインフラストラクチャに関する考慮事項が処理され、アプリケーションを変更する必要がなくなります。

サービスベースのアプローチは 2 番目に好まれます。これはアプリケーションの根本的な再構築であり、通常は多くのトリッキーなパフォーマンスとスケーラビリティの問題をもたらします。推奨事項として、Martin Fowler の Patterns of Enterprise Integration を読むことをお勧めします。これは、SO で回答することが期待できるはるかに複雑な問題です。

MySQL データベースをより広いインターネットに公開しないでください。セキュリティ リスクが大きすぎるだけです。

于 2012-11-20T14:40:11.703 に答える