我正在使用.Net 3.5 SP1,使用默认的WCF序列化程序 - DataContractSerializer。 我有这个简单的接口:WCF序列化在第一次调用时很慢
[ServiceContract]
public interface IService
{
[OperationContract]
void RecieveInteger(int value);
[OperationContract]
void RecieveBigDataType(BigDataType value);
}
我的客户将执行以下操作:
- 调用“RecieveInteger”只是热身的服务。
- 10次调用“RecieveBigDataType”并测量性能。
测量对'RecieveBigDataType'的10个调用,我发现第一个调用比其他调用慢得多。这似乎是WCF第一次需要序列化“BigDataType”类型的速度非常缓慢。 任何想法使第一个电话更快?
如何从客户端进行测试? 。 .means创建ServiceClient对象一次,并调用它10次或每次创建新的serviceclient和调用方法。 – dotnetstep 2011-12-26 09:07:30
只创建一个ServiceClient对象,然后执行上面写的动作1-2。 – Sean 2011-12-26 09:16:00
1.当你第一次创建对象时 2.然后你第一次打电话给web服务时它会创建通信channgel。所以当下次调用hapeend时,它会继续使用该频道,以便后续调用速度更快。尝试每次创建ServiceClient并衡量性能不同。 – dotnetstep 2011-12-26 10:04:50