Espero que seja uma pergunta simples de relatividade. Estou começando a trabalhar em um novo projeto interno para criar a rastreabilidade de dispositivos reparados dentro dos edifícios.
O banco de dados é armazenado remotamente em um servidor da web e será acessado via API da web (saída JSON) e protegido com OAuth. A GUI do front end está sendo feita no WPF e o código comercial em C #.
A partir disso, vejo as diferentes camadas Apresentação / Aplicativo / Armazenamento de dados. Haverá código para gerenciar todas as chamadas autenticadas para a API, classe para representar entidades (objetos de negócios), classes para construir as entidades (objetos de negócios), partes da GUI do WPF, partes dos modelos de exibição do WPF e assim por diante.
É melhor criar isso em um único projeto ou dividi-los em projetos individuais?
No meu coração, digo que deve haver vários projetos. Eu fiz isso nos dois sentidos anteriormente e achei o teste mais fácil com uma única solução de projeto, no entanto, com vários projetos, podem surgir dependências recursivas. Especialmente quando as classes têm interfaces para facilitar o teste, descobri que as coisas podem se tornar estranhas.