기본 WCF 직렬 기인 DataContractSerializer로 작업하는 .Net 3.5 SP1을 사용하고 있습니다. 나는이 간단한 인터페이스를 가지고 :첫 번째 호출에서 WCF 직렬화가 느립니다.
[ServiceContract]
public interface IService
{
[OperationContract]
void RecieveInteger(int value);
[OperationContract]
void RecieveBigDataType(BigDataType value);
}
내 클라이언트는 다음을 수행
- 를 불러옵니다 'RecieveInteger는 그냥 워밍업하는 서비스를.
- 'RecieveBigDataType'을 10 회 호출하고 성능을 측정합니다.
'RecieveBigDataType'에 대한 10 번의 호출을 측정 한 결과 첫 번째 호출이 다른 호출보다 훨씬 느린 것을 발견했습니다. WCF가 'BigDataType'유형을 직렬화해야 할 필요가있는 것처럼 보입니다. 매우 느리게 진행됩니다. 첫 번째 전화를 더 빠르게 할 수있는 아이디어가 있습니까? MSDN에 따르면
어떻게 테스트? . .means ServiceClient 개체를 한 번 생성하고이를 10 번 또는 새 서비스 클라이언트 및 호출 메서드를 만들 때마다 호출합니다. – dotnetstep
하나의 ServiceClient 객체 만 생성 한 다음 위에서 작성한 액션 1-2를 수행합니다. – Sean
1. 처음 객체를 만들 때 2. 그런 다음 웹 서비스를 처음 호출하면 해당 시간에 통신 채널을 생성합니다. 그래서 다음 번에 hapeend를 호출하면 연속적으로 해당 채널이 사용되므로 하위 연속 호출이 더 빠릅니다. 매번 ServiceClient를 만들고 성능 차이를 측정하십시오. – dotnetstep