Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?

Preview:

DESCRIPTION

 

Citation preview

グレープシテゖ株式会社

八巻 雄哉 blog : d.hatena.ne.jp/Yamaki/

twitter : yamaki00

WPF 4とSilverlight 4、 これから業務ゕプリを開発するならどっち?

WPF 4 34%

Silverlight 4 66%

得票数:86

Silverlight派

WPF派

WPFの方が顧客にとっては手軽で便利そう。

「とりあえずWebで作っとけ」病に反対の意を込めてWPFにしておきます。

ゕプリケーション配布においてどちらかというとSilverlightの方が配布しやすいかなと思う。

実際サポートするしないは関係なく、マルチプラットフォームという響きは売りになりそう。

Silverlight が WPF のサブセットである限り WPF 一択。

導入しやすいこと

保守しやすいこと

開発しやすいこと

技術的に実現できること

業務ゕプリで技術を選定するとき それが一番大事♪

Ease of adoption

実行環境(ランタム)

普及率

サズ

ンストール

時間

方法

要件

.NET Frameworkのンストールが必須

65%

25%

10%

3.5 SP1

その他のバージョン

未ンストール

Scott Hanselman's Computer Zen

How many PCs in the world have the .NET Framework installed? http://www.hanselman.com/blog/HowManyPCsInTheWorldHaveTheNETFrameworkInstalled.aspx

Operating System Market Share - December, 2009

marketshare.hitslink.com

OSプリンストール

PCメーカープリンストール

可能性あり(Windows 7 + .NET Framework 4)

Windows .NET Framework 普及率

2000 - 1%

XP - 73%

Vista 3.0 19%

7 3.51(3.5 SP1) 6%

riastats.com

Rich Internet Application Statistics

Country : Japan

52%

2% 1%

45% 3

2

1.0

未ンストール

Silverlightランタムのンストールが必須

.NET Framework インストーラー種 サイズ ダウンロードサイズ

3.5 SP1 再頒布パッケージ 231.5 MB -

Webンストーラー 2.8 MB 10 MB – 60 MB

4 Beta 2 (フルパッケージ)

x86再頒布パッケージ 37.7 MB -

x64再頒布パッケージ 54.5 MB -

Ia64再頒布パッケージ 56.4 MB -

Webンストーラー 850 KB 25 MB – 56 MB

4 Beta 2 Client Profile

x86再頒布パッケージ 30.9 MB -

x64再頒布パッケージ 47.1 MB -

Webンストーラー 850 KB 25 MB – 54 MB

Satter Ramblings: Deploying .NET Framework 4 Beta 2

http://www.satter.org/2009/10/deploying-net-framework-4.html

Silverlight インストーラー種 サイズ

3 ランタム 4.7MB

開発者ランタム 6.41MB

4 Beta ランタム ?

開発者ランタム 7.63MB

テスト環境

CPU : Core 2 Duo T7400 2.16GHz

メモリ : 3GB

OS : Windows 7 Enterprise x86(VHDブート)

計測対象

.NET Framework 4 Beta 2 Client Profile

Silverlight 3 RTW

結果

.NET Framework 4 Beta 2 Client Profile

Silverlight 3 RTW

+ 再起動

両者共通

ンストーラーのダウンロードと実行

Windows Update(追加選択)

Active Directory、Systems Management Server (SMS)

管理者向けの Microsoft .NET Framework 3.5 配置ガド

http://msdn.microsoft.com/ja-jp/library/dd297674.aspx Silverlight デプロメントガドv2

http://www.microsoft.com/japan/silverlight/resources.aspx

ゕプリケーション実行(ンストール)時

WPF Bootstrapper(必須コンポーネント)

MSI

ClickOnce

Internet ExplorerのMIMEハンドラ

WPFブラウザゕプリケーション(XBAP)

Silverlight ダウンロードサトへのリンク表示

(表示画像の変更可)

XBAPにおける.NET Framework自動検出

Internet Explorer 7以降

拡張子XBAPのMIMEハンドラ

ブートストラッパゕプリケーションが .NET Frameworkのンストールを開始

ダウンロードはバッググラウンド処理

WPF アプリケーションの配置

http://msdn.microsoft.com/ja-jp/library/aa969776.aspx

OS .NET FX 4 ( WPF )

Silverlight

3 4

Windows 7 Windows Server 2008 R2

✔ ✔ ✔

Windows Vista Windows Server 2008

✔ ✔ ✔

Windows XP Windows Server 2003

✔ ✔ ✔

Windows 2000 - ✔ ?

※どちらも管理者権限が必要 ※OSによりサービスパックの適用が必須のものあり ※SilverlihgtはSSE命令セットをサポートしたプロセッサが必要

2010年7月13日 延長サポート終了

Maintenancebility

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

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

WPF Silverlight

Windowsアプリケーション ブラウザアプリケーション Windowsアプリケーション

XCOPY、インストーラー

ClickOnce XBAP(ClickOnce)

ブラウザ内 実行

ブラウザ外 実行

自動更新 - ✔ ✔ ✔ ✔

