私は、.NET 3.5 SP1を使用しています。デフォルトのWCFシリアライザ(DataContractSerializer)を使用しています。ちょうどウォームアップするためにサービスを最初の呼び出しでWCFのシリアル化が遅い
- 呼び出します「RecieveInteger」:
[ServiceContract] public interface IService { [OperationContract] void RecieveInteger(int value); [OperationContract] void RecieveBigDataType(BigDataType value); }
私のクライアントは、次の処理を行います。 私はこのシンプルなインターフェイスを持っています。
- 'RecieveBigDataType'を10回呼び出してパフォーマンスを測定します。
「RecieveBigDataType」への10回の呼び出しを測定すると、最初の呼び出しが他の呼び出しよりもはるかに遅いことがわかりました。 WCFが 'BigDataType'型をシリアル化する必要があるのは非常に遅いようです。 最初の呼び出しを高速化するためのアイデアはありますか? MSDNによる
あなたのテストはどのようにクライアントからですか? 。 .means ServiceClientオブジェクトを1回作成し、10回または新しいサービスと呼び出しメソッドを作成するたびに呼び出します。 – dotnetstep
ServiceClientオブジェクトを1つだけ作成し、上記のアクション1-2を実行します。 – Sean
1.最初にオブジェクトを作成するとき 2.その後、初めて通信チャネルを作成するときにWebサービスを呼び出します。だから、次回hapeendを呼び出すと、そのチャンネルが継続的に使用されるので、後続の呼び出しはより速くなります。毎回ServiceClientを作成してパフォーマンスを測定してみてください。 – dotnetstep