I (ahora más que nunca) Ver los desarrolladores a escribir grandes cantidades de capas tales como:Manteniendo todo acoplado y extensible libremente: ¿Demasiadas capas, ROI demasiado pequeño?
implementation PresentationLayer ->
interface IMyDTO ->
implementation MyDTO ->
interface IMyService ->
implementation MyService ->
interface IMyDomainRepository ->
implementation MyDomainRepository ->
interface IMyDomainObject ->
implementation MyDomainObject ->
interface IMyIndependentStorageLayer ->
implementation MyMSSQLStorageLayer
Mirando a través de los blogs de C#, esta parece ser la mejor desde el pan en rodajas. Básicamente, todo está débilmente acoplado. No use un objeto de dominio directamente. Ejecuta todo a través de una capa de servicio. Acceda a los datos a través de un repositorio. Todas las capas son perfectamente independientes.
No me malinterpreten, me gusta la idea, pero ¿no es la compensación a largo plazo enorme, especialmente en un proyecto más grande? ¿El ROI en mantenimiento es lo suficientemente grande como para justificar esto?
Las explicaciones que leí son un poco incómodas, como "de esta forma puedo adjuntar una base de datos diferente si es necesario". De Verdad? No creo que sea un problema común que alguien repentinamente demande cambiar de MSSQL a Oracle y ahora te sientes ahí y desearías tener un millón de capas que no se conocen entre sí.
¿Hay una tendencia a ir por la borda con acoplamiento flojo, o simplemente estoy leyendo los blogs equivocados? ¿Cómo te sientes al respecto y has tenido casos en los que te alegras más tarde que hiciste el trabajo extra al principio?
La mayoría de las veces, ¿no sabría lo que luego se puede volver a usar? Para eso, ¿debería saber en qué trabajará un año después? – Alex
Ese es un buen punto. Cuando decida usar una cierta estructura de capas, sin embargo, estará poniendo código nuevo en lugares donde se puede reutilizar desde el principio. Un Servicio puede ser utilizado por múltiples Controladores, un método de Repositorio puede ser utilizado por múltiples Servicios, etc. Así que incluso si puede ser un trabajo duro y especulativo cuando comiences, algunos beneficios serán inmediatos. Para mí, hacer que el sistema sea comprobable suele ser un factor importante en estas decisiones. Creo que si puede eliminar la dependencia de una base de datos en vivo y la parte de representación de la vista, el resto generalmente será bastante correcto. –