我正在使用.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