MVC・MVVMにおけるViewModelの立ち位置の違い

直近、過去に引き継いだ ASP.NET MVC をいちから学習しています。

今回は、長らく疑問だった ViewModel の立ち位置の違いがおおよそ見えてきたので、それについて述べたいと思います。

イントロダクション

私は、 MVVM をある程度まで覚えてから、 MVC*1 の現場に入ったのですが、 ViewModel の立ち位置が違っており、長らく疑問に思っていました。

MVC と MVVM が何を指すかについては、以下の表を参照ください。尚、詳細につきましては、本筋から逸れてしまうので割愛します。

略称 正式名称
MVC Model-View-Controller
MVVM Model-View-ViewModel

疑問点

疑問点は次の違いについてです。

  • MVC では、 VIewModel は Model に属している
  • MVVM では、( Model に属するのではなく) ViewModel に属している

結論

MVC では、 ViewModel は Model に属すると結論付けます。

f:id:ma310kano:20190505115311p:plain
MVC

f:id:ma310kano:20190505114200p:plain
MVVM

ただし、ViewModel の役割は MVC・MVVM 共に変わりません。 View は ViewModel を介して(他の) Model と連携します。

*1:厳密には ASP.NET MVC を指します。