Presentation is loading. Please wait.

Presentation is loading. Please wait.

マイクロソフト デベロッパー & プラットフォーム統括本部 デベロッパー エバンジェリスト 大西 彰 Silverlight 4 の ブラウザー外実行 徹底解説 第 2 弾 セッション ID:T6-303.

Similar presentations


Presentation on theme: "マイクロソフト デベロッパー & プラットフォーム統括本部 デベロッパー エバンジェリスト 大西 彰 Silverlight 4 の ブラウザー外実行 徹底解説 第 2 弾 セッション ID:T6-303."— Presentation transcript:

1

2 マイクロソフト デベロッパー & プラットフォーム統括本部 デベロッパー エバンジェリスト 大西 彰 Silverlight 4 の ブラウザー外実行 徹底解説 第 2 弾 セッション ID:T6-303

3 3 セッションの目的とゴール Session Objectives and Takeaways セッションの目的 Silverlight のブラウザー外実行機能を理解する セッションのゴール ブラウザー内とブラウザー外での Silverlight ランタイムの動作の違いを説明できるようになる ブラウザー外実行用の主要な API について コードを書いて利用できるようになる 信頼されたアプリケーション モードによる ブラウザー外実行を使って Windows デスクトッ プ アプリケーション を作れるようになる

4 4 アジェンダ Silverlight アプリケーションの動作構造 開発ツールによるブラウザー外実行の設定 Silverlight のブラウザー外実行の基本機能 サンドボックス モードの新機能 信頼されたアプリケーション モードの機能 概要 デモが中心 確認

5 5 2007200820092010 Silverlight のバージョンと進化 XAML + JavaScript v1.0 XAP と マネージ コード 2 ブラウザー 外実行 3 信頼された アプリケー ション 4 普及率 動画配信 JavaScript API DRM コントロール.NET 開発環境 Smooth Streaming H.264 対応 コントロールの充実 ブラウザー外実行 アクセシビリティ対応 マルチタッチ対応 2007 年 9 月 2008 年 10 月 2009 年 7 月 2010 年 4 月 業務アプリケー ション開発向けの 機能拡充 サンドボックス 緩和 (権限昇格)

6 6 Silverlight 4 の強化ポイント 業務アプリケーション向けの機能拡充 UI の改善 (マウス・クリップボードなど) データ バインディング、通信機能 WCF RIA サービス ブラウザー外実行の進化系 Silverlight 4 の新機能 http://msdn.microsoft.com/ja-jp/library/dd772166(v=VS.95).aspx http://msdn.microsoft.com/ja-jp/library/dd772166(v=VS.95).aspx

7 7 Silverlight の技術スタック その 1 ブラウザー内実行の場合 Web ブラウザー Silverlight Runtime アンマネージ コード ( Native の.DLL ).NET Framework サブセット / CLR Silverlight アプリケーション パッケージ (.XAP ファイル) Silverlight アプリケーション パッケージ (.XAP ファイル) NetworkNetworkHTMLJavaScriptHTMLJavaScript

8 8 Silverlight アプリケーションの 動作構造と Application クラス System.Windows.Application Silverlight アプリケーションをカプセル化 するクラスで次のサービスを提供 アプリケーションのエントリ ポイント アプリケーションの有効期間 アプリケーション管理 アプリケーション スコープ リソース ハンドルされない例外の検出 http://msdn.microsoft.com/ja-jp/library/ms588794(v=VS.95).aspx

