2010-06-14 9 views
7

Estoy tratando de entender las responsabilidades de la capa de servicio y la capa de repositorio al guardar un objeto en mi tienda de persistencia.Responsabilidades de las capas de Servicio y Repositorio

Mi actual con pie es la siguiente:

En mi controlador He creado un objeto "Nota" de los datos presentados por el usuario (de forma). El usuario luego llama a "Guardar" en el "NoteService" (que está allí mediante inyección de dependencia).

Dentro del método "Guardar" en el "NoteService" llevo a cabo la validación de mi lógica de negocios y luego paso el objeto "Nota" al método "Guardar" del "NoteRepository".

El método "Guardar" del "NoteRepository" luego verifica si hay una clave principal existente en este objeto y, de ser así, obtiene ese objeto de la base de datos y actualiza sus propiedades utilizando el objeto "Nota" pasado a través y luego se guarda de nuevo en el db. Si no hay una clave principal, el objeto simplemente se guarda en la base de datos y luego se devuelve al servicio con su clave principal recién creada.

+0

Creo que está bien lo que dices, ¿cuál es la pregunta? – uvita

+0

Mi pregunta era básicamente esta es la forma de hacer las cosas, es decir, ¿es este el patrón/flujo de trabajo correcto? – Gazeth

Respuesta

4

Tu separación de preocupaciones me parece muy buena. Seguimos el mismo patrón, pero tendemos a agregar una capa más sobre la capa de repositorio. Lo llamamos capa de dominio y llevamos a cabo toda nuestra lógica comercial allí. Nuestra capa de servicio es solo un paso hacia nuestro dominio en caso de que necesitemos publicar cualquiera de nuestros servicios a un ESB en el futuro.

El mayor beneficio de lo que está haciendo no es abarrotar todo el negocio y la lógica de DB en el controlador que mucha gente tiende a hacer. Siempre quiere que sus controladores sean lo más ligeros posible si realmente quiere seguir MVC.

Cuestiones relacionadas