Pergunta

Estou muito cético quanto ao design do meu aplicativo .....

Aqui está o diagrama para meu aplicativo

Diagrama do meu aplicativo

isso está certo ??ou eu preciso mudar alguma coisa ...

Vou elaborar o diagrama ....:

Biblioteca comum: contém classes ErrorCodes, Utility Classes etc
Logger: estrutura de registro
Tratamento de exceções: estrutura para tratamento de exceções

Visualização: contém: todos os diferentes XAML para visualizações como UserControls, Windows, Popups

ViewModel: contém ViewModels para as visualizações diferentes.

Modelo: contém as camadas diferentes, como ... Camada de negócios, camada de acesso a dados etc.

Camada de entidade: contém os objetos de entidade como Funcionário, Empresa, etc ...

Caixa de arquivo: especifica a leitura / gravação de um arquivo / banco de dados ....

Foi útil?

Solução

É difícil dizer o que você está tentando fazer com sua pergunta, mas na minha opinião as camadas MVVM devem ser parecidas com esta:

  • Modelo : dados brutos e validação de dados brutos. Talvez um INotifyPropertyChanged também, mas nada mais

  • ViewModel : Lógica de negócios, acesso a dados, validação avançada com base em regras de negócios, etc

  • Visualizações : camada bonita da IU que permite aos usuários interagir com os ViewModels. Nada mais.

Por exemplo, um modelo pode ter uma propriedade File, mas não deve ser responsável por mostrar a caixa de diálogo do arquivo, salvá-lo no banco de dados ou verificar se o arquivo possui uma extensão .pdf. Esse tipo de coisa é trabalho do ViewModel.

Vejo a atualização que você fez em sua pergunta. É um bom começo, mas aqui estão os problemas que tenho com ele:

  • Seus modelos devem ser objetos de dados brutos. Eles não devem conter nada mais avançado do que algo como validar o comprimento de uma propriedade.

  • Sinceramente, não recomendo separar Views, Models e ViewModels em 3 camadas separadas. Eu fiz isso uma vez e acabou sendo um pesadelo de manutenção. Agora coloquei todos os objetos relacionados juntos. Por exemplo, eu colocaria FileModel, FileViewModel e FileView juntos, e SearchModel, SearchViewModel e SearchView juntos

  • Eu criaria uma camada de acesso a dados que seria responsável por fazer todos os dados de leitura / gravação de / para o banco de dados (suponho que esta poderia ser sua "camada de entidade").

  • Para projetos pequenos, tendo a usar meus objetos de entidade como meus modelos, então os modelos se tornam parte da minha camada DAL, embora eu saiba que isso não é recomendado.

  • Não se esqueça, com o MVVM seus ViewModels são seu aplicativo, não suas views. O View deve refletir o que está no ViewModel, e não vice-versa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top