2010-12-22 13 views
0

私はJavaで作られたゲームサーバーを持っています。 .NET DLLを読み込み、そのDLL内のイベント/関数を呼び出し、次にゲームサーバー(Java)で関数を呼び出す必要があるプラグインシステムを作成したいと考えています。現時点で私に問題を与えている唯一の部分は、javaと.NET dllのインターフェース方法です。実行C#のコードとその逆

私が検索し、いくつかのものを見つけましたが、それらはすべての製品に基づいていたと私はそのために私自身のインターフェイスを作りたいしてきました。ああ、それは高性能を必要とすることは言うまでもありませんが、コードは、それが必要な場合は、秒で多くの時間呼び出されます。誰かが私にこのアイデアを教えてくれますか?

EDIT:

それがより明確にするには:

  1. ゲームサーバ(Javaアプリケーション)は、単にJavaのことで呼び出される.NET機能
  2. .NETのDLL内の関数を呼び出す複数の機能を呼び出しますゲームサーバー(Javaアプリケーション)から。
+2

可能重複。Javaでのネットアセンブリ](http://stackoverflow.com/questions/1418032/best-and-simple-way-to-call-net-assemblies-in-java) – NotMe

+0

.NET内のすべてをホストし、IKVMを介してJavaパーツを実行する.NETをJVMの制限に合わせようとするよりも簡単です。 –

答えて

2

Windowsをターゲットにしている場合はjni4netをご覧ください。これはアルファ版のリリースですが、Robocodeは既にJavaランタイム内で.NETロボットを実行するためにこれを使用しています。

別のオプションは、高性能メッセージング・アプローチを使用することです。 2番目のプロセスが必要です。おそらく.NETプラグインホストです。そのプロセスは、メインJavaゲームプロセスとメッセージを交換します。 0MQのようなメッセージングライブラリはかなり速いですが、あなたの心に留めているほど速くないかもしれません。さらに、多くのメッセージ配管を作成する必要がありますが、費用がかかりすぎる可能性があります。

0

あなただけがあなただけのJNIを使​​用して、代わりにサードパーティのツール(私はjni4netの詳細を知らない認めるが)のそれを自分で行う可能性があります呼び出しているいくつかのメソッドを持っている場合。丁寧な言葉で、私がやっているプロジェクトは、似たようなこと(C# - > C/C++ - > JNI経由のJava)を実行しなければならず、問題はありませんでした。主な問題は、Java APIには適切な文書がないため、その一部であった可能性があるためです。可能であれば、それを1つの言語にしておきますが、それができない場合は、多くのエラーチェックをしてください。アプリケーションがクラッシュすると、(javaとC#sutffの両方を所有していない限り)問題を見つけるのは非常に難しいです。ちょうど私の$、0.02 ...

1

は、iKVMのを使用してみてください:

IKVM.NETは、モノのJavaの実装およびMicrosoft .NET Frameworkの です。

  • A Javaと.NETの相互運用性

http://www.ikvm.net/を有効にする.NET

  • に実装されたJava仮想マシンのJavaクラスライブラリツールの.NET実装:それは、次のコンポーネントが含まれて

  • 0

    はバイナリのカップリングを避けます。この記事のアーキテクチャアプローチに基づいて独自のinteropレイヤを記述します。 http://www.codeproject.com/KB/architecture/SerInterfaceXXsd2Code.aspx。 高性能のために、この記事で説明しているXMLシリアル化をhessianに置き換えることもできます。 [ベストとコールする簡単な方法の

    関連する問題