2016-04-13 5 views
0

私は、Azureのサービスファブリック信頼性サービスを調査しており、サンプルも見ています。ステートフルサービスへのアクセス

私は現在、推奨セットアップで単純な概念実証アプリケーションを構築しています。ステートフルなサービスを持つステートレスWeb APIサービス(1つのパーティション)。

APIサービスがステートフルなサービスと対話する最も簡単な方法を見つけようとしています。ウェブAPIを使用してステートフルサービスを公開する必要があるように見えます(例:WordCountアプリ)。

ステートフルなサービスを消費するために、HTTP/WCFなどで公開する必要があると思うのですが、具体例のOwinCommunicationListener : ICommunicationListenerなどを使用していますか?

答えて

2

ステートフルサービスとステートレスサービスが同じクラスタにある場合(両方のサービスが同じアプリケーションタイプ(同じソリューション)であると仮定した場合)、ステートレスサービスからステートフルサービスを呼び出すことができます。 'サービスプロキシ'

クラスタ外からステートフルサービスを使用する場合は、API通信リスナーを開く必要があります。

ServiceProxyクラスは、「Microsoft.ServiceFabric.Services」から入手できます。

サービスプロキシは同じクラスタ内でのみ動作します。

作品へのプロキシのためには、使用

IServiceClass proxy = ServiceProxy.Create<IServiceClass >(new Uri(fabric:/your_service)); 

は、ステートフルなサービスのメソッドは、インターフェイスを使用して公開する必要があります。

public static MyServices.Interfaces.IMyStatefulService GetMyStatefulService() 
    { 
     var proxyLocation = new ServiceUriBuilder("MyStatefulService"); 
     var partition = new ServicePartitionKey(1); //provide the partitionKey for stateful services. for stateless services, you can just comment this out 
     return ServiceProxy.Create<MyServices.Interfaces.IMyStatefulService>(proxyLocation.ToUri(), partition); 
    } 

ServiceProxyがMicrosoft.ServiceFabric.Services.Remoting.Client名前空間からです:サービスが同じアプリ内で住んでいるとき

+0

は、私が例にWebReferenceAppでこれを見つけました。 – mayu

0

は、次のようなサービスインスタンスの何かにアクセスすることができます。

など、インターフェイスのコードになります:私は今、このを試してい

public interface IMyStatefulService : IService 
{ 
    Task<MyResponseResult> DoSomething(MyRequest request); 
}  
関連する問題