9 9 アプリケーションの起動から終了 public partial class App : Application { // アプリケーション クラスのコンストラクター public App() { // アプリケーションの初期化 this.Startup += this.Application_Startup; // アプリケーションの終了 this.Exit += this.Application_Exit; // ハンドルされない例外処理 this.UnhandledException += this.Application_UnhandledException; // InitializeComponent(); } // 以下、省略 …

10 10 最初に表示される画面はどこで決まる? public partial class App : Application { // アプリケーション クラスのコンストラクター public App() { // 省略 … } private void Application_Startup( object sender, StartupEventArgs e) { // 次の行で、最初の画面が決まります this.RootVisual = new MainPage(); } } // 以下、省略 …

11 11 Silverlight の技術スタック その 2 ブラウザー外実行の場合 SLLauncher.exeSLLauncher.exe Silverlight Runtime アンマネージ コード ( Native の.DLL ).NET Framework サブセット / CLR Silverlight アプリケーション パッケージ (.XAP ) Silverlight アプリケーション パッケージ (.XAP )

12 12 sllauncher.exe Silverlight のブラウザー外実行プロセス ブラウザー外実行アプリケーションの管理 インストール/install アンインストール/uninstall インストール無しでの起動/emulate ※ sllauncher.exe の場所 32 ビット OS - C:\Program Files\Microsoft Silverlight\ 64 ビット OS - C:\Program Files (x86)\Microsoft Silverlight\ コマンドの解説 – Silverlight Deployment Guide v4 (英語) エラー メッセージの解説 (英語) http://go.microsoft.com/fwlink/?LinkId=188103 http://download.microsoft.com/download/C/D/5/CD5AAAE3-21F7-47A8-B7D5-39E36BAF9AC8/Silverlight_Deployment_Guide.docx

13 13 ブラウザー外実行を許可するには AppManifest.xml に を追加 ※ 技術的には再ビルドしなくても変更可能 現実的にはブラウザー外実行用のコードを加えてビルド … 省略 … …

14 14 開発ツールによる ブラウザー外実行の設定 Visual Studio 2010 Silverlight プロジェクトのプロパティ 設定後は、ブラウザー外実行の形で デバッグ可能 (インストールやアンインストールは不要) Expression Blend 4 Silverlight プロジェクトの設定 ブラウザー外実行の形でテスト実行可能

15 15 Visual Studio 2010 上の設定 (1) Silverlight プロジェクトの [プロパティ] アプリケーションの ブラウザー外実行を 有効にする アプリケーションの ブラウザー外実行を 有効にする 設定画面を表示

16 16 Visual Studio 2010 上の設定 (2) ブラウザー外実行の設定 ウィンドウ スタイルは、後述の信頼 されたアプリケーションで利用 アプリケーションのショートカット アプリケーション ウィンドウの設定

17 17 Expression Blend 4 上の設定 [プロジェクト] メニューの [Silverlight プロジェクトの設定]

18 18 Silverlight のブラウザー外実行の 基本機能 アプリケーションのインストール アプリケーションの更新プログラムの確認 ネットワーク接続の検出 ブラウザー外実行状態の検出 アプリケーションの削除

19 19 アプリケーションのインストール 3 種類のインストール方法 コンテキスト メニュー インストール用 API コマンド インストール後は、オフラインでも実行可能 ネットワーク接続の検出 分離ストレージは 25 MB (既定値) インストールに 管理者権限は不要 インストールに 管理者権限は不要

20 20 コンテキスト メニューからの インストール

21 21 インストール用 API インストール実行 Application.Install() メソッド インストール状態の確認 Application.InstallState プロパティ InstallState説明 NotInstalledインストールされていない Installingインストール中 Installedインストール済 InstallFailedインストールに失敗 http://msdn.microsoft.com/ja-jp/library/dd731949(v=VS.95).aspx

22 22 インストール用 API 利用例 private void btnInstall_Click( object sender, RoutedEventArgs e) { try { Application.Current.Install(); } catch (InvalidOperationException) { MessageBox.Show(" インストール済みです "); }

23 23 コマンドによるインストール sllauncher.exe を利用 sllauncher.exe /install:" \\AppServer\packages\myApp.xap " /origin:"http://oniak3.com/myApp.xap" /shortcut:desktop+startmenu /overwrite sllauncher.exe /install:" \\AppServer\packages\myApp.xap " /origin:"http://oniak3.com/myApp.xap" /shortcut:desktop+startmenu /overwrite 共有フォルダーなど xap ファイルが 格納されている UNC パス アプリケーションをホストしている Web サイトの URL を指定 アプリケーションの ショートカット作成場所

24 24 更新プログラムの確認 Application クラス CheckAndDownloadUpdateAsync() メソッド CheckAndDownloadUpdateCompleted イベント ポイント サーバーと通信し、パッケージが更新されて いればアプリケーションがダウンロードされる パッケージが最新でもユーザー側の Silverlight ランタイムのバージョンが古い場合は、最新の パッケージをダウンロードしない 信頼されたアプリケーションの場合、 XAP 署名が必須 (署名がないと更新不可) http://msdn.microsoft.com/ja-jp/library/dd731813(v=VS.95).aspx

25 25 アプリケーション更新用 API 利用例 App.Current.CheckAndDownloadUpdateCompleted += App_OnCheck; App.Current.CheckAndDownloadUpdateAsync(); // … private void App_OnCheck(object sender, CheckAndDownloadUpdateCompletedEventArgs e) { if (e.UpdateAvailable) { // アプリを再起動すると最新になることに注意 MessageBox.Show(" ダウンロードしました "); }

26 26 ネットワーク接続の検出 ネットワーク インターフェイスの IP アドレス変更イベント NetworkChange.NetworkAddressChanged 任意のネットワークが利用可能かどうかを 判定するメソッド NetworkInterface.GetIsNetworkAvailable() http://msdn.microsoft.com/ja-jp/library/3ew4thdx(v=VS.95).aspx

27 27 ネットワーク接続の検出例 public MainPage() { NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; } void NetworkChange_NetworkAddressChanged( object sender, EventArgs e) { if (NetworkInterface.GetIsNetworkAvailable()) { // オンライン } else { // オフライン }

28 28 ブラウザー外実行状態の検出 Application クラス IsRunningOutOfBrowser プロパティ true: ブラウザー外で実行されている false: ブラウザー内で実行されている http://msdn.microsoft.com/ja-jp/library/dd730900(v=VS.95).aspx

29 29 ブラウザー外実行状態の検出 Application.IsRunningOutOfBrowser プロパティ private void Application_Startup( object sender, StartupEventArgs e) { // ブラウザー内と外の場合、それぞれ別の画面に設定 if (Application.Current.IsRunningOutOfBrowser) { this.RootVisual = new OutOfBrowserPage(); } else { this.RootVisual = new InBrowserPage(); }

30 30 アプリケーションの削除 セキュリティの関係で、アプリケーション を削除するための API は提供なし コンテキスト メニューから手動で削除 コントロール パネルの [プログラム] からの アンインストール コマンドで削除

31 31 手動によるアプリケーションの削除 コンテキスト メニュー 起動中のアプリケー ション内を右クリック コントロール パネル [プログラムと機能] との統合

32 32 コマンドによるアプリケーションの 削除 sllauncher.exe を利用 sllauncher.exe /uninstall /origin:"http://oniak3.com/myApp.xap" sllauncher.exe /uninstall /origin:"http://oniak3.com/myApp.xap" アプリケーションをホストしている Web サイトの URL を指定

33 33 サンドボックス モードの新機能 WebBrowser コントロール WebBrowserBrush オブジェクト アプリケーション ウィンドウの制御 API NotificationWindow クラス

34 34 WebBrowser コントロール HTML のレンダリング URI を指定 HTML 文字列を指定 2 方向の相互運用性 スクリプト実行 スクリプトからの通知 ブラウザーのプラグイン と表示可能な文書を サポート 必ず最前面に表示 コントロールの利用例 http://msdn.microsoft.com/ja-jp/library/cc491073(v=VS.95).aspx

35 35 WebBrowser 利用例 ・ XAML ・ a.htm 内の JavaScript function btnSendToSilverlight_onclick() { // Silverlight へ通知 window.external.notify(txtInput.value); } ・ C# wb.ScriptNotify += wb_ScriptNotify; void wb_ScriptNotify( object sender, NotifyEventArgs e) { txtStatus.Text = e.Value; }

36 36 WebBrowserBrush オブジェクト HTML コンテンツと Silverlight の重ね合わせ に利用 不透明度、回転、Pixel Shader エフェクト ブラシ上の HTML コンテ ンツとは対話できない ことに注意 HTML コンテンツの 再描画は手動 ブラシを適用した楕円に 疑似 3D と波紋のエフェクトを加えた例 http://msdn.microsoft.com/ja-jp/library/ff400447(v=VS.95).aspx

37 37 WebBrowserBrush 利用例 (XAML) 図形の Fill プロパティでブラシを指定 <WebBrowserBrush x:Name="wBrush" SourceName="wb"/>

38 38 WebBrowserBrush 利用例 (C#) private DispatcherTimer dt = new DispatcherTimer(); public MainPage() { InitializeComponent(); dt.Interval = new TimeSpan(100); dt.Tick += new EventHandler(dt_Tick); dt.Start(); } void dt_Tick(object sender, EventArgs e) { // 最新の HTML コンテンツで再描画 wBrush.Redraw(); }

39 39 アプリケーション ウィンドウの制御 top, left height width topmost http://msdn.microsoft.com/ja-jp/library/ms590112(v=VS.95).aspx

40 40 ウィンドウの制御における注意点 制御用 API が利用できるタイミング Application.Startup イベント ハンドラー内 ボタン Click イベント ハンドラーなどでの、 ユーザーによる操作に対する応答直後 信頼されたアプリケーションは制約なし

41 41 ウィンドウの制御 API 利用例 (C#) private void Application_Startup(object sender, StartupEventArgs e) { this.RootVisual = new MainPage(); if (Application.Current.IsRunningOutOfBrowser) { Window mainWindow = Application.Current.MainWindow; mainWindow.Top = 10; mainWindow.Left = 20; mainWindow.Width = 640; mainWindow.Height = 480; }

42 42 NotificationWindow クラス x 3 件の ボイス メール有 聞く http://msdn.microsoft.com/ja-jp/library/ee652604(v=VS.95).aspx

43 43 NotificationWindow の利用例 (C#) if (Application.Current.IsRunningOutOfBrowser) { nw = new NotificationWindow(); nw.Content = nwContent; // 通知画面 nw.Height = nwContent.Height; nw.Width = nwContent.Width; // 2 つ以上の通知は許可されない if (nw.Visible) nw.Close(); nw.Content.DataContext = list[count]; nw.Show(5000); // アプリケーション ウィンドウのアクティブ化 App.Current.MainWindow.Activate(); }

44 44 信頼されたアプリケーション モード の機能 サンドボックスの制約を緩和 制限のないクロス ドメイン通信 ユーザーの同意、ユーザーが開始した操作に 関する要件の緩和 全画面表示サポート アプリケーション ウィンドウのカスタマイズ ユーザー プロファイルの特定フォルダー内の ファイルへの直接アクセス ネイティブ統合 (COM オートメーション) XAP 署名

45 45 信頼されたアプリケーション モード の実行状態の判定 Application.HasElevatedPermissions プロパティ true: 信頼されたアプリケーションとして ブラウザー外で実行されている false: それ以外 http://msdn.microsoft.com/ja-jp/library/ee520185(v=VS.95).aspx

46 46 クロスドメイン通信の制約緩和 ドメイン間アクセス クロス ドメイン ポリシーが不要 スキーム間アクセス制限なし ソケット通信 ポリシー不要 任意のホストの任意のポート マルチキャスト通信 ポリシー レスポンダーによる承認不要 http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#relaxed_crossdomain_access_restrictions

47 47 全画面表示サポート ユーザーの同意不要で全画面表示に切替 ほとんどのキーボード操作が有効 取得できないキー操作もあることに注意 http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#fullscreen_support

48 48 ウィンドウのカスタマイズ 3 通りのウィンドウ スタイルから選択 既定値 : タイトル バーと境界線を表示 罫線なし : タイトル バーと境界線を非表示 罫線なし角丸 : タイトル バーと境界線を 非表示で、 ウィンドウの隅の角を丸める (半径 9 ピクセルの丸み) WindowStyle : None WindowStyle: BorderlesRoundCornersWindow WindowStyle: BorderlesRoundCornersWindow http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#support_for_window_customization

49 49 ファイル システムへのアクセス ユーザー プロファイル 内の特定フォルダー ドキュメント ピクチャ ミュージック ビデオ System.IO と関連型へ のアクセス Directory DirectoryInfo File FileInfo FileStream Path StreamReader StreamWriter http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#file_system_access

50 50 ファイル システム アクセスの例 (C#) if (Application.Current.HasElevatedPermissions) { string myDocuments = Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments); string filename = "test.txt"; string path = System.IO.Path.Combine(myDocuments, filename); if (File.Exists(path)) { string contents = File.ReadAllText(path); MessageBox.Show(contents); }

51 51 ネイティブ統合 Windows プラットフォーム限定で COM オートメーションを利用したシステム 統合が可能 AutomatinFactory.IsAvailable プロパティ でオートメーションが利用可能かを判定 オートメーション オブジェクトの作成 AutomationFactory.CreateObject() メ ソッド オートメーション オブジェクトの取得 AutomationFactory.GetObject() メソッド http://msdn.microsoft.com/ja-jp/library/ff457794(v=vs.95).aspx

52 52 COM オートメーションの例 (C#) if (AutomationFactory.IsAvailable) { // C# の dynamic キーワードを使用するには、 // プロジェクトで Microsoft.CSharp.dll を // 参照設定する必要があります。 using (dynamic shell = AutomationFactory.CreateObject( "WScript.Shell")) { shell.Run(@"cmd /k ping 127.0.0.1"); } Wscript.Shell を使ったコマンド実行

53 53 COM オートメーションの例 (C#) dynamic excel; public delegate void SheetChangedDelegate(dynamic excelSheet, dynamic rangeArgs); excel = AutomationFactory.CreateObject("Excel.Application"); excel.SheetChange += new SheetChangedDelegate(OnSheetChanged); // … 省略 … private void OnSheetChanged ( dynamic excelSheet, dynamic rangeArgs) { dynamic sheet = excelSheet; string name = sheet.Name; } Excel のイベント取得

54 54 オートメーションの詳細 サポートされる機能 プロパティの設定、取得 インデックス化されたプロパ ティの設定、取得 Positional and optional parameters 参照渡しと値渡し イン プロセスとアウト プロセス サーバー 基本のデータ型 VARIANT、BSTR、SAFEARRAY、 IEnumVARIANT Silverlight アプリ側でイベント シンク サポートされない機能 多次元配列、ジャグ配列 名前付き引数 型情報 COM Elevation moniker http://msdn.microsoft.com/ja-jp/library/ee947176(v=VS.95).aspx 注意: 戻り値があるイベントは サポートされません 注意: 戻り値があるイベントは サポートされません

55 55 オートメーション可能なサービス Office 製品との相互運用 WMI (システム情報やファイル監視) ADO (.NET 以前のデータ アクセス) Windows 7 ロケーション API (GPS) スピーチ エンジン その他、COM でアクセス可能なもの…

56 56 XAP ファイルへのデジタル署名 信頼されたアプリケーションのみ対応 署名なし 署名あり

57 57 開発向けテスト証明書の作成例 ルート証明書 コード署名用の子証明書 makecert -n "CN=My Root Certificate Authority" -r -a sha1 -sv c: \ Demo \ TestOOBRootCA.pvk c: \ Demo \ TestOOBRootCA.cer -sr LocalMachine -sky signature makecert -sv c: \ Demo \ TestOOBCodeSigningCA.pvk -iv c: \ Demo \ TestOOBRootCA.pvk -n "CN=Test OOB Crew Code Signing CA" -ic c: \ Demo \ TestOOBRootCA.cer c: \ Demo \ TestOOBCodeSigningCA.cer makecert -sv c: \ Demo \ TestOOBCodeSigningCA.pvk -iv c: \ Demo \ TestOOBRootCA.pvk -n "CN=Test OOB Crew Code Signing CA" -ic c: \ Demo \ TestOOBRootCA.cer c: \ Demo \ TestOOBCodeSigningCA.cer Visual Studio コマンド プロンプト (2010) を利用すると PATH の設定が不要となります Visual Studio コマンド プロンプト (2010) を利用すると PATH の設定が不要となります

58 58 XAP 署名の方法 (コマンド) signtool.exe を利用

59 59 XAP 署名の方法 (Visual Studio IDE) Silverlight プロジェクトのプロパティ

60 60 参考 : ブラウザー外実行の応用編 グループ ポリシーによる管理 オフライン DRM Silverlight Analytics Framework Microsoft Sync Framework 3.0

61 61 参考 : グループ ポリシーによる管理 Silverlight に対するグループ ポリシー DRM Silverlight ランタイムの自動更新 信頼されたアプリケーション Web カメラとマイクの利用 UDP マルチキャストの通信 信頼されたアプリケーション モードの利用 アプリケーションのインストールの可否 アプリケーションの実行の可否 注意 : サンドボックス モードには適用されません http://go.microsoft.com/fwlink/?LinkId=169578

62 62 参考 : オフライン DRM ライセンス サーバーと通信できない状態で DRM で保護されたメディアの再生が可能 ビジネス モデルへの対応 購読、レンタル、購入 Silverlight 4 DRM の新機能 ライセンス管理用のストレージ 時間によるポリシー H.264 と AAC コンテンツの対応 出力保護 (Output Protection) の対応 http://msdn.microsoft.com/ja-jp/library/cc838192(v=VS.95).aspx

63 63 参考 : Silverlight Analytics Framework Silverlight アプリケーションの アクセス分析用のフレームワーク 主要な Web アクセス分析サービスに対応 独自の Web サーバーへのロギングも可能 ブラウザー外実行、オフライン時の動作に も対応 http://msaf.codeplex.com/

64 64 参考 : Sync Framework 3.0 データ同期用のフレームワーク Silverlight 対応版は、招待制の CTP 扱い SQL Server や SQL Azure へ対応 詳細は MIX 10 のセッションを参考に http://live.visitmix.com/MIX10/Sessions/SVC10 http://live.visitmix.com/MIX10/Sessions/SVC10 http://social.msdn.microsoft.com/Forums/ja-JP/synclab/threads

65 65 Silverlight 4 のブラウザー外実行 徹底解説 第 2 弾 まとめ Silverlight 4 のブラウザー外実行 徹底解説 第 2 弾 ランタイム 1 つで 2 種類の動作モード ブラウザーのプラグイン デスクトップ アプリケーション Silverlight 4 に搭載されたブラウザー外実 行の新機能 WebBrowser 、NotificationWindow など ウィンドウのカスタマイズ 信頼されたアプリケーション モード サンドボックス セキュリティの緩和 Windows プラットフォームとの統合

66 66 関連セッション

67 67 リファレンス Microsoft Web Platform http://www.microsoft.com/web

68 ご清聴ありがとうございました。 T6-303

69 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Download ppt "マイクロソフト デベロッパー & プラットフォーム統括本部 デベロッパー エバンジェリスト 大西 彰 Silverlight 4 の ブラウザー外実行 徹底解説 第 2 弾 セッション ID:T6-303."

Similar presentations


Ads by Google