ページ

2010年9月2日木曜日

[Silverlight] XAP の最適化ツール (と、VS2010 アドインの作り方)

Xaps Minifier. A Step Forward. New Options and New Features」 より。
おぉ、こりゃなるほどだ。

Xaps Minifier という VS2010 のアドインが紹介されています。(私はまだ試してませんが)
どういうものかは part 1 の記事で解説されていますが、ここでも簡単に概要を書いときます。
part 1 の記事の最初がやろうとしてることの解説、残りの大部分は Visual Studio 2010 アドインの作り方の解説になってます)

Silverlight のアプリでも規模が大きくなってくると複数のプロジェクトにわけたりします。Visual Studio では XAP ファイルはプロジェクトごとにできるようになってますから、プロジェクトの数だけ XAP ファイルが出来上がります。
で、XAP ファイルの中にはそのプロジェクトが使っているアセンブリ (DLL) がすべて入っています。なので、他のプロジェクトを参照していたり、共通で使うアセンブリがあったりした場合は、同じアセンブリがあちこちの XAP ファイルの中に入っていることになります。
というか、複数プロジェクトの場合、プロジェクト参照しながらの方が普通だと思うので、ほとんどのアセンブリがダブって入っていると思ったほうがいいくらいじゃないかと思います。
(XAP ファイルは ZIP の拡張子を変えたものですから、拡張子を ZIP にして解凍してみれば簡単に確認できます)

しかし、実行時には同じアセンブリが重複して読み込まれることはありません。
なので、複数の XAP ファイルの中に同じアセンブリを入れておく必要はありません。最初に読み込まれる XAP ファイルにだけ入れておけば十分です。
けど、XAP ファイルが読み込まれる順番はプログラムの作り方次第なのでどれが最初かなんてわかりません。
ただ、スタートアップに指定されている XAP は必ず最初に読み込まれるわけですから、これに含まれているアセンブリは他の XAP に入れておく必要がないことは明らかです。

というわけで、この 「スタートアッププロジェクトに含まれているアセンブリを他の XAP に入らないようにする」 という設定をしてくれるのが Xaps Minifier です。
ほんと、そりゃそうだって感じです。
(もちろん、こういうことが出来るのは他に配布したりする予定がない XAP ファイルだけですが)

あと、複数のプロジェクトで使われているアセンブリをスタートアップの XAP に含めるようにしてもくれるようです。こうすればトータルサイズは当然小さくなりますね。
ただ、これは 「[Silverlight] Silverlight アプリケーションの起動時に関するベストプラクティス」 にある 「起動時間を早くするにはスタートアップの XAP ファイルを小さくしろ」 っていうのの真逆になっちゃいますが。
この辺はケースバイケースで考えるしかないでしょうね。

0 件のコメント:

コメントを投稿