Estoy de acuerdo con Robert Munteanu.
Básicamente, retoma la lógica de su negocio que no es inherente a su modelo en un nivel medio. El nivel medio es el nivel de negocio/objetos comerciales/capa de lógica de negocios/etc., pero solo se lo conoce como un nivel de servicio. No tiene que ser un servicio web, es un uso amplio del término servicio en el sentido de que agrega la funcionalidad de un área de aplicación específica.
Básicamente, tendría una clase CustomerService que contiene la referencia del repositorio. Su capa de presentación haría referencia a la clase de capa de servicio.
Hay una distinción adicional que se puede hacer como adivinar por su nombre que está utilizando .net, y probablemente usando LINQ to SQL como su repositorio como se indica en NerdDinner.
El depósito normalmente devuelve IQueryable a la capa de servicio, lo que permite que la capa de capa de servicio reúna múltiples consultas para crear diferentes conjuntos de resultados. El Servicio luego evalúa la expresión usando ToList u otro método similar y lo devuelve a la capa de presentación.
El MVC Storefront de Rob Conery es lo que me llevó al patrón de repositorio, pero desafortunadamente ha refabricado la capa de servicios sin explicar realmente esa decisión en los videos. Entonces me preocupaba que tal vez esa no era la mejor manera. –
Me enfrenté a un problema similar, ¿es esta la mejor arquitectura? Dejé de preocuparme por las interfaces con los contratos en la parte superior de la capa con las fábricas y solo me enfoqué en hacerlo funcionar. Encuentro con demasiada frecuencia que las personas están superando las soluciones de arquitectura. ¿El propósito es construir este momento de una base de código, un tributo a su propia fuerza y perfección de capas y niveles? Creo que siempre que guardes tus datos en tu repositorio, tu "lógica de negocios" en los servicios de tu empresa y tus elementos de interfaz de usuario en tus Vistas, estás listo para empezar. Logre lo que se supone que debe hacer el software, refactorícese a medida que avanza – blu
y logre el objetivo del software. – blu