【发布时间】:2012-01-27 21:21:06
【问题描述】:
我正在使用 .Net 3.5 SP1,使用默认的 WCF 序列化程序 - DataContractSerializer。 我有这个简单的界面:
[ServiceContract]
public interface IService
{
[OperationContract]
void RecieveInteger(int value);
[OperationContract]
void RecieveBigDataType(BigDataType value);
}
我的客户做了以下事情:
- 调用“RecieveInteger”只是为了预热服务。
- 调用“RecieveBigDataType”10 次并衡量性能。
测量对“RecieveBigDataType”的 10 次调用,我发现第一次调用比其他调用慢得多。似乎 WCF 第一次需要序列化类型“BigDataType”的速度非常慢。 有什么想法可以让第一次通话更快吗?
【问题讨论】:
-
客户的测试怎么样? . .表示创建ServiceClient对象一次并调用它10次或每次创建新的serviceclient并调用方法。
-
只创建一个ServiceClient对象,然后执行上面写的动作1-2。
-
1.当您第一次创建对象时 2. 然后您第一次调用 Web 服务,它将在那时创建通信通道。因此,当下次调用 hapeend 时,它会继续使用该通道,因此后续调用会更快。尝试每次创建 ServiceClient 并衡量性能差异。
-
dotnetstep,这就是我首先调用“RecieveInteger”服务的原因。涉及“BigDataType”的调用是这里的问题。
-
对不起,肖恩,不知道,但如果您找到答案,请在此处回复。
标签: c# performance wcf serialization datacontractserializer