Silverlight 4 Beta 進化のポイント: 2つのOut of Browser
Silverlight 3のリリースからわずか4ヵ月後にSilverlight 4 Betaが発表されて、驚かれている方も多いのではないかと思います。たくさんの機能が詰まったRIAプラットフォームなので、すべてを追いかけるのは大変だと思います。
この記事では、ポイントを簡単にまとめてみたいと思います。
Silverlight 4 Betaでは、業務で使えるプラットフォームとしての進化が大きなテーマになっています。加えて、開発者の方々からのフィードバックに応えるべく、特に業務シナリオでの機能拡充を図っています。
•.NET 4ベース
•WPFとバージョン番号が同じ(ベースとなる部分を.NET 4にあわせた)
•アセンブリの互換性(Silverlight固有のAPIを利用していないことが条件)
•業務向けの機能拡充
•要望の多かった機能(印刷・右クリック・ドラッグ&ドロップなど)
•VS2010でデータソースにあるエンティティからのドラッグ&ドロップ(WCF RIA Services)
•2種類のOut of Browser
•Sandboxモード (Silverlight 3のOut of Browser + WebBrowserコントロール)
•権限昇格モードとCOM Automation (ほとんどデスクトップアプリケーションな動き)
重要なことは、Silverlightのランタイムの実体はDLLファイルの集合であるということです。ブラウザのプラグインとして動作する場合は、Webブラウザーのプロセスの上で、ランタイムとアプリケーション(これまたDLLの集まり)がホストされます。Out of Browserで動作するときは、SLLauncher.exeというプロセスの上で、ランタイムとアプリケーションが実行されます。
Silverlight 3までのOut of Browserは、Sandboxモデルを重視し、ローカルリソースへのアクセスは厳しく制限されていました。加えて、Out of Browserにおいて、HTMLのコントロールが一切できず、アプリケーションのウィンドウの制御なども厳しい状況でした。
Silverlight 4のOut of Browserでは、Sandboxモードにおいて、次のような拡張がされました。
・Windowing APIs (大きさ、位置、最前面に表示など、アプリケーションのウィンドウへの制御)
・Notification Popups (Outlookのメール通知のようなトーストポップアップの仕掛け)
・HTML Hosting (WebBrowserとHTMLBrushによるHTMLの表示)
・Drop Target (エクスプローラーなどからのファイルドロップへの対応)
・Offline DRM (オフライン環境での保護されたメディアの再生機能)
さらに、Silverlight 4のOut of Browserでは、Elevated Trustedモードという権限を昇格された実行モードがあり、次のような機能が提供されました。
・ローカルファイルシステムへのアクセス
・クロスサイトのネットワーク通信 (クロスドメインポリシーファイルの設置が不要)
・全画面モードにおけるキーボードサポート
・COM Automationサポート (IDispatch) ただし、Windows限定
マイクロソフトの技術を長年利用されてきた方にとっては、COM Automationサポートが意味することがよくわかると思います。Office製品などの連携やWindows 7のセンサー&ロケーションAPIを利用可能になります。また、WMIへのアクセスも容易になるわけで、システム情報を利用するアプリケーションの開発をSilverlightで行えるようになります。COM Automationサポートについては、別記事で取り上げたいと思います。
さて、2つのOut of Browser、Sandboxモードか権限昇格モードであるかの判定はAPIが用意されています。
private void TestIO()
{
if (Application.Current.HasElevatedPermissions)
{
string myDocuments = Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments);
string filename = "testf.txt";
string path = System.IO.Path.Combine(myDocuments, filename);
if (File.Exists(path))
{
string contents = File.ReadAllText(path);
MessageBox.Show(contents);
}
}
}
権限昇格モードのアプリケーションインストールはグループポリシーで抑制することもできるため、アプリケーション開発者は上記のようなコードに見られる判定が必要です。
最後に、Out of Browserについての詳細は、一度、英文ドキュメントをご覧ください。
https://msdn.microsoft.com/en-us/library/dd550721(VS.96).aspx