-
Notifications
You must be signed in to change notification settings - Fork 0
MS_Silverlight
- 戻る(WPF/Silverlight)
マイクロソフトの提供する RIA フレームワークである。
-
クロスブラウザ・クロスプラットフォームを謳い、
ランタイムは Windows だけでなく Mac や Linux(Monoプロジェクト)にも提供され、
多くのプラットフォームに対応している
(対応しようとしていた時期があった)。
移行メモ(用語): RIA = Rich Internet Application。
ブラウザ プラグイン上でデスクトップ アプリ並みの UI を提供する方式の総称で、
Adobe Flash / Flex、JavaFX などが同時代の競合であった。
Linux 向けランタイムは Mono プロジェクトの Moonlight として提供されたが、
2012年に開発が終了している。
Silverlight は Microsoft Edge でも Chrome でもサポートされない。
-
マイクロソフトは、2021 年に Silverlight 5 のサポート終了日を設定しているが、
Silverlight 5 をもって、Silverlight の開発終了の可能性も報道されている。 -
従って、将来性は無いと考えられるため、新規採用は控えた方が良い。
補足(確定した事実): 予告どおり、
Silverlight 5 のサポートは 2021年10月12日に終了した。
加えて、それ以前に実行環境の側が先に消滅している。
時期 出来事 2015 Microsoft Edge(当時)が NPAPI / ActiveX 非対応。Silverlight が動かない 2015-09 Chrome が NPAPI サポートを完全撤廃 2020-12 Internet Explorer 以外に動作環境がほぼ無くなる 2021-10-12 Silverlight 5 サポート終了 2022-06 IE 11 のサポート終了。事実上、動作環境が消滅 つまり「サポート終了日まで使える」のではなく、
ブラウザ側の都合で、その数年前から実質使えなくなっていた。
これはプラグイン方式の技術に共通するリスクであり、
Blazor(WebAssembly、W3C 標準)が
同じ轍を踏まないと言える根拠でもある。
2020年3月11日辺りにアナウンスされた新しい技術(情報)。
-
Silverlight で開発したアプリケーションを
- WebAssembly にコンパイルし、
- 現在のブラウザで動かせるようにするもの。
-
現時点では「謎」技術
(謎のまま終わりそうな気もしている)。
補足(最新化): OpenSilver は「謎のまま」では終わらず、
現在も開発が継続している(MIT ライセンスの OSS)。
- Silverlight の XAML / C# コードを、
Mono ベースの WebAssembly 上で動かす。- 実体としては「Silverlight API 互換レイヤを持つ Blazor アプリ」に近い。
- 商用サポート(Userware 社)もある。
ただし、選択の理由は
「既存の Silverlight 資産を延命させたい」場合に限られる。
新規開発で選ぶ技術ではない。
- 参考
- OpenSilver
https://opensilver.net/ - WebAssembly を使って Silverlight をオープンソースで実装する
「OpenSilver」プロジェクト | OSDN Magazine
https://mag.osdn.jp/20/03/17/143000
- OpenSilver
-
(1)
『ActiveX』のサポートはMicrosoft Edgeで終了されており、 それにはSilverlightのサポートの廃止も含まれる。 その理由としては(中略)、HTML5の拡張仕様をベースとする 実行可能でセキュアなメディアソリューションの登場などが挙げられる cf. マイクロソフト、新ブラウザ「Edge」で「Silverlight」をサポートせず - CNET Japan -
(2)
Microsoftが、Webページでのメディア再生にSilverlightの使用をやめて HTML5ベースの技術に移行することを推奨している (・・・中略・・・) デバイスやプラットフォームの種類が増加するにつれサポートが困難になっており、 脆弱性の修正にも時間がかかる。 cf. Microsoft、Silverlightの使用中止を推奨
-
Microsoft Silverlight - Wikipedia
https://ja.wikipedia.org/wiki/Microsoft_Silverlight -
Silverlight のサポート ライフサイクル
https://learn.microsoft.com/lifecycle/products/silverlight-5
WPFと同じXAML+.NET(VB、C# などの.NET言語)
によって開発・実装を行うが、以下の点が通常の WPF と異なる。
- RIA であるためサンドボックス化されたコンテキストの内部で実行される。
- ランタイム配付の軽量化のためランタイムが .NET、WPFと異なる
(機能が制限されている、若しくは差異がある)。 - ビデオやオーディオの独自の再生プレイヤーを持つ
- WMV / WMA 標準の「Windows Media Player」ではなく、
独自の再生プレイヤーを持っているため、
クライアント PC への「Windows Media Player」のインストールは不要 - デジタル著作権管理 (DRM) を Silverlight アプリケーションに組み込むと、
さまざまなシナリオで、コンテンツの保護を強化し、
より安全な配信を行うことができる。
- WMV / WMA 標準の「Windows Media Player」ではなく、
「WPF」 → 「Silverlight」の機能の差異として、
- 「Silverlight」でカットされた機能
- サポートされない機能
- 制限付きの機能
- 「WPF」⇔「Silverlight」間で差異のある機能
- 「Silverlight」の独自の機能
などがある。
ザックリ纏めると。
-
フロードキュメント
-
動的リソース
-
コントロール
- 基本的なコントロール
- ドキュメント コントロール
- メニュー、ツールバー、ステータスバー コントロール
- ナビゲーション フレームワークのコントロール
- Chrome(外観)、Decorator(効果)コントロール
- その他 コントロール
-
その他
-
TileBrush.TileModeプロパティ -
ITypedList、BindingList<T>、InstanceFactory -
MarkupExtension基本クラス -
ValueConversion属性 - Entity Data Model(EDM)
-
移行メモ(正誤): 元ページは最後の項目を
「Electronic Documentation Management(EDM)」としていたが、
.NET の文脈での EDM は Entity Data Model(ADO.NET Entity Framework の
概念モデル)を指す。ここでは Entity Data Model と解するのが妥当である。
- 依存関係プロパティ
- データバインディング
- 要素ツリー
- トリガ
- コマンド実行
- 3Dグラフィックス
Freezable- マルチタッチAPI
- サブピクセル レンダリング
- 印刷機能
- XAMLの処理
- Deep Zoom
- ブラウザ外実行
- コントロール
- API
「Silverlight」アプリケーションは、「サンドボックス」と呼ばれる
「部分信頼」のセキュリティ境界内で動作するため、
通常の .NET アプリケーションと比べて制限がある
(ただし、「ブラウザ外実行」では、昇格されたアクセス許可を要求できる)。
- ブラウザ外実行(Out of Browser)
- trusted モードにすると Windows 限定で COM の呼び出しが可能になる。
ただし、実際には署名を施す必要がある。
- trusted モードにすると Windows 限定で COM の呼び出しが可能になる。
アプリケーション内のセキュリティのコンテキストで見ると、
「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 以降、クリップボードへのアクセスがサポートされた。 クリップボードへのアクセスは、ユーザが開始し、セキュリティ プロンプトでアクセス許可を付与する必要がある。 現在のページが閉じられるか、ユーザが別の操作に移った時点でアクセス許可は終了する。 |
補足(この設計は今も参考になる): 「特権操作にはユーザ操作(ジェスチャ)を
必須にする」という考え方は Silverlight 固有のものではなく、
現在の Web 標準にそのまま受け継がれている。
Silverlight 現在の Web API OpenFileDialog経由でのみファイル アクセスFile System Access API(ユーザ操作必須) 全画面表示はユーザが開始 Fullscreen API(ユーザ ジェスチャ必須) Web カメラ・マイクは許可プロンプト getUserMedia()(許可プロンプト必須)クリップボード アクセスは許可制 Clipboard API(許可 or ユーザ操作必須) Silverlight という製品は消えたが、
サンドボックスの設計思想そのものは正しく、標準側が引き取った
と見るのが公平である。
- 基礎(MSDN)、@IT > HTML5 + UX、@IT > Insider.NET、CodeZine 等の
連載記事は、いずれも Silverlight 2 〜 3 時代のもので、
現在はリンク切れが多い。必要な場合は Wayback Machine 等を参照のこと。
Tags: 移行, .NET開発, WPF/Silverlight, XAML
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。