3

basicHttpBinding バインディングを使用して、単純なスタンドアロン WCF サービスを実装しました。クライアントを作成し、[サービス参照の追加] を使用してクライアント スタブ コードを生成しました。クライアントが初めてサービスを呼び出したとき、サーバーがリクエストを認識するまでに少なくとも 15 秒かかります。これを読むとシリアライゼーションコードのJIT生成によるものと思われます。ここで説明されているように、コードを事前に生成しようとしました

svcutil.exe /t:xmlSerializer <assemblyPath>

コンパイルされたクライアント exe でコードを実行しましたが、次のエラーが発生しました: アセンブリ内のサービス コントラクトにはXmlSerializerOperationBehavior.

4

1 に答える 1

0

まず、プリコンパイルされたコードを使用している場合、プリコンパイルされたコードはプラットフォーム固有のコードを使用せず、「通常の」コードをコンパイルするだけなので、パフォーマンスが低下することに注意してください。

一方、JITは、最初のコンパイル(プロキシクラスの作成)で実際にパフォーマンスに影響を与えますが、それ以降の要求では実際にうまく機能します。

したがって、サービスとクライアントの初期化コードを確認することをお勧めします-おそらく、それを最適化できます(15秒は、さまざまなアセンブリから多数のオブジェクトを作成していることを意味します)。

いくつかのレイジークラスを使用してみてください

于 2011-09-05T09:03:47.920 に答える