web-dev-qa-db-ja.com

WPFのMVVMは古くなっていますか?

私は現在、WPFのMVVMに頭を悩ませています-概念に頭を悩ませるつもりはありませんが、ダムCRUDよりもはるかに非難されていることを実行するための実際の要点を中心にしています。

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

これは、今では古い帽子であり、ブロガーが次の大物に移行したからなのか、それとも彼らが言うべきことをすべて言ったからなのでしょうか。

つまり、ここで見逃しているものはありますか?

19
Benjol

MVVMは古くはありませんが、そもそも誇張されていました。私はそれが好きではなかったし、WinFormsに長く留まってしまった。森が見えず木を探すのに失敗したので、赤ちゃんをお風呂の水で捨てました。私は今WPFを取得していて、コードとマークアップを混在させたくないという考えを理解していますが、Androidマークアップを1か所に貼り付け、コード内のキャストで逆参照するスタイル( WPFでも行うことができますが、理由が何であれトレンディになったことはありません)。

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

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

2015年の更新

WPF MVVMは、当時(r)進化的でした。 WPFも同様です。しかし、彼らには両方ともいぼがありました。プレーンなWPFには、あまりにも多くの機能が組み込まれており(さらに、XMLに基づいて構成されていた)、扱いに苦労しました。 (実際、WPFが「フレームワーク」アプローチではなく、より「ライブラリ」アプローチを採用していた場合、それはいくつかの本当にクールなものに変わり、テクノロジーユニバース全体が今はまったく異なる可能性があります)。 MVVMのideaは素晴らしかったですが、MVVMをWPFに適合させることは、1)C#が多くのボイラープレートなしでは実際にそれを表現できず、2)モーダルポップアップのようなWinFormsの遺物があったため、ややハックでしたまだイデオロギー的に普及していますが、MVVMで簡単に表すことができませんでした。したがって、それはすべて吸いました。

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

ReactはもちろんMVVMを廃止しました。 VS2015にはネイティブカウンターがなかったのでがっかりしました。今のところ、未加工のWPFを使用し続けています(これは問題ありませんが、古く感じます(実際にはと同じように古いのでwinformsと感じます)。大量の組み込み機能がない(感じるgood MVVM(angular 1)であっても、その欠点のために公開されているため、現時点では、何もないのにかなりのオーバーヘッドのように感じられます。

WPF MVVMは避けます。これは追加のレイヤーであり、誰もそれを気にしません。

7
Dax Fohl

言ったことはすべて終わりましたが、MVVMフレームワークで実行できることには制限があります。

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

3
Oded