今週、Microsoft は Silverlight の更新プログラムをリリースした。この更新プログラムではプラットフォームにおける重要な問題がいくつか解決されている。 今回のリリースは、非公式には Silverlight 4 GDR3 と呼ばれるもので、ランタイムのみの提供となっており、新機能やSDKは含まれていない。
Silverlight 開発者の間では、メモリの不具合によってインライン・テンプレートを正常に使用できない点が大きな問題となっていた。 このテンプレートを使用するコントロールは、一見正しく動作しているように見えるが、ガベージ・コレクションの対象にならないのだ。 問題のあるコードの例は、こちらのフォーラムの 2010 年 3月の投稿から確認できる。これは Silverlight チームにとっては、あまり触れてほしくない話題だ。というのも、問題が深刻なだけに多くの不評を買うことになったからだ。
この修正 (本稿の他の修正についても同様) を使用するには、ユーザ側の Silverlight を更新する必要がある。 <object> タグでランタイムの最小バージョン属性を設定すればよい。
次は、ネットワーク・レイテンシに関する問題だ。 今回の HTTP スタックに対する更新 により、ネットワーク遅延時間が最大で 90% 改善されることが見込まれる。 この更新を有効にするには、開発者のマシンでレジストリの設定を変更するか、マニフェストのランタイム・バージョンを変更する必要がある。 64 ビット OS の場合、記載されている手順とは若干異なり、下記のレジストリ・キーを見つける必要がある。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Silverlight\v4.0\ReferenceAssemblies\SLRuntimeInstallVersion
今回の更新プログラムには、上記のほかに以下の問題に対する修正も含まれている。
- メディアの再生とVC-1コーデックに関するタイムスタンプの問題
- ピクセルシェーダ効果を持つ Silverlight アプリケーションのプロファイリング時にVisual Studio IDEがクラッシュする
- 64ビット版 OSX 上の Firefox で Silverlight を 32 ビット・プロセスとして実行できない
- Silverlight のバージョン・アップグレード後に保護されたコンテンツを再生すると DRM エラー (6207) が発生する
- アウトオブブラウザ・アプリケーションの名前を変更すると更新に失敗する
- メディア・ストリームにリダイレクト情報が存在するとメディアの再生でエラーになる