「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
マイクロソフトの提供する RIA フレームワークである。
- クロスブラウザ・クロスプラットフォームを謳い、
ランタイムは Windows だけでなくMac や Linux(Monoプロジェクト)にも提供され、
多くのプラットフォームに対応している(対応しようとしていた時期があった)。
- また、ユーザインターフェース構築には WPF と共通の XAML を使うが、扱える機能に差異がある。
サポート †
終了 †
Silverlight は Microsoft Edge でも Chrome でもサポートされない。
Silverlight 5 †
- マイクロソフトは、2021 年に Silverlight 5 のサポート終了日を設定しているが、
Silverlight 5 をもって、Silverlight の開発終了の可能性も報道されている。
- 従って、将来性は無いと考えられるため、新規採用は控えた方が良い。
OpenSilver? †
2020年3月11日辺りにアナウンスされた新しい技術(情報)。
- Silverlightで開発したアプリケーションを
- 現時点では「謎」技術
(謎のまま終わりそうな気もしている)。
参考 †
引用 †
リンク †
- Silverlight 5 をもって、Silverlight の開発終了の可能性が報道されている。
特徴 †
WPFと同じXAML+.NET(VB、C#などの.NET言語)によって開発・実装を行うが、以下の点が通常のWPFと異なる。
- RIAであるためサンドボックス化されたコンテキストの内部で実行される。
- ランタイム配付の軽量化のためランタイムが.NET、WPFと異なる(機能が制限されている、若しくは差異がある)。
- ビデオやオーディオの独自の再生プレイヤーを持つ
- WMV / WMA標準の「Windows Media Player」ではなく、独自の再生プレイヤーを持っているため、クライアントPCへの「Windows Media Player」のインストールは不要
- デジタル著作権管理 (DRM) を Silverlight アプリケーションに組み込むと、さまざまなシナリオで、コンテンツの保護を強化し、より安全な配信を行うことができる。
機能の差異 †
「WPF」 → 「Silverlight」の機能の差異として、
- 「WPF」⇔「Silverlight」間で差異のある機能
- 「Silverlight』の独自の機能
などがある。
ザックリ纏めると。
サポートされない機能 †
- コントロール
- 基本的なコントロール
- ドキュメント コントロール
- メニュー、ツールバー、ステータスバー コントロール
- ナビゲーション フレームワークのコントロール
- Chrome(外観)、Decorator(効果)コントロール
- その他 コントロール
- その他
- TileBrush?.TileMode?プロパティ
- ITypedList?、BindingList?<T>、InstanceFactory?
- MarkupExtension?基本クラス
- ValueConversion?属性
- Electronic Documentation Management(EDM)
制限付きの機能 †
- 依存関係プロパティ
- データバインディング
- 要素ツリー
- トリガ
- コマンド実行
- 3Dグラフィックス
- Freezable
- マルチタッチAPI
差異のある機能 †
独自の機能 †
- Deep Zoom
- ブラウザ外実行
- コントロール
- API
セキュリティ †
「Silverlight」アプリケーションは、「サンドボックス」と呼ばれる「部分信頼」のセキュリティ境界内で動作するため、
通常の.NETアプリケーションと比べて制限がある(ただし、「ブラウザ外実行」では、昇格されたアクセス許可を要求できる)。
2種類のコード †
アプリケーション内のセキュリティのコンテキストで見ると、「Silverlight」のコードは、
- 「プラットフォーム コード」:
- 「Silverlight」ランタイムおよび SDK によって提供されるAPI
- 「アプリケーション コード」:
- プラットフォーム コードを使用して作成されたコード
という2種類のコードに大別できる。
実行するコードがどちらの種類に属するかは、「Silverlight」ランタイムが自動的に検知する。
セキュリティ レベル †
- 「Silverlight」コードには、以下の3つのセキュリティ レベルがある。
項番 | セキュリテ・レベル | 機能 |
1 | 透過的 | 「透過的」 セキュリティ レベルのコードには、次の制限がある。 ・P/InvokeやCOM相互運用機能を介してアンマネージ コードを呼び出すことができない 。 ・クリティカルなコードやデータ(下記、項番3を参照のこと)にはアクセスできない。 ・検証可能なタイプ セーフ コード である必要がある。 |
2 | セーフ クリティカル | 「セーフ クリティカル」 セキュリティ レベルのコードは、 「クリティカル」 セキュリティ レベルのコードの上位に位置し、呼び出しを安全に保つ働きをする。 |
3 | クリティカル | 「クリティカル」 セキュリティ レベルのコードは、 ファイル システムへの書き込みなど、「サンドボックス」で制限された操作を実行できる。 |
- 「アプリケーション コード」
- 「プラットフォーム コード」
- 「透過的」、「セーフ クリティカル」、「クリティカル」のどのセキュリティ レベルのコードにも成り得る。
「セーフ クリティカル」とユーザ操作 †
- なお、「アプリケーション コード」から「プラットフォーム コード」の
「セーフ クリティカル」を呼び出す場合、悪意のあるコードが不正に
ローカル リソースにアクセスすることを防ぐため、ユーザ操作を必須とする機能がある。
- 例えばファイル システムへアクセスする場合には、ユーザ入力を伴う、OpenFileDialog?を表示してパスを取得する必要がある。
- なお、ユーザ入力なしでファイル システムへアクセスすると、SecurityException?が発生する。
- ユーザ操作が必要な「セーフ クリティカル」機能の例
項番 | 機能 | 説明 |
1 | ファイル システムへのアクセス | ファイル システムへのアクセスは制限されるためFileDialog?からユーザが開始する必要がある 。 |
2 | 全画面表示 | 全画面表示モードは、ユーザが開始する必要がある。終了方法についてのメッセージが表示される 。 |
3 | Webカメラ・マイクのサポート | Silverlight 4以降、Web カメラ・マイクがサポートされた。 Web カメラ・マイクの使用は、ユーザが開始し、セキュリティ プロンプトでアクセス許可を付与する必要がある 。 |
4 | 印刷 | Silverlight 4 以降、印刷がサポートされた。 印刷はユーザが開始する必要がある 。 |
5 | クリップボードへのアクセス | Silverlight 4 以降、クリップボードへのアクセスがサポートされた。 クリップボードへのアクセスは、ユーザが開始し、セキュリティ プロンプトでアクセス許可を付与する必要がある。 現在のページが閉じられるか、ユーザが別の操作に移った時点でアクセス許可は終了する 。 |
参考 †
基礎(MSDN) †
@IT > HTML5 + UX †
Silverlight開発を始めるための基礎知識 †
http://www.atmarkit.co.jp/fwcr/index/index_silverlight.html
Silverlight 2で.NET技術をカッコよく使おう †
@IT > Insider.NET †
無償環境でSilverlight 2アプリを開発しよう! †
http://www.atmarkit.co.jp/fdotnet/vblab/silverlight2develop_index/index.html
- 特集:Silverlight 2アプリを開発しよう!
- (前編)ついに登場!Silverlight 2正式版。その概要を押さえよう!
- (後編)無償環境でSilverlight 2アプリの開発を始めよう!
- 連載:続・無償環境でSilverlight 2アプリを開発しよう!
- 第1回 動きのあるSilverlightアプリを作ろう
- 第2回 Webサービスを利用するSilverlightアプリを作ろう
- 第3回 ファイルを利用するSilverlightアプリを作ろう
さらに進化を遂げたSilverlight 3 > Silverlight 3、ここがすごい! †
連載:Silverlight 3実践プログラミング †
http://www.atmarkit.co.jp/fdotnet/chushin/silverlight3develop_index/index.html
- ナビゲーション・フレームワークとChildWindow?コントロール
- SaveFileDialog?とBitmap API
- LocalConnection? APIと動的なスタイリング
CodeZine? †
Tags: :.NET開発, :WPF/Silverlight, XAML