Trabajamos en un proyecto de tamaño medio (3 desarrolladores durante más de 6 meses) y necesitamos tomar la siguiente decisión: nos gustaría tener interfaces separadas de la implementación concreta. El primero es almacenar la interfaz en un archivo separado.¿Interfaces separadas de la implementación de clase en proyectos separados?
Nos gustaría ir más allá y separar los datos aún más: nos gustaría tener un proyecto (CSPROJ) con interfaz en un archivo .CS más otro archivo .CS con clases de ayuda (como algunas clases públicas utilizadas dentro de esta interfaz, algunas enumeraciones etc.). Entonces, nos gustaría tener otro proyecto (CSPROJ) con un patrón de fábrica, implementación de interfaz concreta y otras clases de "trabajadores".
Cualquier clase que desee crear un objeto que implemente esta interfaz debe incluir el primer proyecto que contiene las interfaces y las clases públicas, no la implementación en sí.
Esta solución tiene una gran desventaja: multiplica el número de ensambles por 2, ya que para cada proyecto "normal" uno tiene un proyecto con interacción y otro con implementación.
¿Qué recomendarías? ¿Cree que es una buena idea colocar todas las interfaces en un proyecto separado en lugar de una interfaz en su propio proyecto?
Todas las interfaces son públicas y no considero Remoting, WCF y otras interfaces externas. –