WPFのMVVMは古くなっていますか?[閉まっている]


18

私は現在、WPF用のMVVMに頭を回そうとしています-私は頭を概念に回すつもりはありませんが、愚かなCRUDよりもbeatられたトラックから遠く離れていることの実際の要点についてです。

私が気づいたのは、多くのフレームワークであり、ほとんど/すべてのブログ投稿は「年齢」前のものです。

これは、古い帽子でブロガーが次のビッグシングに移行したからか、それとも言うべきことをすべて言ったからでしょうか。

言い換えれば、私はここに欠けているものがありますか?


1
MVVM Framework for WPFは引き続き更新されています。ホットな新しいトピックのリアクティブプログラミング [google it!]は、ReactiveUIを介してMVVMとして利用できます。トップ10のwpf nugetダウンロードのうち3つはMVVMフレームワークです:Prism.WPF、MvvmCross、Caliburn.Micro。知る限り、これらはすべてXamarin.FormsとUWPをサポートしているため、今後数年間は関連があります。
ToolmakerSteve

回答:


6

MVVMは時代遅れではありませんが、そもそも過大評価されていました。私はそれが好きではなかったし、WinFormsに長く留まっていた。木のために森を見ることに失敗したので、私は入浴で赤ちゃんを投げ出しました。私は今WPFを取得しており、マークアップとコードを混在させたくないという考えを持っていますが、コード内のマークアップを1箇所に貼り付けてキャストで逆参照するというAndroidスタイルが好きです(WPFでも行うことができます何らかの理由でそうするのは決して流行になりませんでした)。

そうすれば、よりきめ細かな制御が可能になり、あらゆる「変更された」処理を心配する必要がなくなります。「変更された」イベントを見逃した場合、テストは常にそれをキャッチするとは限らないので、これは実際によりテストしやすいと感じています。

最近の傾向のように見える「宣言的」性を少し失います(たとえば、2つのウィジェットが同じ値にマッピングされている場合、MVVMではそれを行うことができますが、命令型コードでは両方を個別に設定する必要があります) 。しかし、MVVMを使用しても、それはわずかな場合にのみ機能します。あるウィジェットが別のウィジェットのログを表示する必要がある場合、別のハンドラーと別の「onchanged」イベントを作成する必要があるため、「宣言的」の定義を拡張する必要があります。

2015年の更新

WPF MVVMは、当時は(r)革新的でした。WPFと同様。しかし、二人ともいぼがありました。プレーンなWPFにはあまりにも多くの要素が組み込まれており(さらにXMLに基づいて構築されていた)、対処するのは苦痛でした。(実際、WPFが "フレームワーク"アプローチではなく、より "ライブラリ"アプローチを採用している場合、それはいくつかの本当にクールなものに変わる可能性があり、技術の世界全体が完全に異なる可能性があります)。MVVM のアイデアは素晴らしかったが、MVVMをWPFに適合させようとすると、1)C#は多くの定型文なしでは実際に表現できず、2)モーダルポップアップのようなWinFormsの遺物は依然としてイデオロギー的に普及していましたが、 MVVMで簡単に表現できます。したがって、それはすべて吸い込まれました。

とはいえ、LOBアプリに透過性またはGPUが必要な場合、Windowsでの唯一の現実的なオプションです。

ReactはもちろんMVVMを廃止しました。VS2015にはネイティブカウンターがなかったことに失望しました。今のところ、未加工のWPFを使用し続けています(これは問題ありませんが、古い感じ(実際にはwinforms と同じくらい古い感じがします)。組み込みの機能はたくさんありません(クールだが放棄されたプロジェクトのように感じます)または、MVVMを使用すると、優れた MVVM(angular 1)でさえ欠点が明らかになるため、この時点では何もせずに大きなオーバーヘッドのように感じます。

WPF MVVMは避けたい。それは余分な層であり、誰ももうそれを気にしません。


3
うーん、それは部分的には宗教の問題だと思いますが、私はCPFを使用してWPFのMVVMから始めました。2010年?そして、私はそれがとても好きでした。それ以来、私はCaliburn.MicroとAngularに移りましたが、それでも大好きです-明らかに、あなたが言ったようにMVVMには多くの欠点があります(特にダイアログを行うための非ハックな方法はありません)。MVVMは非常に冗長に感じるかもしれませんが、全体的な読みやすさと、明示的なUIデザイン/実装のギャップは、それでも価値があります。
cwap

4
「ReactはもちろんMVVMを廃止しました」-しかし、業界のほとんどはAngularを使用しています。
デン

デスクトップアプリをWebに移動することを決定するまでは、あまりにも多くの作業が必要です。すべてのコードビハインドは、すべてWPFコントロールに関連付けられています。
CADブローク16年

1
それでは、React and AngularはJavaScript環境ではありませんか?WPFとは何の関係がありますか?または私は何かが欠けています。
ベリンロリチュ16

1
@BerinLoritsch-あなたは何かを見逃していない。その段落はこのQ&Aとは無関係です。明らかに、DaxはWPFからWebプログラミングに「移行」しました。リンゴとオレンジ。
ToolmakerSteve

2

MVVMフレームワークでできることには制限があります。

WPFはMicrosoftがリリースしてから移動していないため、「完了」しています。テクノロジーに更新がある場合、ライブラリも更新する必要があります。これは起こっていません。


だから、それは「時代遅れ」であるWPFですか?それが実際の生活の中でUIとコードがあまりにも現実的な提案にするために絡み合っている、またはWPFでいくつかの調整が、それは聖杯作っている可能性があることです(またはほぼ?):あなたの最初の文に関して
Benjol

3
@Benjol-マイクロソフトはWPFを放棄したようです(少なくとも、技術を更新していません)。MVVMフレームワークに関する私のポイントは、意図した目的のために、古いプラットフォーム上でそれらを継続および拡張することはほとんどないということです。MicrosoftがWPFの更新を停止した理由はわかりませんが、それがあなたの提案することだとは思いません。Windows8とRTがWPFからリソースを奪った可能性が高いです。
Oded

18
本当じゃない。WPFは数回更新されており、ごく最近では.NET 4.5で:msdn.microsoft.com/en-us/library/bb613588.aspx
17 of 26

3
また、MSが開発者の技術を永遠にサポートしていることにも注目してください。1992年にリリースされたMFCは、Visual Studioの各リリース/サービスパックで引き続きバグ修正を取得します。

5
私は、WPFに最近追加された機能がないことが、その成熟度を示すものであると主張している限りです。また、@ Odedが既に触れているように、デスクトップアプリはまだ価値がありますが、モバイルアプリに置き換えられています。それでも、WPFが開始したもの(宣言型UIプログラミング、MVVM、DependencyProperties、およびデータバインディング)の多くは、WinRTおよびWebテクノロジ(複数のJSフレームワーク)で現在も使用されていることに言及する価値があります。これらは、この分野を大きく前進させた中核的な価値であり、今後もそうし続けると信じています。
セバスチャン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.