8

Estoy diseñando mi aplicación, y estoy usando Doctrine 2 y Zend Framework.Usando Doctrine 2 y Repositorios, ¿cuál sería el propósito de una capa de servicio?

Actualmente, escribí todas mis entidades, comencé a escribir Repositorios, y pensé en Servicios, y me pregunto si mi capa de Servicios no repetiría los repositorios.

¿Vale la pena escribir una capa de servicio mientras uso los repositorios de Doctrine 2?

Sin embargo, he leído aquí y allá que una capa de servicio se puede utilizar para hacer el almacenamiento en caché, por ejemplo.

¿Tiene algún ejemplo de implementación?

+0

¿Todavía necesita más información sobre la Capa de Servicio? – Cobby

Respuesta

10

La diferencia entre repositorios y servicios es que dejo que mis servicios acepten matrices de datos para actualizar, crear etc. IIRC, un verdadero repositorio solo debería tratar con objetos de dominio. Otra cosa que puede hacer, por ejemplo, es usar su capa de servicio para manejar la generación de miniaturas de productos, imágenes de perfil o almacenamiento en caché, etc. El punto es que los servicios no están estrictamente relacionados con el tratamiento de entidades de Doctrine.

Todavía uso repositorios personalizados como contenedor para todas mis consultas personalizadas y otras cosas; que se consumen en mis clases de servicio y ocasionalmente directamente en mis controladores. Aunque uso mis servicios para la serialización (para respuestas JSON).

Todavía hay una pequeña área gris con lo que debería estar donde y solo tienes que sentirlo. Al final del día: si deja fuera la capa de servicio y pone esa lógica en sus repositorios, no sería mucho más trabajo para el mantenimiento y la escalabilidad, solo menos definición en la responsabilidad de la clase.

+5

Esto es más o menos. Por lo general, coloca cualquier consulta DQL personalizada como método en sus repositorios. Luego, ponga cualquier otra lógica en los servicios. A menudo, lo que pondría en los servicios está escrito en las acciones del controlador en ZF, por lo que realmente depende de si desea/necesita la separación o no. Es útil esp. Si se encuentra duplicando la lógica en sus controladores, entonces a menudo es una señal de que necesita un servicio para ello. –

+1

Ok, gracias por su respuesta, ¿qué pasa con el manejo de errores, dónde debemos manejar la excepción dentro de dicha arquitectura? – JohnT

+0

'El punto es que en realidad están estrictamente relacionados con el uso de Doctrine' ¿Qué es estricto? ¿Repositorios? –

Cuestiones relacionadas