1

短いバージョン:ユーザー/リクエストの数が少なく、データ量が比較的多いクライアント/サーバー アプリケーション用の Java ネットワーキング フレームワークの選択に関するアドバイス (長所/短所) が必要です。

可能なオプション:

  1. RMI
  2. アパッチ川
  3. Netty (これはより非同期指向のようですが、同期呼び出しを実行できますか?)
  4. 私の人生を楽にする他のフレームワークはありますか? :)

長いバージョン:私が取り組んでいる現在のプロジェクトは、ユーザーがサプライ チェーンの一部を最適化できるようにする Java で記述されたデスクトップ アプリケーションです。これまでのアプリケーションはデスクトップのみでした。ローカルマシンにデータベースがインストールされていて、それだけでした。現在、共有/ネットワーク データベースをサポートするようにコードを変更するという新しい要件があります。ネットワーク サーバーにデータベースをインストールし、アプリケーションのいくつかのインスタンスを起動すると、(予想どおり) 多くの問題が明らかになりました。最大の問題は、データベースの相互作用が並行性を念頭に置いて開発されていないという事実から生じます。多くのロック待機があり、いくつかのデッドロックが発生しています。新しい要件に対応するために、データ アクセス レイヤーを変更することが決定されました。

データ アクセスとビジネス ロジックを処理するクライアントとサーバーでアプリケーションを分離せずに、同時アクセスを可能にする DAL を作成することはできないようです。非常に高性能なソリューションは必要ありません。メッセージはそれほど多くありませんが、問題はデータの量にあります。

一般的な使用シナリオは次のようになります。

  1. アプリケーションを開始する
  2. CSV ファイル (通常は 600MB から 1GB の間) からデータをインポートし、将来の使用のために保存します
  3. シナリオ構成(ごく少量のデータ)を追加して保存
  4. 最適化を起動します (ステップ 1 からデータを取得し、構成を適用し、いくつかの最適化/制限を適用します)
  5. 最適化結果を表示します。

ステップ 4 はサーバーで実行され、ステップ 1 ~ 3 および 5 はクライアントで実行されます。

提案/アドバイスはありますか?ありがとう。

4

1 に答える 1

0

したがって、本当の問題は、大量のデータをアップロードする方法です。そのようなソリューションについては、RMI には行きません。制限が強すぎます。Apache River はある種の発明のようです。Netty は、低レベルのネットワーク フレームワークです。独自のプロトコルを作成する必要があります。

シンプルな HTTP サーバーを使用し、HTTP POST リクエストでデータをアップロードするだけです。Gzip 圧縮を使用できます。HTTP は大きなファイルに非常に適しています。

サーバー側では、サーブレット コンテナ (Tomcat、Jetty など) で十分でしょう。

クライアント側では、Apache HTTP コンポーネントで十分です。Ning Async HTTP Clientを試すこともできます。

于 2013-03-20T21:12:13.937 に答える