0

クライアント サイト: Windows フォーム

サーバー サイト: .net 2.0 asmx。IIS 7、2008 R2 を獲得。

最初の呼び出しの定義: IIS の再起動またはアプリ プールのリサイクル。

IIS でホストされている Web サービスへの最初の呼び出しは常に遅く、約 20 秒以上かかります。

後続の呼び出しは 1 秒未満の高速です。クライアント アプリの新しいインスタンスも同じ (高速) を実行します。

インターネットのさまざまなソースから理解したクライアント app.config で useDefaultWebProxy = false、bypassProxyOnLocal = true を設定しました。

クライアント PC でクライアント アプリ (Web サービスへの最初の呼び出し) を実行してテストを行いましたが、予想どおり遅いです。次に、サーバー PC でクライアント アプリ (Web サービスへの 2 回目の呼び出し) を実行しました。

これは逆に言えば、クライアント アプリが最初にサーバーで実行された場合 (最初の呼び出し、遅い)、クライアント PC でクライアント アプリを実行する 2 回目 (2 回目の呼び出し) は高速です。

上記のシナリオから、ここではネットワーク プロキシが問題ではない可能性があると言いたいと思います..

Web サービス プロジェクトのプロパティで、「Generete シリアライゼーション アセンブリ」をオンに設定しました。

これを改善する方法はありますか?

4

2 に答える 2

0

最初の要求では、IIS は要求を処理するためにいくつかのプロセスを起動 (または初期化) する必要があるため、最初の応答に時間がかかります。

最も簡単で最も一般的なアプローチは、最初は耐え、定期的にサイトに ping を送信してそれらのプロセスを起動し続けることです。良い Ping サービスがいくつかあると思います。

于 2013-09-20T11:52:01.800 に答える
0

初期化が遅くなる原因は複数ある可能性があります。最も注目すべき点:

  • アプリケーションが準備され、存在する場合はテンプレートがキャッシュされます (プロジェクトに Web ページも含まれていない限り、これは問題になりません)。
  • 他のライブラリは初期化に時間がかかります。特に、データベース接続のパフォーマンスを調べてください。エンティティフレームワークが思い浮かびます。クエリを初めて実行するときは、クエリのコンパイル、生成、およびキャッシュに時間がかかります。後続のクエリは高速です。

EntityFramework を使用している場合、私の唯一の推奨事項は、Entity Framework のバージョンを更新することです。これにより、新しいバージョンの .NET も使用する必要があります。

于 2013-09-20T10:08:28.103 に答える