Esperemos que sea una pregunta simple de relatividad. Estoy empezando a trabajar en un nuevo proyecto interno para crear capacidad de rastreo de dispositivos reparados dentro de los edificios.
La base de datos se almacena de forma remota en un servidor web, y se accederá a través de la API web (salida JSON) y se protegerá con OAuth. La interfaz gráfica de usuario de front-end se realiza en WPF y el código comercial en C #.
A partir de esto, veo las diferentes capas Presentación / Aplicación / Almacén de datos. Habrá un código para administrar todas las llamadas autenticadas a la API, una clase para representar entidades (objetos comerciales), clases para construir las entidades (objetos comerciales), partes para la GUI de WPF, partes de los modelos de vista de WPF, etc.
¿Es mejor crear esto en un solo proyecto, o dividirlos en proyectos individuales?
En mi corazón digo que debería ser múltiples proyectos. Lo he hecho en ambos sentidos anteriormente, y descubrí que las pruebas son más fáciles con una sola solución de proyecto, sin embargo, con múltiples proyectos, pueden surgir dependencias recursivas. Especialmente cuando las clases tienen interfaces para facilitar la prueba, he descubierto que las cosas pueden volverse incómodas.