Microsoft が現在提供している多くのアプリケーション展開オプションについて理解しようとしています。
少し調べてみると、数十の紛らわしい用語が見つかりました。
- 「WPFアプリ」
- 「クリックワンスアプリ」
- 「WPF ClickOnce アプリ」
- 「MSアプリ」
- 「XBAPアプリ」
- 「ClickOnce でデプロイされた XBAP アプリ」
- 「ClickOnce アプリをインストールしました」
- 「WPFウェブアプリ」
- 「ASP.NET Web アプリ」
- 「ASP.NET MVC Web アプリ」
- 「シルバーライトアプリ」
- 「フルWPFアプリ」
- 「同期フレームワークをサポートする ClickOnce」
調査結果を以下の 7 つの個別のアプローチに整理しました。フィードバックをいただければ幸いです:
「MSIで展開されたWPFアプリ」(多くのインストールオプションを許可)
- ターゲット コンピューターで必要な MSI ランタイム
- オプション付きウィザード
- ユーザーごとまたはマシンごとに指定できます
- 管理者によって設定されたアクセス許可によってのみ制限され、ターゲット コンピューター上のファイルとレジストリを変更できます
- デスクトップにショートカットを配置できます
- システムファイルなどを置き換えると、ターゲットコンピューターでDLL地獄に簡単に入ることができます
- 更新は大きなマイナスです: 利用可能な更新を検出するには、組み込みではなく、追加のツール/カスタム プログラミングが必要です
- ユーザーはアプリケーションを使用するためにオンラインである必要はありません
「ClickOnce でデプロイされた WPF アプリ」: (自動更新が必要で、サンドボックスで実行する場合に適しています)
- 2 回クリックする必要があり (ハイパーリンクをクリックし、[はい] をクリックします)、ユーザー入力は不要です
- 現在のユーザーのみ、マシンごとのインストールなし
- デスクトップにショートカットがない
- 通常のアプリケーションのようにプログラム リストに表示されます
- アプリケーション ファイルは常に ../My Documents/My Applications にコピーされます。
- あなたのアプリケーションへのショートカットがスタートメニュー/あなたの会社名に置かれます
- オペレーティング システムから隔離されているため、ターゲット コンピューターを変更できません
- 新しいバージョンを自動的に検出して更新する
- それらをWebサーバーに置くだけで公開されます(クライアントがそれらを検出して取得する場所)
- .NET 2.0 以降が必要
- Java Web Start と同等
- は、(1) 簡単な展開、(2) 簡単な更新、(3) ターゲット コンピュータへの影響が少ない、(4) 管理者権限が不要という 4 つの問題を解決します。
- 「低影響」と見なされる
- 2 人のユーザーが同じ ClickOnce アプリケーションを同じマシンにインストールしている場合、お互いが壊れることはありません。
- セキュリティにCASを採用
- ユーザーはアプリケーションを使用するためにオンラインである必要はありません
- .NET ランタイムが必要なため、スタンドアロンの ClickOnce アプリは Firefox および Firefox を搭載した Mac では動作しません。
- ブラウザーで実行されるため、単一ウィンドウのアプリに制限されます
- ClickOnce マニフェストの作成は、Silverlight などよりもはるかに簡単です。IDE がほとんどすべてを実行してくれるからです。ファイルをどこかでホストする必要があるだけです (Web URL の場合もあれば、ネットワーク UNC の場合もあります)。
「XBAP App」:.xbapファイルをxcopyで展開、IEやFirefoxでWebページのように瞬時に表示
- XBAP モデルの真の目標は、従来の HTML と JavaScript の Web サイト (または Flash アプレット) に相当する WPF を作成することです。
- ターゲット コンピューターは、Web ブラウザー (IE または Firefox) で Web 経由でインストールせずにアプリケーションを実行するだけです。
- 非常に簡単な展開、完全な .NET Framework (Silverlight ではなく)、およびブラウザーのナビゲーション モデルが必要なイントラネット アプリケーションに適しています。
- 99% の WPF 機能 (Silverlight の WPF 機能のサブセットとは対照的)
- ClickOnce を介して自動的に展開することもできますが、XCOPY がより一般的です
- YourApp.xbap は実際には ClickOnce 配置マニフェストです
- サンドボックスで実行
- アプリケーションを使用するには、ユーザーがオンラインである必要があります
- これらは、「Windows ベース」のアプリケーションではなく、「ページ ベース」のアプリケーションである必要があります。
- 「XBAP は、すべてのコンテンツをブラウザー ウィンドウに表示するという理由だけで、ブラウザー内で実行されているように見えます。これは、ブラウザー プロセス内に読み込まれる ActiveX コントロール (および Silverlight) によって使用されるモデルとは異なります。」
- XBAP は、.NET 3.5 がインストールされている限り、Web ページのようにブラウザーに表示されるだけで、「プロンプトなし」のエクスペリエンスを提供します。
- XBAP は相互運用機能を介して WinForm コントロールを使用できません
- Windows のドラッグ アンド ドロップの使用を許可しない
- 最も高度な WCF 機能は許可されておらず、XBAP は、XBAP がホストされているサーバー以外のサーバーと通信できません。
- 「アプリケーションが完全な信頼を必要とする場合は、スタンドアロンの WPF アプリを構築し、ClickOnce を使用して展開することを検討する必要があります」( C# 2008 の Pro WPF )
- トリック: 複数の xbap アプリケーションを 1 つの HTML ページの複数の iframe に埋め込むことができます。
「Silverlight アプリ」: クライアントのブラウザーで実行され、.NET フレームワークのダウンロードされた 4MB サブセットを使用します (つまり、3D はありません)。
- クロスブラウザ(アプリはOperaやSafariでも利用可能)
- アプリケーションの更新は ClickOnce や XBAP と同じくらい簡単です
- シングル ウィンドウ アプリ
- アプリケーションはもちろんサンドボックスにあります
- 非同期のみ
「ASP.NET MVC with JQuery/AJAX」: RAD と TDD の点で WPF での開発に匹敵する新しい開発プラットフォーム
- このアプローチは、WPF/Silverlight アプローチと共に検討する価値があります
「ASP.NET アプリ」: ViewState などを使用した従来の Web アプリケーションは、ASP.NET MVC が受け入れられるにつれて、おそらくますます使用されなくなります。
「WinForm アプリ」: 従来の Windows アプリケーションであり、WPF が受け入れられるにつれて、ますます使用されなくなります。
特に次の点についてフィードバックをいただければ幸いです。
- コントロールの再利用性 (たとえば、Silverlight で開発した場合、XBAP でコード/コントロールを再利用できますか?)
- 時々オフラインで、時々オンラインで、WCFへのアクセスが必要なクライアントへの最良のアプローチは何ですか(おそらくclickOnceアプリだと思います)