Estou tentando configurar a estrutura do meu aplicativo no VS e quero "tentar" e fazer a prova futura para um nível razoável. Este aplicativo será uma reescrita do WPF de um aplicativo Winform antigo que não seguiu nenhuma convenção. Sem Camadas, Camadas, Acrônimos, etc ...
É um aplicativo corporativo bastante amplo. Planejei usar o Linq To SQL como meus DBs e provavelmente será sempre o MS SQL. Também tenho um conjunto de habilidades existentes.
Quero seguir o MVVM e o DDD da melhor maneira possível, mas fico confuso com a estrutura do meu aplicativo ao combiná-los. Deixe-me tentar ilustrar com alguns exemplos.
Quando sigo o MVVM, minha estrutura de pastas pode ficar assim:
Views
Models
ViewModels
Helpers
mas como isso se encaixa em uma abordagem simplificada em camadas do DDD, na qual minha estrutura do projeto pode se parecer com isso:
MyApp.UI
MyApp.Domain
MyApp.Data
Coloco Models
na camada Domínio ou tenho 3 versões do Say Person
? Isso leva a outra questão de onde eu colocaria meu Repositório e mapeamentos do Objeto DB no Objeto Domínio? Eu assumiria Data ...
Views
Eu recebo iria na interface do usuário, mas seria ViewModels
também?
Por fim, onde eu incorporaria minha lógica de negócios?
Encontrei o seguinte no CodePlex, DDD Example , e isso tem sido útil, mas parece ser para um aplicativo da Web, embora isso não importe e seja minha ignorância brilhando.
Não me interpretem mal, eu sei que posso ter quantas pastas e chamá-las como quiser. Estou tentando descobrir onde colocar as coisas para que elas possam ser escaláveis, e não como esses lugares são necessariamente chamados.
O coração da minha pergunta pode ser mostrado assim.
Eu tenho tblPerson
objeto gerado por *.dbml
. Isso é óbvio e pertenceria à minha camada "Dados".
Agora eu teria chamado Model, DTO, Domain Model ou o que for chamado em uma camada separada (projeto?) Person
. Eu precisaria de uma Mapper
para Person
a tblPerson
que eu não tenho certeza de onde colocar.
Então, terei um ViewModel para, digamos, EditPerson
que teria suas próprias propriedades, Person
mas possivelmente mais.
Finalmente, eu teria uma View que estava vinculada a esse ViewModel ....
Para ficar claro que o parágrafo está repleto de minhas suposições e suposições e espero que alguém ajude a limpar o ar para mim ou a oferecer idéias para que, daqui a seis meses a um ano, eu não esteja me chutando mais do que preciso.