¿Cuál es la diferencia entre un depósito y un servicio? No me parecen comprenderlo.

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

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

Podemos tomar este blog como ejemplo. Si usted mira las interfaces en la parte inferior (imágenes), con quien tiene dos repositorios y dos servicios. ¿Cómo hace uno para saber qué poner donde?

Como ya he dicho, repositorios parece ser más para CRUD-como las operaciones y Servicios más orientados a los negocios.

Gracias

  • Puede usted calarify? En qué contexto? Como la mayoría de las palabras, el contexto de estas palabras se utilizan en ayuda a definir el significado.
  • Nota: I n de no hablar acerca de los servicios web o algo aquí. Estoy hablando de acceso a datos a través de una capa de datos.
InformationsquelleAutor alexn | 2009-09-17

3 Comentarios

  1. 70

    Un Repositorio es esencialmente una fachada para persistencia que utiliza la Colección de estilo de la semántica (Agregar, Actualizar, Eliminar) para el suministro de acceso a los datos/objetos. Es una forma de disociación entre el modo de almacenar datos/objetos del resto de la aplicación.

    Un servicio de suministros de coordinación o de otros «servicios» que son requeridos para operar la aplicación. Son muy diferentes en que los Servicios en general, no saben cómo acceder a los datos de la persistencia, y los repositorios suelen sólo acceso a los datos/objetos para cualquiera de los servicios que usted pueda tener.

    • Yo diría que un Repositorio es un tipo de servicio que se utiliza para el acceso a datos.
    • Que es una buena definición en el sentido de que casi todo lo que escribe es un «servicio» en algún nivel, pero se pierde la intención fundamental de que un repositorio se supone que es un colección de los objetos.
    • Si usted grok unidad de pruebas podría ser más clara para pensar en los repositorios como el mínimo de abstracción para minimizar la burla necesarias para evitar base de datos.
    • repository = collection de backbone.js o repository = service de angular?
  2. 119

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

    En una situación real de comparación, si su dinero está almacenado en una bóveda de un banco, la bóveda es el repositorio. El cajero que los depósitos, se retira, etc, es el servicio.

    • Gracias por esta respuesta! Simple y conciso.
    • de acuerdo con el comentario de arriba! Amor el mundo real explicación así!
    • mm. así que si el banco decide deshacerse de la bóveda, y poner el dinero debajo de matrasses, el narrador va a interactuar con usted como antes, sin que usted tenga que saber sobre el cambio en el repositorio de la capa.
    • Sospecho que el cliente quiere saber acerca de su implementación, @Dennis
    • Pero el repositorio también contienen métodos que manipulan los datos, por ejemplo los métodos de como Agregar y Actualizar.
    • Sí. Esta es una de las principales ventajas de utilizar el modelo de repositorio. Usted debe ser capaz de cambiar la implementación real del repositorio de interfaces sin cambiar nada en el servicio. Esto tiene enormes beneficios para la prueba de unidad y hacer que su código débilmente acoplados.

  3. 12

    Yo diría que como un primer intento, en el sentido general (hasta dar más contexto (si tiene uno):

    • un repositorio es donde debe colocar algunos objetos globales, para ser utilizados más adelante.
    • un servicio es una lógica de negocio de código, se hizo explícita (e idealmente, separada de la capa de Presentación y capa de base de datos ?)
    • Sería bueno hacer lo siguiente: Mi repositorio tiene todos mis complejos llamadas de base de datos, luego en mi servicio me inyecte el repositorio como una dependencia. Ahora he fácilmente comprobable código y separado de mis preocupaciones, ya que mi servicio no saber cómo DB llamadas son de hecho, sino que simplemente llama a las funciones del repositorio que hace. Por lo tanto, la lógica de negocio y acceso a datos están separados. Sería un enfoque viable?

Dejar respuesta

Please enter your comment!
Please enter your name here