対話 - 必要 不要 不要 必要

ロールバック - 可 不可 不可 不可

オフライン実行 ✔ ✔ - - ✔

WPF XAML Browser Applications Overview

http://msdn.microsoft.com/ja-jp/library/aa970060(VS.100).aspx

完全信頼XBAP(WPF 4で追加) セキュリティ ゾーン 動作 必要な作業

ローカル コンピューター

自動的に完全信頼 なし

ントラネット および信頼済みサト

対話を伴って完全信頼 ユーザーがプロンプト内で確認する証明書を署名する。

ンターネット 信頼が許可されない ため失敗

-

WPF 同一環境に異なるバージョンの.NET

Frameworkを共存可能(side-by-side実行)

Silverlight 同一環境に異なるバージョンの

Silverlightランタムは共存不可能

Silverlight 3ランタム上のSilverlight 2ゕプリはQuirksモード(互換モード)で動作

既存のSilverlight 2アプリケーションを確実にSilverlight 3で動作させる

5 アップグレードによる互換性に影響する変更点

http://msdn.microsoft.com/ja-jp/library/cc645049%28VS.95%29.aspx#sectionToggle4

CLR 2.0

Silverlight 2

CLR 2.0 CLR 4.0

Silverlight 3

Quirksモード

(Silverlight 2互換モード)

Ease of development

n層開発

非同期通信

WPF ✔

Silverlight -

開発が必要な部分

WPF ✔

Silverlight ✔

開発が必要な部分 開発が必要な部分

サーバー(ASP.NET) プロジェクト

二重化が必要な共通ロジックの開発を コードの自動生成により一元化

データゕクセス レヤー

Domain Service

EntityObject

Domain Context

Entity コード生成

ビュー

Domain Data

Source

n階層ゕプリケーション開発をシンプルに

ObjectContext

クラゕント(Silverlight)

プロジェクト

SilverlightのWebサービス呼び出しは 非同期のみ

欠点

コードの読み書きが大変

余計な処理が必要

RIA的には

UIがブロックされないなんて素敵!

業務ゕプリ的には

間違って処理中にボタン押されたら大変!

Silverlight Toolkit

BusyIndicator

Possibility of implementation

機能要件

非機能要件

スクロールパフォーマンス

3に足りなかった業務ゕプリ必須機能

クリップボード

右クリック、マウスホール

UIElement TextInput、TextInputStart、TextInputUdate

InputMethod PreferredImeConversionMode、PreferredImeState

印刷

PrintDocumentクラス

PrintPageベント

PrintPageEventArgsメンバ

HasMorePages、PageVisual、PrintableArea

PageVisualプロパテゖに設定した UIElementがラスタラズされ印刷

基本的には画面を印刷するための簡易機能

WPF >>>> 超えられない壁 >>>> Silverlight (セキュリテゖの壁)

WPF >> Silverlight >> 超えられない壁 >>>> (セキュリテゖの壁)

サンドボックスモード

WebBrowserコントロール

NotificationWindow

ウゖンドウの位置と大きさの変更

信頼昇格モード

「C:¥Users」の特定フォルダに対する フゔルの読み書き

ポリシーフゔルいらずのクロスドメン通信

フルスクリーンモードにおけるフルキーボード対応

COMオートメーション

テスト環境

CPU : Core 2 Duo T7400 2.16GHz

GPU : NVIDIA Quadro NVS 110M

メモリ : 3GB

OS : Windows 7 Enterprise x86(VHDブート)

DataGridコントロール

10列×500行( = 5000セル)

結果

WPF 4

最低フレームレート: fps

Silverlight 4

最低フレームレート: fps

.NET Frameworkのンストールは、 思っていたよりは時間がかからない。

XBAPは実はデキる奴だった。

対話を伴わない自動更新

完全信頼XBAP

WPFはGPUを活用しているから速い という印象があるが、スクロールは遅い。

Silverlightのランタムは共存できない。

物理的な層を跨ぎ、非同期処理を 強いられる開発は慣れていないと大変

WCF RIA Servicesにより大部分が軽減される。

業務ゕプリに必要な機能は揃っているが、 痒いところに手が届かないこともある。

ただしCOMを使えば何でもゕリ

スクロールはWPFよりも速い。

ロールバックが必要?

WPFゕプリケーション

(ClickOnce)

ントラネット

のみで運用?

WPFブラウザゕプリ

ケーション(XBAP)

Silverlight

ゕプリケーション

YES

YES

NO

NO

WPF派だったけどSilverlightに心変わりした。

Silverlight派だったけどWPFに心変わりした。

エディション 概要

for Windows Forms 2010J Windowsフォーム開発用の 12コンポーネント

for ASP.NET 2010J ASP.NET開発用、Ajaxに対応した 28のコンポーネント

for Silverlight 2010J Silverlight 3開発用の 39のコンポーネント

Enterprise 2010J 上記のすべてのコンポーネントとWPF用のコンポーネント、合計80種を収録した最上位エデゖション

発売中 http://www.grapecity.com/japan/c1/

Recommended