私はService Fabricの初心者です。私はRunAsyncで属性「カウンタ」をインクリメントする信頼できるステートレスサービスを行っています。私は、明らかにCreateServiceInstanceListenersをオーバーライドしてCreateServiceRemotingListenerを追加することで、このカウンタ値(ServiceProxy経由でクライアントから呼び出されるメソッド)を返すメソッドをインターフェイスIServiceで公開できることを確認しました。 は、それから私は(指定されたポート7080でリッスン)別のカスタム通信リスナーSS1ServiceEndpoint追加しようとしました:サービスファブリックリムーバルリスナーと通信リスナーが同時に動作しない
<Endpoint Name="RemoteListener" />
<Endpoint Name="SS1ServiceEndpoint" Protocol="http" Port="7080" Type="Input" />
をが、サービスは当初、カスタムリスナーのOpenAsyncメソッドが呼び出され
Exception thrown: 'System.ArgumentException' in Microsoft.ServiceFabric.FabricTransport.dll
をスローしますより多くの時間と別の例外がスローされた呼び出しごとの後:
Exception thrown: 'System.ObjectDisposedException' in mscorlib.dll
Exception thrown: 'System.AggregateException' in mscorlib.dll
Exception thrown: 'System.Fabric.FabricElementAlreadyExistsException' in
System.Fabric.dll
Exception thrown: 'System.ArgumentException' in
Microsoft.ServiceFabric.FabricTransport.dll
Iは、CrでCreateServiceRemotingListenerを削除した場合eateServiceInstanceListenersを呼び出すと、サービスが開始され、リスニングポートのブラウザから呼び出すことができます。
私の質問です:複数のリスナーはサポートされていませんか?私は2つのカスタムリスナー(異なるポート上)で試したことはありません。
素晴らしい!それは私の問題を解決します:) MSDNのドキュメントから、それほど明確ではありませんでした! もう1つの質問:この方法で、同じプロジェクトに含まれる実際のWebAPIを公開することができますか、ステートレスサービスプロジェクトとWebAPIプロジェクトを分離する方が良いでしょうか? ありがとうございます! –
同じサービスにWebAPIを追加できます。同じサービスに入れるかどうかは、デザインによって決まります。マイクロサービスアーキテクチャを使用していることに注意してください。 WebAPIがカウンタのみを返す場合は、同じサービスに追加する必要があります(WebAPIはカウンタのエンドポイントとしてのみ機能します)。あなたのWebAPIに多くの機能がある場合、そのうちの1つはカウンタを返すことです。それに対して別のサービスを作成し、サービスリモーティング(カウンタはもっと大きなものの一部です)を使用してカウンタを取得します。 –
私は複数のリスナーと遊んでいたときに、それがはっきりしていないことに完全に同意しました。 – Mardoxx