MSの大西さんにお願いして、Silverlight3のお話をざっくり二時間。いろいろ質疑応答もあって、幾つか疑問が解消できたのでよかったです。基本的なところは知られているだろうということで、私の日記ではQ&Aの記録を。なお、これは現在のBeta1の情報をもとにしています。将来変更される可能性があります。
Out of Browser状態でSilverlightからDOMアクセスするとどうなる?
ブラウザ内で実行しているときはもちろんDOMアクセスできるわけですが、ブラウザ外にインストールした場合、html内部で動いていないので、DOMアクセスするとどうなるのでしょう?これは持ち帰り。私も今Silverlight3環境がないので試せないです。すんません。ClearTypeは日本語フォントもOK?
もちろんOK。Out of Browserでデバッグするには?
これも明確な回答なし。これは私の意見だったけど、sllauncher.exeというx86プロセスからSilverlight3アプリケーションが起動しているので、それにVisual Studioからアタッチするしかないんじゃない?Out of Browser各アプリでsllauncherが起動する?
Yes。ただし、どのプロセスがどのSilverlight3アプリかはタスクマネージャからはわからないので、気をつけて。Out of Browserはsllauncher.exeの引数でプログラムのインスタンス名(内部的には例によってGUIDだろうきっと)を引数に渡しているので、System.Diasgnotics.ProcessクラスでStartupinfoのプロセス引数を取ってくればわかるはず。あ、外部ツールで判定する場合のことを書いています。念のため。回線切断検出機能はWindowsのMedia Sense(メディア検出機能)を使ってる?
ちなみにMedia Senseとはこの話。How to disable the Media Sensing feature for TCP/IP in Windows
使っていない。http connectionがあるかないかで判定している(Macもあるしね)。したがって、WindowsのMedia senseを無効にしてもSilverlightはオフライン状態を判定できる。
Out of Browserではインストール/アンインストールがユーザ権限で可能なことに関して
現在のユーザーにコピーされるわけですが、インストール/アンインストールの禁止/事前配布は今のところシナリオにないそうです。エンタープライズ向けの業務アプリケーションだと、事前配布機能及び、アンインストール禁止などはほしいかなと思います。サンドボックスモデルでローカルストレージの一部(現在のログオンユーザ権限の範囲)にアクセスできるので、Save asダイアログボックスも出せます。
これをうまく使えばSilverlightでローカルストレージ(分離ストレージではなく)にデータを保存して、ADO.NETのSync Frameworkなどを活用して、オンライン状態になるとデータ同期するなんてシナリオが考えられます。