2009-04-03 14 views
5

私はc#winappを使ってjavaアプリケーションを呼び出し、tcpですべてをc#に戻します。C#でJavaアプリケーションを呼び出すWinApp

Javaを使用している理由は、Java APIを受け取ったためです。だから私はそのapiを呼び出し、私が必要なすべてのデータを取得する小さなJavaアプリケーションを書いた。

だから私はこれに別の解決策があるのだろうかと思いました。それは遅くなっているので、特に多くのデータがあります。ローカルマシンの上に

答えて

5

TCP

おかげで(名前付きパイプが少し速くなるかもしれませんが、両端で行うのは難しいかもしれない)、かなり高速である必要があります。

ボトルネックの最大の原因は、データのシリアライズとデシリアライズの可能性が高いことです。現在データを表現するために使用しているフォーマットは何ですか?

+0

私はデータを表すために文字列を使用しています。 CSVのように私は ";"データを分離する。 おそらく最良の解決策ではありません。 – Gerbrand

+0

まあ、少なくとも、それは簡単です。 *より速いかもしれない( "プロトコルバッファ"のような、javaとC#のバージョンを含む)よりシリアライズするエキゾチックな方法がありますが、通常は調査するのが簡単ではありません。送信しているデータの*ボリューム*は何ですか? –

+0

私はapi用のログインとパスワード、必要な情報の種類をjavaに送信します。 Javaはいくつかのケースで約2,000レコードを送り返しています。これは私が情報を必要とするクライアントに依存します。 – Gerbrand

2

これをプロファイルする必要があるように私に聞こえます。あなたはそれが遅いネットワークの側面だと確信していますか?または、シリアル化/デシリアライゼーション、またはデータ送信を超えた実際のクライアント/サーバー処理。

プロファイリングソリューションに対処する前に、特定の問題点を特定する必要があります。

1

あなたはJava APIを受け取って、小さなJava APIを書きました。あなたはjavaを知っています。なぜJavaでアプリケーションの残りの部分も書いていないのですか?

「互換性のない」部品がどれくらいの作業に依存しているかを書き直す方が簡単な場合があります。

+0

メインプログラムはC#で書かれているので、それはできません。この部分は、後の開発段階で追加されます。 – Gerbrand

0

2つの優れたWebサービススタックを使用することをお勧めします。あなたの結果を聞くことは非常に面白いでしょう。それは対話的ではないように聞こえるが、これらのスタックはテキストに変換する負担があっても最適化されている。また、それはあなたの状況に適している場合は、Webサービスを呼び出して並列化する少なくともC#で簡単にスタックを取るために多くの仕事をsholdn'tです。

0

.NETからJavaを呼び出すことができる商用ソリューションもあります(逆も同様です)。私は数年前にJNBridgeを使いました。それは素晴らしいです。

http://www.jnbridge.com/bin/downloads.php?pr=1&id=0で30日間の無料試用版をダウンロードできます(いいえ、私はそれらのために働いていません)。

0

私はJavaでいくつかのプロファイリングを行いました。私が受け取ったAPIのメソッドは、私が気づいた時間を最大限に活用しています。 1200レコードを受け取った場合、私は5分の待ち時間があります。いったんC#で受け取ったら、それをオブジェクトに追加して結果のビューを表示するのに数秒しかかかりません。

私は問題が実際に私の終わりではないと思うか、JNBridgeやwebserviceのようなものを使った方が良いでしょうか?

関連する問題