¿Por qué en algunos marcos la capa lógica se llama "Modelo" mientras que en algunos se llama "Servicio". ¿Son diferentes entre sí o simplemente diferentes al nombrar convenciones?
ACTUALIZACIÓN 1
La razón por la que pregunto es porque en Zend Framework, un marco MVC clásico, todos usan el concepto de Modelo. Ahora estoy aprendiendo AngularJS y parece que la palabra Modelo desapareció y fue reemplazada por la palabra servicio.
Lo que noté es que un servicio es más como un singleton que se puede reutilizar una y otra vez (ejemplo: un cliente REST), mientras que un modelo está más relacionado con las manipulaciones de datos que provienen del controlador en el patrón MVC.
Respuestas:
Modelo: campos que pertenecen al objeto, métodos que ayudan a obtener / establecer datos del objeto (un descriptor de acceso de nombre completo que devuelve nombre + apellido)
Servicio: Métodos para realizar operaciones con uno o más modelos, ver 'unidad de trabajo', transacciones, etc.
Employee :: create solo debe tomar un conjunto de datos, realizar la validación del modelo si es necesario y devolver un objeto de empleado.
EmployeeService :: hireEmployee puede crear al empleado, enviarle un correo electrónico de bienvenida, crear un buzón, hacer un sandwich, etc., puede devolver el conjunto de datos o un código de resultado, etc.
Esto también puede afectar la validación:
Validación del modelo: el empleado debe tener una identificación, nombre y apellido y fecha de nacimiento
Validación del servicio: los empleados para el puesto de barman deben ser mayores de 21 años y contar con la aprobación de un gerente.
fuente
Según mi experiencia, la capa Modelo dentro del patrón de diseño MVC se refiere a cada componente de software involucrado con la manipulación de datos (POJO, DAO, todo el camino hasta SQL, JDBC, etc.).
Mientras que la capa de servicio es en realidad una adición a MVC:
Sabemos que los componentes de la capa Modelo se invocan dentro de la capa Controlador . Una vez que se construye este último, te das cuenta de que no parece conciso (desordenado con código sucio); el controlador puede no proporcionar detalles adicionales (por ejemplo, formatear parámetros de solicitud antes de llamar a un método DAO que los va a consumir ...). Por lo tanto, puede incluir esta capa adicional, es decir, la capa de Servicio .
Eventualmente, puede incluir su código sucio dentro de métodos estáticos con un nombre significativo, parámetros, etc., lo que daría como resultado una capa de controlador sintética.
Echa un vistazo a este enlace:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
fuente
Estructuralmente, estas clases base son las mismas, sin embargo, se utilizan para clasificar diferentes preocupaciones de los niveles de Servicio y Modelo de la implementación de MVCS
Entonces, si bien las clases base son similares, las clases concretas creadas al extender estas clases base tienen dos propósitos completamente diferentes.
fuente