2009-09-17 44 views
45

¿Cuál es la diferencia entre un repositorio y un servicio? Parece que no lo entiendo.¿Diferencia entre repositorio y servicio?

Estoy hablando de acceso a datos a través de una capa de acceso a datos, normalmente con linq a sql.

Muy a menudo veo repositorios con métodos simples CRUD y servicios con más métodos específicos de la empresa.

Podemos tomar la publicación del blog this como un ejemplo. Si observa las interfaces en la parte inferior (imágenes), tiene dos repositorios y dos servicios. ¿Cómo sabe uno qué poner dónde?

Como dije, los repositorios parecen ser más para operaciones de tipo CRUD y servicios más orientados al negocio.

Gracias

+0

¿Puede usted calumniar? ¿En que contexto? Al igual que la mayoría de las palabras, el contexto en el que se utilizan estas palabras ayuda a definir el significado. – David

+2

Nota: No estoy hablando de servicios web o algo aquí. Estoy hablando de acceso a datos a través de una capa de datos. – alexn

Respuesta

45

Un repositorio es esencialmente una fachada para persistencia que utiliza la semántica de estilo Colección (Agregar, Actualizar, Eliminar) para proporcionar acceso a datos/objetos. Es una forma de desacoplar la forma en que almacena los datos/objetos del resto de la aplicación.

Un servicio de coordinación de suministros u otros "servicios" que se requieren para operar su aplicación. Son muy diferentes en que los Servicios no suelen saber cómo acceder a los datos desde la persistencia, y los repositorios normalmente solo acceder a los datos/objetos para cualquier servicio que pueda tener.

+5

Diría que un repositorio es un tipo de servicio que se utiliza para el acceso a datos. –

+1

Esa es una definición precisa en el sentido de que casi todo lo que escribimos es un "servicio" en algún nivel, pero pierde la intención básica de que un repositorio se supone que es una * colección * de objetos. – jlembke

+2

Si pruebas grok unit es más claro pensar en repositorios como la abstracción mínima para minimizar la burla necesaria para evitar la base de datos. –

9

yo diría que como un primer intento, en el sentido general (hasta darle más contexto si lo tiene):

  • un repositorioes donde se colocan algunos objetos globales , para ser utilizado más tarde.
  • un servicio es un código de lógica de negocio, hace explícita (capa y lo ideal sería separado de la capa de presentación, y la base de datos?)
70

El repositorio es donde se almacenan los datos. El servicio es lo que manipula los datos.

En una comparación de la situación del mundo real, si su dinero se almacena en una bóveda en un banco, la bóveda es el repositorio. El cajero que deposita, retira, etc. es el servicio.

+2

¡Gracias por esta respuesta! Simple y conciso. – alexn

+0

de acuerdo con el comentario anterior! Me encanta la explicación del mundo real también! – Kleigh

Cuestiones relacionadas