Silverlight 3's New Assembly Caching
Silverlight 3 のアセンブリ・キャッシングについてまとめられていました。
Silverlight 2 では BCL (ベースクラスライブラリ) の一部ではあるが Silverlight ランタイムに含まれていないようなアセンブリ (たとえば System.Xml.Linq.dll など) も XAP ファイルにいっしょに収められていました。
Silverlight 3 ではこのようなアセンブリを XAP ファイルに含めなくてもよくなったそうです。
上記記事では設定方法についても解説されています。
Visual Studio 2008 のプロジェクトのプロパティにある “Reduce Xap size” チェックボックスをオンにする、必要な操作はこれだけだそうです。
これでリビルドすると XAP ファイルにはコアランタイムの一部とみなされるアセンブリは含まれなくなります。
また、manifest ファイルが自動的に書き換えられ、コアランタイムのダウンロード場所を示す <Deployment.ExternalParts> セクションが作られるそうです。
もちろん、Silverlight は必要なアセンブリが無ければ manifest ファイルを参照してダウンロードします。
ダウンロードしたアセンブリはデフォルトのブラウザキャッシュにキャッシュされるそうです。
もちろん、XAP ファイルもここにキャッシュされています。
このキャッシュは共有されます。
ある Silverlight アプリが System.Xml.Linq.dll をダウンロードしてキャッシュしたら、他のアプリがそれを必要とする場合はそのキャッシュが使いまわされるわけです。
記事の例では 225K あった XAP ファイルが “Reduce Xap size” をオンにしてビルドしたら 12K になったそうです。
なるほどぉ。
これはなかなかいいですね。
いったいどこまでがコアランタイムとみなされるのか、それはいったいどこで判断してるのか、といったところはよくわかりませんが、使うたびに XAP に入るよりはずっとよさそうです。
Silverlight Toolkit のような形でチャートだとか高度な DataGrid だとかといったコントロールが追加でリリースされたりすると思いますが、そういったものも毎回 XAP ファイルに入れる必要がなくなるかも。(というか入れなくて済むようにしてほしいなぁ)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。