8

C# から使用および対話する Java プログラムを作成しました。私たちの選択肢は何ですか?おそらく P/Invoke を使用して C# から参照できるライブラリ (.DLL) として Java アプリケーションをコンパイルすることが最適です。ただし、オンラインでの最初の数回の検索によると、これはオプションではないようです。

ASP.NET を使用して、Java コードを利用した検索エンジンを構築できるようにすることを選択したので、これが他のオプションで可能になる場合はお知らせください。

4

4 に答える 4

8

申し訳ありませんが、C# コードからcannotJava を呼び出しています。code / classes Directly

これを行う 1 つの方法はwrap、Java クラスを で作成し、C# コードでその Web サービス インターフェイスを介してjava Web Serviceクラスを呼び出すことです。indirectly

もう 1 つの方法は、 javareg.exe Java クラスを として公開する which を使用することCOMです。次の場所にあります。

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe

次の投稿も役立つかもしれません

于 2010-03-17T12:49:54.803 に答える
5

おそらく最も簡単な方法は、Java ライブラリの機能を Web サービスとして公開し、asp.net アプリケーションから Web 参照を追加することです。

于 2010-03-17T12:47:52.280 に答える
2

Java は別のプログラムに組み込むことを意図していないため、ブリッジが必要です。最も簡単な解決策は、ソケットを使用することです。ソケットでコマンドをリッスンする Java プロセスを作成します。C# で、コマンドをソケットに送信し、回答を読み取ります。

ここでの主な問題はシリアライゼーションですが、XML を使用すれば、それほど大きな問題ではなくなります。組み込みの XML シリアル化 (この記事を参照) またはXStreamSimpleなどのカスタム フレームワークを試してください。

于 2010-03-17T12:52:42.617 に答える
0

Java を .dll にラップすることは確かに可能であり、10 年以上にわたってコア Java プラットフォームの一部となっています。JNI (Java Native Interface) には、コードに JVM を埋め込むためのインターフェースがあります。つまり、C スタイルのリンクを使用して Java クラスを実行できます。これには、単純な C ラッパーを作成する必要があることに注意してください。http: //java.sun.com/docs/books/jni/html/invoke.html#11202内にサンプルがあります。

これらの他の投稿のいくつかが示唆するように、密結合を減らすことが望ましい場合があるため、別の設計の使用を検討することをお勧めします。1 つのオプションは、Java アプリケーションが C# コードからの要求を定期的にポーリングする単純なデータベースです。コールバックなどのより緊密な結合が必要な場合は、分散インターフェイスを検討できます。

于 2012-08-03T21:14:06.587 に答える