Como su nombre lo indica es un modelo en el que podemos organizar o estandarizar los datos que manejamos en nuestra aplicación y cómo se relacionan entre ellos. Un DataModel puede utilizarse en mas de una vista y es normal que esto ocurra ya que maneja los datos y métodos de nuestra aplicación para luego ser renderizados en las vistas.
Ente los roles de los DataModel resalta el hecho de que contienen “reglas del negocio”, cómo se hacen las cosas.
Los ViewModel, por su parte, son específicos de una vista y buscan encapsular los datos, métodos o configuraciones necesarias para que esa vista en particular se comporte de la forma que esperamos.
Tiene una relación cercana mas con cómo presentamos los datos al usuario que cómo funcionan (como en el caso del DataModel)