サーバー間でクラスインターフェイスだけでなくクラスを送信しますか?
-
07-07-2019 - |
質問
グリッドアプリケーションを作成しています。このアプリケーションでは、グリッド内の参加ノードにクラスをラップするソフトウェアパケットを送信する必要があります。
最初に思いついたアイデアは、マスターノードが各ノードに接続し(Windowsサービスを実行)、構成を含む.configファイルとともに、共通のインターフェイスに準拠するクラスを含むアセンブリを送信することでした情報。
これを行うより良い方法はありますか?これがプッシュであるかプルであるかについての議論とは別に、効果的にソフトウェアの更新を取得する最善の方法は何ですか?クライアントノードによって呼び出されるWCFサービスに似たものを使用できれば素晴らしいと思いますが、もちろん、実際の処理はマスターノードに残され、クラスターが事実上クラスター解除されます。
解決
アセンブリバイトを送信し、ランタイムに直接ロードできます。マネージコードに適しています。私はこれを行うためのより良い方法を知りません。そして、はい、プッシュモデルを使用してください:)
他のヒント
これは有効なアプローチのようです。これは、基本的にほとんどの.NETプラグインモデルの動作方法です。
他に考えられる唯一のアプローチは、スクリプトファイルをやり取りすることです。独自のカスタムDSLを作成できますが、それはやり過ぎだと思います。 Iron RubyやIron Pythonのようなものを使用すると、はるかに簡単になり、強力になります。別の考えは、PowerShellスクリプトを送信することです。
これを試したことはありませんが、C#またはVBファイルを前後に送信し、実行する必要があるときにそれらをコンパイルすることも可能です。ただし、前の2つの提案に比べて、この利点はほとんどありません。