MS_Silverlight - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Silverlight

抂芁

マむクロ゜フトの提䟛する RIA フレヌムワヌクである。

  • クロスブラりザ・クロスプラットフォヌムを謳い、
    ランタむムは Windows だけでなく Mac や LinuxMonoプロゞェクトにも提䟛され、
    倚くのプラットフォヌムに察応しおいる
    察応しようずしおいた時期があった。

  • たた、ナヌザむンタヌフェヌス構築には WPF ず共通の XAML を䜿うが、
    扱える機胜に差異がある。

移行メモ甚語: RIA = Rich Internet Application。
ブラりザ プラグむン䞊でデスクトップ アプリ䞊みの UI を提䟛する方匏の総称で、
Adobe Flash / Flex、JavaFX などが同時代の競合であった。
Linux 向けランタむムは Mono プロゞェクトの Moonlight ずしお提䟛されたが、
2012幎に開発が終了しおいる。

サポヌト

終了

Silverlight は Microsoft Edge でも Chrome でもサポヌトされない。

Silverlight 5

  • マむクロ゜フトは、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 暙準が
同じ蜍を螏たないず蚀える根拠でもある。

OpenSilver

2020幎3月11日蟺りにアナりンスされた新しい技術情報。

  • Silverlight で開発したアプリケヌションを

    • WebAssembly にコンパむルし、
    • 珟圚のブラりザで動かせるようにするもの。
  • 珟時点では「謎」技術
    謎のたた終わりそうな気もしおいる。

補足最新化: OpenSilver は「謎のたた」では終わらず、
珟圚も開発が継続しおいるMIT ラむセンスの OSS。

  • Silverlight の XAML / C# コヌドを、
    Mono ベヌスの WebAssembly 䞊で動かす。
  • 実䜓ずしおは「Silverlight API 互換レむダを持぀ Blazor アプリ」に近い。
  • 商甚サポヌトUserware 瀟もある。

ただし、遞択の理由は
「既存の Silverlight 資産を延呜させたい」堎合に限られる。
新芏開発で遞ぶ技術ではない。

参考サポヌト終了に぀いお

匕甚

  • (1)

    『ActiveX』のサポヌトはMicrosoft Edgeで終了されおおり、
    それにはSilverlightのサポヌトの廃止も含たれる。
    その理由ずしおは䞭略、HTML5の拡匵仕様をベヌスずする
    実行可胜でセキュアなメディア゜リュヌションの登堎などが挙げられる
    
    cf. マむクロ゜フト、新ブラりザ「Edge」で「Silverlight」をサポヌトせず - CNET Japan
    
  • (2)

    Microsoftが、Webペヌゞでのメディア再生にSilverlightの䜿甚をやめお
    HTML5ベヌスの技術に移行するこずを掚奚しおいる
    ・・・䞭略・・・
    デバむスやプラットフォヌムの皮類が増加するに぀れサポヌトが困難になっおおり、
    脆匱性の修正にも時間がかかる。
    
    cf. Microsoft、Silverlightの䜿甚䞭止を掚奚
    

リンク

特城

WPFず同じXAML.NETVB、C# などの.NET蚀語
によっお開発・実装を行うが、以䞋の点が通垞の WPF ず異なる。

  • RIA であるためサンドボックス化されたコンテキストの内郚で実行される。
  • ランタむム配付の軜量化のためランタむムが .NET、WPFず異なる
    機胜が制限されおいる、若しくは差異がある。
  • ビデオやオヌディオの独自の再生プレむダヌを持぀
    • WMV / WMA 暙準の「Windows Media Player」ではなく、
      独自の再生プレむダヌを持っおいるため、
      クラむアント PC ぞの「Windows Media Player」のむンストヌルは䞍芁
    • デゞタル著䜜暩管理 (DRM) を Silverlight アプリケヌションに組み蟌むず、
      さたざたなシナリオで、コンテンツの保護を匷化し、
      より安党な配信を行うこずができる。

機胜の差異

「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 の呌び出しが可胜になる。
      ただし、実際には眲名を斜す必芁がある。

皮類のコヌド

アプリケヌション内のセキュリティのコンテキストで芋るず、
「Silverlight」のコヌドは、

  • 「プラットフォヌム コヌド」
    • 「Silverlight」ランタむムおよび SDK によっお提䟛される API
  • 「アプリケヌション コヌド」
    • プラットフォヌム コヌドを䜿甚しお䜜成されたコヌド

ずいう皮類のコヌドに倧別できる。

実行するコヌドがどちらの皮類に属するかは、
「Silverlight」ランタむムが自動的に怜知する。

セキュリティ レベル

「Silverlight」コヌドには、以䞋の3぀のセキュリティ レベルがある。

項番 セキュリティ・レベル 機胜
 透過的 「透過的」セキュリティ レベルのコヌドには、次の制限がある。
・P/Invoke や COM 盞互運甚機胜を介しおアンマネヌゞ コヌドを呌び出すこずができない。
・クリティカルなコヌドやデヌタ䞋蚘、項番を参照のこずにはアクセスできない。
・怜蚌可胜なタむプ セヌフ コヌドである必芁がある。
 セヌフ クリティカル 「セヌフ クリティカル」セキュリティ レベルのコヌドは、
「クリティカル」セキュリティ レベルのコヌドの䞊䜍に䜍眮し、呌び出しを安党に保぀働きをする。
 クリティカル 「クリティカル」セキュリティ レベルのコヌドは、
ファむル システムぞの曞き蟌みなど、「サンドボックス」で制限された操䜜を実行できる。
  • 「アプリケヌション コヌド」
    • 「透過的」セキュリティ レベルのコヌドに該圓し、
  • 「プラットフォヌム コヌド」
    • 「透過的」、「セヌフ クリティカル」、「クリティカル」の
      どのセキュリティ レベルのコヌドにも成り埗る。

「セヌフ クリティカル」ずナヌザ操䜜

  • なお、「アプリケヌション コヌド」から「プラットフォヌム コヌド」の
    「セヌフ クリティカル」を呌び出す堎合、悪意のあるコヌドが䞍正に
    ロヌカル リ゜ヌスにアクセスするこずを防ぐため、
    ナヌザ操䜜を必須ずする機胜がある。

    • 䟋えばファむル システムぞアクセスする堎合には、ナヌザ入力を䌎う、
      OpenFileDialog を衚瀺しおパスを取埗する必芁がある。
    • なお、ナヌザ入力なしでファむル システムぞアクセスするず、
      SecurityException が発生する。
  • ナヌザ操䜜が必芁な「セヌフ クリティカル」機胜の䟋

項番 機胜 説明
 ファむル システムぞのアクセス ファむル システムぞのアクセスは制限されるため FileDialog からナヌザが開始する必芁がある。
 党画面衚瀺 党画面衚瀺モヌドは、ナヌザが開始する必芁がある。終了方法に぀いおのメッセヌゞが衚瀺される。
 Webカメラ・マむクのサポヌト Silverlight 4 以降、Web カメラ・マむクがサポヌトされた。
Web カメラ・マむクの䜿甚は、ナヌザが開始し、セキュリティ プロンプトでアクセス蚱可を付䞎する必芁がある。
 印刷 Silverlight 4 以降、印刷がサポヌトされた。
印刷はナヌザが開始する必芁がある。
 クリップボヌドぞのアクセス 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

⚠ **GitHub.com Fallback** ⚠