現在、単一のサービス内に複数のエンドポイントがあり、それらは同じアクションを呼び出しますが、優先度に基づいて異なるスロットリング構成を持っています。
<serviceBehaviors>
<behavior name="PriorityService1">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="3" maxConcurrentSessions="3"
maxConcurrentInstances="3" />
</behavior>
<behavior name="PriorityService2">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="5" maxConcurrentSessions="5"
maxConcurrentInstances="5" />
</behavior>
<behavior name="PriorityService3">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="10" maxConcurrentSessions="10"
maxConcurrentInstances="10" />
</behavior>
</serviceBehaviors>
これらはそれぞれ、着信 SOAP 要求をまったく同じ方法で処理します (優先度に基づいて調整するだけです)。BaseService
各優先度は、そのようなクラス から継承するだけです。
public class Priority1Service : BaseService { }
public class Priority2Service : BaseService { }
public class Priority3Service : BaseService { }
ご覧のとおり、継承された動作を使用しているだけなので、Priority クラスには実装がありません。これを行うより良い方法はありますか?石鹸メッセージで優先順位を渡し、それに基づいてサービスに対処させる方法はありますか? 動作を継承するだけのこれらのクラスを取り除くことができれば理想的です。