WCF サービスを現在のリソースに適応させることは可能ですか?たとえば、RAM が少ない場合に同時呼び出しをより低い nr に変更することはできますか?
よろしくお願いします
WCF サービスを現在のリソースに適応させることは可能ですか?たとえば、RAM が少ない場合に同時呼び出しをより低い nr に変更することはできますか?
よろしくお願いします
実際、.net 4 以降ではすでにそうなっています (こちらのブログ投稿を参照)。ただし、プロセッサの数だけが重要です。
HTTP はステートレス プロトコルであり、スケーラビリティのためにサーバー側でセッションを使用しないことをお勧めします。典型的なフロント エンド サーバーは、メモリではなく CPU を消費します (ScaleOut と ScaleUp)。
ただし、WCF の制限、別名 WCF スロットリングは単なる動作です。ServiceHost カスタム ServiceHostFactory を使用して、起動時にこの動作を追加/編集します。
ServiceThrottlingBehavior throttle = new ServiceThrottlingBehavior();
throttle.MaxConcurrentCalls = /*what you want*/;
throttle.MaxConcurrentSessions = /*what you want*/;
throttle.MaxConcurrentInstances = /*what you want*/;
ServiceHost host = new ServiceHost(typeof(TestService));
// if host has behaviors, remove them.
if (host.Description.Behaviors.Count != 0)
{
host.Description.Behaviors.Clear();
}
// add dynamically created throttle behavior
host.Description.Behaviors.Add(throttle);
//open host
host.Open();
カスタムServiceHostFactoryを使用して同じことを実現できます。
<%@ ServiceHost Language="C#" Debug="true" Service="MyWebApplication.TestService"
Factory="MyWebApplication.TestServiceHostFactory" %>