C# から使用および対話する Java プログラムを作成しました。私たちの選択肢は何ですか?おそらく P/Invoke を使用して C# から参照できるライブラリ (.DLL) として Java アプリケーションをコンパイルすることが最適です。ただし、オンラインでの最初の数回の検索によると、これはオプションではないようです。
ASP.NET を使用して、Java コードを利用した検索エンジンを構築できるようにすることを選択したので、これが他のオプションで可能になる場合はお知らせください。
C# から使用および対話する Java プログラムを作成しました。私たちの選択肢は何ですか?おそらく P/Invoke を使用して C# から参照できるライブラリ (.DLL) として Java アプリケーションをコンパイルすることが最適です。ただし、オンラインでの最初の数回の検索によると、これはオプションではないようです。
ASP.NET を使用して、Java コードを利用した検索エンジンを構築できるようにすることを選択したので、これが他のオプションで可能になる場合はお知らせください。
申し訳ありませんが、C# コードからcannot
Java を呼び出しています。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
次の投稿も役立つかもしれません
おそらく最も簡単な方法は、Java ライブラリの機能を Web サービスとして公開し、asp.net アプリケーションから Web 参照を追加することです。
Java は別のプログラムに組み込むことを意図していないため、ブリッジが必要です。最も簡単な解決策は、ソケットを使用することです。ソケットでコマンドをリッスンする Java プロセスを作成します。C# で、コマンドをソケットに送信し、回答を読み取ります。
ここでの主な問題はシリアライゼーションですが、XML を使用すれば、それほど大きな問題ではなくなります。組み込みの XML シリアル化 (この記事を参照) またはXStreamやSimpleなどのカスタム フレームワークを試してください。
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# コードからの要求を定期的にポーリングする単純なデータベースです。コールバックなどのより緊密な結合が必要な場合は、分散インターフェイスを検討できます。