Contenu connexe Similaire à Silverlight 5でぶり返すWPF不要論 Similaire à Silverlight 5でぶり返すWPF不要論 (20) Silverlight 5でぶり返すWPF不要論1. VSUG DAY 2011 Summer
Silverlight 5で
ぶり返すWPF不要論
グレープシティ株式会社
八巻 雄哉
2. What's New in Silverlight 5 Beta
Silverlight 5 Betaの新機能
VSUG DAY 2011.06.19 2
3. What's New in Silverlight 5 Beta
http://msdn.microsoft.com/en-us/library/gg986857(v=vs.96).aspx
VSUG DAY 2011.06.19 3
5. 3D
DrawingSurfaceコントロール
XNA Games Studio 4.0グラフィックス
ライブラリ(サブセット)
WPF
Viewport3Dコントロール
XAMLによる3D描画
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 5
6. システムウィンドウの表示
System.Windows.Windowクラス
クラス自体はSilverlight 4から存在
4ではOOB時のメインウィンドウを操作するためのクラス
5ではTitle、Content、Visibilityなどのプロパティが追加
WPFではこれらに加え
Iconの変更可、直接XAMLでWindowをデザイン可
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 6
7. クリック回数の検出
MouseButtonEventArgs.ClickCountプロパティ
SilverlightとWPFの違い
カウントが初期化されるまでの時間
Silverlight:前のクリックから次のクリックまでを計測
WPF:最初のクリックから計測
WPFのみ
Control.MouseDoubleClickイベント
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 7
8. カスタムのマークアップ拡張
マークアップ拡張とは
実行時評価と既存オブジェクトの参照
MarkupExtensionクラスが用意され、
オリジナルのマークアップ拡張が作成可能に
WPF
Silverlightにないマークアップ拡張
x:Static、x:Null、x:Type、x:Array、DynamicResource
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 8
9. 構造体における属性構文のサポート
構造体のプロパティを属性構文で設定
した場合、4まではXamlParseException
<Border CornerRadius="0,300,0,100">
<Border>
<Border.CornerRadius>
<CornerRadius BottomLeft="100" TopRight="300" />
</Border.CornerRadius>
</Border>
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 9
11. StyleのSetter.Valueプロパティに対する
データバインディングサポート
SetterのValueプロパティに
{Binding}が書ける
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="{Binding FontSize}"/>
</Style>
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 11
12. 階層構造をたどってバインディング
ソースを探すFindAncestor
特定の型の上位要素と連結したいとき
(例)DataTemplate内でのデータバインディング
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,
RelativeSource={RelativeSource FindAncestor,
AncestorType=ListBoxItem}}" />
</DataTemplate>
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 12
13. DataTemplate.DataTypeプロパティ
データの型によって
DataTemplateを切り替える
WPF
DataTypeのほかに、任意の条件でDataTemplateを
切り替えるDataTemplateSelectorもある
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 13
15. 信頼されたアプリケーションにおける
制限のないローカルファイルシステムへのアクセス
Silverlight 4
ユーザープロファイルの特定フォルダーのみ
MyDocuments、MyMusic、MyPictures、
MyVideos
Silverlight 5 Beta
制限なし
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 15
16. 信頼されたアプリケーションのブラウザー内実行
条件
HKEY_LOCAL_MACHINE¥Software¥Microsoft¥Silverlight¥
AllowElevatedTrustAppsInBrowser
デジタル署名の追加
利用可能となる機能の例
WebBrowserコントロール
NotificationWindow
WPF
完全信頼XBAP(イントラネットのみ)
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 16
18. MediaElement再生速度の変更
MediaElement
PlaybackRateプロパティ
マイナス値の設定が可能と書かれているが逆再生されない
WPF
SpeedRatioプロパティ
マイナス値は設定できない(逆再生はサポートされていない)
Silverlight 2 3 4 5
WPF 3.0 3.5 3.5SP1 4
VSUG DAY 2011.06.19 18
21. Silverlight 5 Betaの新機能まとめ
すでにWPFで実装されていた機能
① ItemsControlの検索機能
② システムウィンドウの表示
③ クリック回数の検出
④ カスタムのマークアップ拡張
⑤ 構造体における属性構文のサポート
⑥ StyleのSetter.Valueプロパティに対するデータバインディングサポート
⑦ 階層構造をたどってバインディングソースを探すFindAncestor
⑧ DataTemplate.DataTypeプロパティ
⑨ LineHeightプロパティ
VSUG DAY 2011.06.19 21
22. Silverlight 5 Betaの新機能まとめ
機能としてはWPFにあるが、
WPFとは異なるかたちで追加された機能
① 3D
② 動的生成されたプロパティに対する
データバインディング
③ 効果音のための軽量なクラス
④ MediaElement再生速度の変更
VSUG DAY 2011.06.19 22
24. Silverlight 5 Betaの新機能まとめ
WPFに対してアドバンテージとなる機能
① データバインディングのデバッグ
② CharacterSpacingプロパティ
③ RichTextBoxOverflowコントロール
VSUG DAY 2011.06.19 24
25. Silverlight 5 Betaの新機能まとめ
機能の種類 機能数
すでにWPFで実装されていた機能 9
機能としてはWPFにあるが、WPFとは異なるかたちで追加された機能 4
Webブラウザのプラグインであることで必要となる機能 2
WPFに対してアドバンテージとなる機能 3
VSUG DAY 2011.06.19 25
29. 図で比較
.NET Framework Silverlight
.NET Frameworkクラスライブラリ Silverlightの
Client Profile .NET Frameworkクラスライブラリ
WPF Windowsフォーム UIフレームワーク
ADO.NET WCF WCF
WF (クライアント) (クライアント)
ベースクラスライブラリ(BCL) ベースクラスライブラリ(BCL)
.NET Frameworkクラスライブラリ
Extended
WCF
ASP.NET
(サーバー)
共通言語ランタイム (CLR) 共通言語ランタイム (CLR)
VSUG DAY 2011.06.19 29
31. できることが同じ?
Silverlight 3
ブラウザー外実行(OOB)
Silverlight 4
信頼されたアプリケーション
セキュリティ制限の緩和
利用できるローカルリソースの拡大
Silverlight 5
信頼されたアプリケーションのさらなる制限緩和
信頼されたアプリケーションのブラウザ内実行
VSUG DAY 2011.06.19 31
32. WPFとSilverlightの進化(印象)
機能
機能
WPF 3.54
WPF3.5
WPF 3.0SP1
Silverlight 5
Silverlight 4
Silverlight 3
Silverlight 2
VSUG DAY 2011.06.19 32
34. System.Windows.Controls名前空間
WPF 4 Silverlight 5 Beta
クラス数 155 115
自分だけが持つクラス数 65 25
両方が持つクラス数 90
WPFのみ 共通 Silverlightのみ
WPF 65 90
Silverlight 90 25
VSUG DAY 2011.06.19 34
35. SilverlightにあってWPFにないクラス(抜粋)
AutoCompleteBox ChildWindow DataGridRowGroupHeader
DataPager DescriptionViewer DrawingSurface
HyperlinkButton MultiScaleImage RichTextBoxOverflow
ValidationSummary WebBrowserBrush
VSUG DAY 2011.06.19 35
36. WPFにあってSilverlightにないクラス(抜粋)
AccessText *****Converter ContextMenu
DataGridComboBoxColumn DataGridHyperlinkColumn DataTemplateSelector
DockPanel DocumentViewer Expander
FlowDocument***** GroupBox InkCanvas
ListView Menu PrintDialog
Separator SoundPlayerAction SpellCheck
StickyNoteControl StyleSelector ToolBar
Viewport3D
VSUG DAY 2011.06.19 36
37. System.Windows.Input名前空間
WPF 4 Silverlight 5 Beta
クラス数 109 27
自分だけが持つクラス数 82 0
両方が持つクラス数 27
WPFのみ 共通 Silverlightのみ
WPF 82 27
Silverlight 27
VSUG DAY 2011.06.19 37
38. System.Windows.Controls.Buttonクラス
WPF 4 Silverlight 5 Beta
プロパティ数 136 63
自分だけが持つプロパティ数 76 3
両方が持つプロパティ数 60
WPFのみ 共通 Silverlightのみ
WPF 76 60
Silverlight 60 3
VSUG DAY 2011.06.19 38
40. WPFにあってSilverlightにないクラス(抜粋)
AreAnyTouches***** BindingGroup CommandBindings
CommandTarget ContentStringFormat ContentTemplateSelector
ContextMenu Focusable ForceCursor
HandlesScrolling InputBindings Is*****
LayoutTransform LogicalChildren OverridesDefaultStyle
SnapsToDevicePixels ToolTip Touches*****
Visual*****
VSUG DAY 2011.06.19 40
41. オーバーロードの数
System.Markup.XamlReaderクラス
WPF 4 Silverlight 5 Beta
Load(Stream) -
Load(XamlReader) -
Load(XmlReader) -
Load(Stream, ParserContext) -
- Load(string)
LoadAsync(Stream) -
LoadAsync(XmlReader) -
LoadAsync(Stream, ParserContext) -
VSUG DAY 2011.06.19 41
43. sealed修飾子
WPF 4
public class RepeatButton : ButtonBase
Silverlight 5 Beta
public sealed class RepeatButton : ButtonBase
VSUG DAY 2011.06.19 43
44. WPFとSilverlightの進化(実際)
表に見えやすい機能
表に見えやすい機能
WPF 3.5 4
WPF SP1
WPF 3.0
3.5 Silverlight
Silverlight
5
4
Silverlight
3
Silverlight
2
懐の深さ 懐の深さ
VSUG DAY 2011.06.19 44
47. 選択のポイント
懐の深さ リーチの広さ
開発生産性 幅広い実行環境
Silverlight
WPF
プラットフォーム固有機能
軽量なランタイム
ハードウェアリソース活用
VSUG DAY 2011.06.19 47
49. GrapeCity × WPF GrapeCity × Silverlight
グ
リ
ッ
ド
Silverlight
FlexGrid for WPF FlexGrid for Silverlight
WPF
入
力
支
援
InputMan for WPF InputMan for Silverlight
VSUG DAY 2011.06.19 49
50. WPF/Silverlightにおける
サードパーティコンポーネントの必要どころ
① 標準DataGridの
スクロールパフォーマンス
② 標準入力系コントロールの不足
VSUG DAY 2011.06.19 50
51. 高度なレイアウトシステムが
スクロールパフォーマンスに影響
強力かつ柔軟なレイアウトシステムの代償
パネルに子要素が追加されるたびに、
再帰的に子要素の大きさと位置の測定が行われる
リスト項目を大量に表示するコントロールでは、
パフォーマンス負荷となる
「UIの仮想化」を行い、画面に表示されている部分の
オブジェクトのみを生成することで解決
レイアウトプロセスの負荷低減
メモリ使用量の削減
VSUG DAY 2011.06.19
53. カスタマイズ性 vs コントロール数
Windowsフォーム
外観のカスタマイズ性が低い
細分化されたコントロールによる高い生産性
WPF/Silverlight
外観のカスタマイズ性が高い
標準で用意されているコントロールが少ない
(特に入力系コントロール)
業務アプリでは機能のカスタマイズが重要
VSUG DAY 2011.06.19
54. 業務アプリで使われる入力系コントロール
Windowsフォーム WPF/Silverlight InputMan for WPF
テキスト TextBox TextBox GcTextBox
日付 DateTimePicker DatePicker GcDateTime
数値 NumericUpDown - GcNumber
マスク MaskedTextBox - GcMask
VSUG DAY 2011.06.19
55. 比較:日付入力コントロール
DatePicker GcDateTime
DateTimePicker (WPF/ (InputMan for WPF)
(Windowsフォーム)
Silverlight) (InputMan for Silverlight)
数字のみの入力 ✔ - ✔
ドロップダウンカレンダー ✔ ✔ ✔
スピンボタンによる日付入力 ✔ - ✔
時刻入力 ✔ - ✔
Null値サポート - ✔ ✔
ドロップダウンボタンの外観
和暦、入力時/表示時の書式設定、
入力候補、フィールド単位のフォー - - ✔
カス制御、…
VSUG DAY 2011.06.19