2017-10-17 6 views
0

私は共通のインターフェイスに準拠し、多くの一般的なコードを共有する、何百もの異なる長時間実行中の取引アルゴリズムをホストするサービスファブリックベースの取引プラットフォームを開発しています内部の仕様が大きく異なる可能性があります。私はアプリケーションタイプ(私は動的にロードする)として異なる藻類のそれぞれをモデル化することができますが、単一のPlugin Runnerアプリケーションタイプを作成することがより合理的であるかどうか疑問に思う多くの異なる藻類を与え、プラグイン。サービスファブリック:プラグインとアプリケーションのタイプ

関連する質問では、一般的にプラグインアーキテクチャを実装する方法を理解していますが、Service Fabric上で実行されているインスタンスが実際のプラグインをどこに配置できるかはわかりません。

とにかく、あなたの助けに感謝します....

答えて

2
  1. 両方のアプローチは、私が考えて作業することができます。多くのアプリケーションタイプを使用すると、多くのプロセスを実行する際に(かなりの)オーバーヘッドが追加されますが、同じアルゴリズムの複数のバージョンを同時に使用してアップグレードすることができます。 プラグインのアプローチを使用するには、自分でバージョン管理する必要があります。

    アプリケーションアプローチを使用すると、おそらく何らかの種類のリクエストルータが必要になりますが、 プラグインサービスは(ステートレスの場合)独自の決定を下す可能性があります。

  2. プラグインリポジトリとして機能するステートフルサービスを作成したり、ファイル共有をマウントしたり、データベースを使用したりできます。ここではプラットフォームの制限はありません。命名規則を使用して、適切なプラグインを見つけることができます。

+0

お返事ありがとうございました。実行時にAzure Service Fabricが見つけることができるように、プラグインをどこに/どのように置くかについてのアイデアはありますか?私は物事の開発を考えています... –

+1

多分このような何か: "A v1"を要求するとき、その名前でアセンブリを探します: "A"とバージョン "1"。 Assembly.Load( "A、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089");を使用して、作業ディレクトリにアセンブリをダウンロードしてリポジトリからダウンロードします。リフレクションを使用して、それを見つけてインスタンス化します。 – LoekD

+0

私はプラグインスタイルに試してみました。それは私が行く方法です... –

関連する問題