2014-11-06 4 views
1

MSDN에 따르면 WCF 서비스의 MaxPendingAccepts가 0으로 설정된 경우 WCF가 값을 구성합니다.WCF MaxPendingAccepts : 기본값 0

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.httptransportbindingelement.maxpendingaccepts(v=vs.110).aspx

이 무엇을 의미합니까? 동적으로 변경 되었습니까? 그 뒤에있는 알고리즘은 무엇입니까?

+0

문서 상태 "기본 값이됩니다 MaxPendingAccepts의 값은 0입니다. 기본값은 바로 그 의미입니다. 값을 제공하지 않으면 프레임 워크가 값을 설정합니다. 이 경우 0입니다. 0으로 설정하면 0이됩니다. – Tim

+0

아니요, 설명서 상태 : "MaxPendingAccepts의 기본값은 0입니다. 즉, WCF가 값을 구성합니다." 나에게 소리가 나지 않으므로 설정하지 않거나 0으로 설정하면 WCF에서 좋은 값을 선택합니다. – DanielG

+0

나는 그것이 더 잘 말했을 것이라는 데 동의하지만, 나는 또한 문장의 적절한 해석은 당신이 그것을 설정하지 않으면 프레임 워크가 선택한 값이 0 일 것이라고 믿는다. – Tim

답변

2

System.ServiceModel.Channels.HttpTransportBindingElement의 소스 코드를 살펴 보았습니다. HttpTransportsDefault을 살펴보면

this.maxPendingAccepts = HttpTransportDefaults.DefaultMaxPendingAccepts; 

다음 코드를 보여줍니다 : 클래스의 기본 생성자는 다음 코드 줄을 가지고 그래서

// We use 0 as the default value of the MaxPendingAccepts property on HttpTransportBindingElement. In 4.5 we always 
// use 10 under the hood if the default value is picked. In future releases, we could adjust the underlying default 
// value when we have the dynamic expending pattern of BeginGetContext call implemented and the heap fragmentation issue 
// from NCL layer solved. 
const int PendingAcceptsConstant = 10; 
internal const int DefaultMaxPendingAccepts = 0; 
internal const int MaxPendingAcceptsUpperLimit = 100000; 
internal static int GetEffectiveMaxPendingAccepts(int maxPendingAccepts) 
{ 
    return maxPendingAccepts == HttpTransportDefaults.DefaultMaxPendingAccepts ? 
           PendingAcceptsConstant : 
           maxPendingAccepts; 
} 

그것을 보인다 같은 당신을 0 (기본값)을 사용하는 경우 실제로 10 점을 얻게되며 상한선은 100,000입니다.

그래서 본질적으로 당신이 값을 0으로 설정 한 경우 (또는 심지어는 디폴트로 0이 원인이되는, 모두를 설정하지 않은) 실제 값이 10

+0

감사합니다!그게 도움이 – DanielG

+1

@ user1682946 - 당신은 오신 것을 환영합니다. 나는 새로운 것을 배워야했기 때문에 윈 - 윈이었다. – Tim