¿Qué es un Model?:
Un modelo es una clase que usaremos para formar tablas en la base de datos, que posteriormente rellenaremos con instancias del modelo, en otras palabras, el modelo va a actuar como la columna vertebral de la aplicacion donde diseñaremos la logica de negocios y el comportamiento de los mismos.
¿Qué es un ViewModel?:
Un viewmodel es bastante similar a un modelo, es una clase que se compone de propiedades o campos, que usaremos unicamente para hacer renderizado de vistas, las instancias de los ViewModels jamas alcanzaran la base de datos de manera directa.
¿Por qué no usar un Model directamente en la vista?:
En ocasiones puede que te parezca valido usar el mismo modelo para hacer rendering de las vistas tal y como vimos en el curso, pero esto no es un standar ni mucho menos una buena practica, veamoslo con un ejemplo.
Supongamos que queremos hacer una vista de registro que contenga 3 campos de tipo string, Usuario, Contraseña y ConfirmarContraseña, si usaramos un modelo para esto, estariamos enviando la contraseña 2 veces a la base de datos por cada vez que creamos un usuario, es aqui cuando un ViewModel entra en juego, su instancia se utilizara para Comparar las Contraseñas y luego se usaran los datos convenientes para instanciar un el Model que finalmente entrara en la Base de Datos.
Nota: Como convencion, los ViewModel van en una carpeta llamada ViewModels dentro de la solucion.
Cualquier duda que te haya quedado dejamela en los comentarios, siempre estoy pendiente de ayudar.
Muchas gracias 😃