C# から Java コードを操作する
-
20-09-2019 - |
質問
C# から使用して対話することを検討している Java プログラムを作成しました。私たちの選択肢は何でしょうか?最適には、P/Invoke を使用して C# から参照できるライブラリ (.DLL) として Java アプリケーションをコンパイルできるようになります。ただし、オンラインで最初にいくつか検索したところ、これはオプションではないようです。
私たちは ASP.NET を使用して Java コードを活用した検索エンジンを構築できるようにすることを選択しています。そのため、他のオプションが利用できるようになる場合はお知らせください。
解決
ごめんなさい cannot
ジャワを呼び出す code / classes
Directly
C# コードから。
これを行う 1 つの方法は、 wrap
Java クラスを java Web Service
そしてクラスを呼び出します indirectly
C# コード内の Web サービス インターフェイスを介して。
別の方法は使用ですjavareg.exe
これは Java クラスを次のように公開します COM
. 。次の場所で見つけることができます。
C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe
次の投稿も役立つかもしれません
- .NETからJavaクラスを直接呼び出します (ランタイムブリッジを使用)
- Microsoft.NETからJavaを呼び出す
他のヒント
最も簡単な方法は、おそらくWebサービスとしてのJavaライブラリの機能を公開し、あなたのasp.netアプリケーションからWeb参照を追加することです。
Javaは別のプログラムに埋め込むことを意図していないので、あなたはブリッジを必要としています。ソケット上のコマンドをリッスンするJavaプロセスを作成します。最も簡単な解決策は、ソケットを使用することです。 C#では、ソケットにコマンドを送信し、答えを読みます。
ここでの主な問題は、シリアル化されていますが、XMLを使用している場合、それはもう、このような大きな痛みはありません。 この記事を参照)XMLシリアル化を内蔵またはカスタムフレームワークを試してみてくださいhref = "http://xstream.codehaus.org/" のrel = "nofollowをnoreferrer"> XStreamののか、シンプルのます。
.dllファイルでJavaをラップすることは確かに可能であり、10年以上にわたって、コアJavaプラットフォームの一部となっています。 JNI(Javaネイティブ・インターフェース)を使用すると、Cスタイルのリンクを使用してJavaクラスを実行することができることを意味し、あなたのコードでJVMを埋め込むためのインタフェースを持っています。これはあなたが簡単なCのラッパーを記述することを要求することに注意してください、内のサンプルがあります。 http://java.sun.com/docs/books/jni /html/invoke.html#11202する
これらの他の記事のいくつかが示唆したよう、時にはそれがあまり密結合させることが望ましいですので、あなたは別の設計を使用して検討する必要があります。 1つのオプションは、C#のコードからの要求のためのJavaアプリケーションは、定期的にポーリングし、簡単なデータベース、だろう。あなたがタイトなカップリングをしたい場合は、コールバックのようなもののために、あなたは、分散インタフェースで見ることができます。