2017-01-25 14 views
0

私は、ステートレスWebApiゲートウェイサービスタイプとステートレスワーカーサービスタイプの2つのサービスタイプからなるSFアプリケーションタイプを持っています。私はデフォルトのゲートウェイサービスインスタンスで1つのアプリケーションインスタンスを作成しています。同じノード上で動的に作成されたサービスのサービスファブリックプロセス分離

var serviceDescription = new StatefulServiceDescription() 
{ 
    ApplicationName = new Uri("fabric:/Gateway"), 
    ServiceName = new Uri("fabric:/Gateway/Worker-" + SomeUniqueWorkerId), 
    ServiceTypeName = "WorkerType", 
    HasPersistedState = true, 
    PartitionSchemeDescription = new UniformInt64RangePartitionSchemeDescription(), 
    MinReplicaSetSize = 1, 
    TargetReplicaSetSize = 1 
}; 
await client.ServiceManager.CreateServiceAsync(serviceDescription); 

SFは、一つのノードにワーカーサービスタイプの2つ以上のインスタンスを配置し、:ゲートウェイサービスインスタンスは、このようなコードを使用して、オンデマンドで動的にワーカーサービスインスタンスを作成する(client変数System.Fabric.FabricClientインスタンスです)彼らはすべて同じプロセスを共有します(つまりWorker.exe)。異なるWorkerサービスインスタンスが異なるファイル共有から異なるバージョンのアセンブリを動的にロードする必要があるため、これは問題です。したがって、私の質問は次のとおりです。SFは、同じタイプの複数のサービスインスタンスを1つのノードに別々のプロセスでホストするよう強制できますか?

(私はゲストの実行ファイルがそのように動作することを考えています。)

答えて

1

これは仕様であり、そして同じノード、今日に別々のプロセスで、同じタイプの複数のサービスインスタンスを実行することはできません。しかし、私たちはこれをオプションにしています。

今のところ、プロセスレベルの分離が必要な場合は、個別のアプリケーションインスタンスを使用する必要があります。シナリオでは、WebサービスとWorkerサービスを個々のアプリケーションタイプに分けることでこれを行うことができます。

+0

同じアプリケーションタイプのアプリケーションインスタンスをさらに作成し、そのアプリケーションタイプのインスタンスを作成するには、Workerサービスタイプのインスタンスのみが含まれている必要があります。別のアプリのタイプがここではっきりしていることに同意しますが、両方のオプションを利用できます。 – masnider

+0

@ vaclav-turecekサービスインスタンスを同じプロセスにどのようにマッピングするかを記述したService Fabricのドキュメントを指摘できますか?私は、この動作を説明しているドキュメントの何かを見ていることを思い出しません。残念ながら、同じプロセスであるため、同じノードでもプロセスレベルの分離が予想されていたため、StructureMapを使用してDIを配管する配管が一部破損していました。 –

関連する問題