wpf 4とsilverlight 4、これから業務アプリを開発するならどっち?
DESCRIPTION
TRANSCRIPT
グレープシテゖ株式会社
八巻 雄哉 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ランタムのンストールが必須
OSプリンストール
なし
PCメーカープリンストール
あり
HP Envy 13-1000 Notebook PC series specifications http://h10010.www1.hp.com/wwpc/ca/en/ho/WF06a/321957-321957-3995709-3995710-3995710-3995928.html
.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/
http://dotnetdemo.grapecity.com/demo/C1Studio/Demo.aspx