特集:WPF 4とSilverlight 4

これから業務アプリを開発するならどっち?

グレープシティ株式会社 八巻 雄哉
2010/04/20
Page1 Page2 Page3

保守容易性

 一口に保守容易性といっても、それを決める要素はアプリケーションの設計から運用に至るまで数多く存在する。ここでは主にアプリケーションのバージョン・アップ時に重要となる以下の2つの要素について取り上げることにする。

アプリケーションの自動更新

 アプリケーションの自動更新機能が保守作業を大幅に軽減してくれるのはいまさら説明するまでもないだろう。アプリケーションの自動更新機能に関して両技術を比較してみると、下の表のようになる。

 

WPF Silverlight
Windowsアプリケーション ブラウザ・アプリケーション Windowsアプリケーション
XCOPY、インストーラ ClickOnce XBAP ブラウザ内
実行
ブラウザ外
実行
自動更新
  対話
必要
不要
不要
必要
ロールバック
不可
不可
不可
オフライン実行
両技術におけるアプリケーションの自動更新機能

 Webアプリケーションの場合、単に自動的にアプリケーションが更新されるというだけでなく、その更新にユーザーとの対話を伴う必要がないという点が大きな魅力だといえよう。対話を伴わないアプリケーションの更新は、SilverlightはもちろんのことWPFでもXBAPで実現可能だ。

【コラム】完全信頼XBAP

 これまで、イントラネットおよびインターネットからXBAPを起動した場合には、部分信頼アプリケーションとしてしか実行できなかった。完全信頼アプリケーションとして実行するには、クライアントごとに面倒な設定を行う必要があったのである。そのため、同じくWebブラウザ上でアプリケーションを展開するSilverlightに対する優位性が低く、XBAPはあまり注目されることがなかった。

 しかしながら、WPF 4ではイントラネットからの起動であればユーザーに実行の許可を求めるプロンプトを伴う形で完全信頼アプリケーションの実行ができるようになり、がぜん使える存在となっている。

 下の表は、各ゾーンの信頼状態の違いをまとめたものだ。

セキュリティ・ゾーン 動作 必要な作業
ローカル・コンピュータ 自動的に完全信頼 なし
イントラネット
および信頼済みサイト
対話を伴って完全信頼 ユーザーがプロンプト内で確認する証明書を署名する。
インターネット 信頼が許可されないため失敗 -
WPF 4におけるXBAPの動作

 下の画面は、ユーザーに実行の許可を求めるプロンプト。

ユーザーに実行の許可を求めるプロンプト

 これにより、イントラネット上に展開するアプリケーションであればXBAPでもフル機能を使用できるため、ブラウザ・アプリケーションでありながらサービスを介さずに直接データベースにアクセスするといったことが可能となる。

 なお、アプリケーションのロールバック機能(=1つ前のバージョンに戻す機能)が必要な場合、選択肢はWPFアプリケーションのClickOnceを用いた配布のみとなる点も注目しておきたい。

ランタイムのバージョン管理

 同じバージョン・アップであっても見落とされがちなのがランタイムのバージョン・アップだ。

 古くはDLL地獄と呼ばれるほど問題の種となる事柄であったが、サイドバイサイドという仕組みにより1つの環境で複数バージョンのランタイムが共存可能になったことから、最近ではあまり意識することが少なくなった。しかしながら、この点においても両技術ではアプローチが大きく異なっているため紹介しておこう。

 ご存じのとおり.NET Frameworkはサイドバイサイドという仕組みによって1つの環境に複数バージョンのランタイムが共存可能だ。

 例えば、WPF 3.5アプリケーションが動作している環境にWPF 4アプリケーションをインストールすることになった場合、下の図のように.NET Framework 3.5版と共存する形で.NET Framework 4版のインストールが可能だ(.NET Framework自体も3.5と4が共存可能)。

WPF 3.5アプリケーションが動作している環境にWPF 4アプリケーションをインストールした場合

 一方Silverlightの場合、1つの環境に1つのSilverlightランタイムしか存在できない。

 つまり、例えばSilverlight 3アプリケーションが動作している環境にSilverlight 4アプリケーションをインストールすることになった場合、下の図のようにSilverlight 3ランタイムが上書きされる形でSilverlight 4ランタイムがインストールされる。

Silverlight 3アプリケーションが動作している環境にSilverlight 4アプリケーションをインストールした場合

 これではSilverlight 3アプリケーションの動作が変わってしまったり、最悪の場合動かなくなったりしてしまうのではないかと思われるかもしれないが、心配はいらない。SilverlightにはQuirksモード(互換モード)が存在し、Silverlight 4ランタイム上のSilverlight 3アプリケーションはこのQuirksモードで動作する。そのため、基本的にはSilverlight 3ランタイムの上で実行したときとまったく同じ結果が得られるというわけだ。

 例えば、Silverlight 2のListBoxコントロールはピクセル単位のスクロールとなっているのに対し、Silverlight 3のListBoxコントロールは行単位のスクロールとなっている。Silverlight 3ランタイム上でSilverlight 2アプリケーションを動作させた場合、行単位のスクロールには変更されずに、Quirksモードによってきちんとピクセル単位のスクロールが再現される。


 INDEX
  特集:WPF 4とSilverlight 4 
  これから業務アプリを開発するならどっち?
    1.導入容易性
  2.保守容易性
    3.開発容易性と要件実現性


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH