2009-05-28 145 views
4

私はVisualを持っています スタジオ  2005/C#Web serviceからすべてのデータを取得するClickOnceアプリケーション。ほとんどの場合、Webサービスからデータを取得してフェッチする必要があるにもかかわらず、ユーザーには気分がいいところでアプリケーションをチューニングしました。ClickOnceアプリケーションの起動を高速化する方法

しかし、スタートアップは依然として非常に遅いです。最初のWebサービスコールを生成するまでに時間がかかるようです。その後、それはいいです。

このタイプのアプリケーションの起動を高速化するにはどうすればよいですか?シリアライゼーションアセンブリを生成する必要がありますか?

答えて

4

アプリケーションによって読み込まれたアセンブリの解析に時間を費やします。これはアプリケーションの読み込み時間に最大の影響を与えます。場合によってのみ使用されるタイプがある場合は、それらを別のアセンブリに移動します。 ClickOnceはオンデマンドでアセンブリのダウンロードを最適化できるため、ロード時に必要なアセンブリ数を減らすことで、ロード時間が短縮されます。

他のアセンブリを動的に(Assembly.Load)ロードし、ロード後に実際の処理を呼び出す、最小限のアセンブリ依存性を持つ一種の「スタブ」ランチャーを持つこともできます。

+3

(無関係)効果です。エフェクトは活発な動詞であり、心理学用語では、気分の表現能力を表す名詞ですが、その意味は最初の音節にストレスを与えます。 –

+0

遅延ローディング/スタブについてもっと聞きたいと思います... – Tim

+0

効果と効果についてもっと知りたいのですが –

3

ClickOnceファイルグループを使用して、アプリケーションを管理可能な部分に分割し、必要に応じてClickOnce APIを使用してグループをダウンロードすることができます。記事ClickOnce File Groupsでこれを行う方法が説明されています。

1

起動時に大幅なパフォーマンスの向上が見込まれるため、.NET 3.5 SP1がインストールされていることを確認してください。特にWPFアプリケーションの場合

また、コンパイル時にシリアライゼーションアセンブリを生成することを確認した場合、Webサービスコールの速度を上げることができます。私が覚えていることから、Visual Studioは、このファイルを自動的に生成するタイミングを知ることについては賢明ではありませんが、SGEN.EXEを使用して実行できます。

Webサービス呼び出しのすべてのシリアル化コードを含むMyApp.XmlSerializer.dllなどの別のアセンブリを作成します。これがなければ、あなたのアプリケーションはアセンブリに対して失敗したプローブを行い、動的にコードを生成し、メモリ内でコンパイルします。これが最初のWebサービス呼び出しが遅い理由です。

関連する問題