Pergunta

A pior coisa ao trabalhar em um projeto de um homem é a falta de entrada que você geralmente recebe de seus colegas de trabalho. E devido à falta disso, você tende a cometer erros óbvios.

Depois de seguir esse caminho por algum tempo, eu precisaria de ajuda da comunidade.

Comecei um pequeno projeto caseiro que deveria se transformar em um portal de algum tipo. E a principal coisa que está me incomodando é a camada de persistência que inventei. Deve ser completamente separado da camada de apresentação para iniciantes e um mapero também está em algum lugar. Isso ocorre porque eu tenho várias lojas de dados que precisam ser usadas.

Portanto, a idéia básica era que os "repositórios" individuais operem cada um em seu banco de dados individual e que a camada de negócios agregue os objetos de negócios que são então transformados na camada de apresentação em objetos de exibição.

O principal problema que enfrento é o seguinte:

Várias classes para o mesmo conceito - Existe uma representação dal de um do utilizador e BL Representação de do utilizador e uma representação de visão de um do utilizador. Eu posso lidar com a transformação com uma ferramenta, mas é realmente o caminho certo. Quero dizer, todos estão bem separados, mas a sobrecarga é algo.

O que você acha? Estou indo muito profundamente na separação da preocupação com a toca do coelho ou isso ainda é normal?

Foi útil?

Solução

Isso é mais do que normal.
Normalmente, ninguém faz isso e chora sobre problemas de carregamento preguiçoso ao renderizar HTML ou outros enfeites.

É mais fácil escrever camada DTO do que pensar em DA, BLL e UI simultaneamente. Alguns vão ainda mais longe e aplicam a separação de comando e consulta em escala arquitetônica claramente, desenhando linha entre entrada/saída (que resolve problemas como a necessidade de objeto de negócios artificial que realmente é usado para fins de relatórios).


Por outro lado - depende. Se o seu aplicativo for simples, você pode não precisar de tanta abstração (por exemplo, página inicial do portfólio da empresa).

Outras dicas

Não vejo um problema com isso, francamente. Ter classes separadas para os dados em camadas separadas significa que você pode alterar uma sem precisar mudar as outras. O custo extra das outras representações geralmente é bastante mínimo - a velocidade de digitação geralmente não é o fator na produtividade.

OTOH, ser capaz de mudar algo sobre armazenamento de dados sem ser obrigado a mudar toda a pilha tonelada de tempo e esforço, como frequentemente o uso da mesma construção para vários propósitos resulta em efeitos colaterais imprevistos ao fazer uma alteração.

Iow, enquanto teria que propagar uma mudança através de várias camadas posso Suck, muitas vezes pode ser auxiliado por ferramentas adequadas, etc. Por outro lado, quando uma mudança trivial na sua camada de dados tem um efeito colateral imprevisto em sua interface do usuário, que sempre Chupe e retarda qualquer alteração como qualquer coisa que você faça pode quebrar qualquer coisa em todo o sistema.

Esse é o perigo de ter vários respostas. Isso levanta a questão imertada de 'você precisa de todos eles ou não'? Faz sentido consolidar algum deles, e você pode?

Aconselho você a ler a arquitetura de dados - sou um novato completo, mas tive ótimas informações de uma muito experiente. Uma visão é que os arquitetos de dados estão mais preocupados com a forma como os dados são definidos do que como o banco de dados físico é realmente reunido: meu conselho seria começar capturando e documentando (modelagem) o modelo de dados lógicos e os físicos. Ter um entendimento muito claro dos dados ajudará imensamente.

O específico disso (ou seja, os bits que os da's estão preocupados) é a definição dos dados - o que é esse pouco de dados (não confie na coluna e nos nomes de tabela da coluna e da tabela)? Como é usado, o que significa, onde é criado? Também é importante que não estamos falando sobre onde é criado fisicamente no seu sistema - mas onde é criado nos processos de negócios. Sim, você precisa se preocupar com o sistema - mas isso é mais tarde; O processo de ônibus deve dirigir o sistema. THSI é tudo material de modelo de dados lógico.

Depois de ter as definições, você pode começar a reuni -las - como se relacionam os dados dos diferentes repositórios? (possivelmente mais no modelo físico aqui).

Quando tudo estiver claro, as respostas de como você se encaixam no aplicativo deve começar a se tornar óbvio, e que ele documentou ajudará. THSI já é uma dessas instâncias em que ter uma boa documentação é realmente essencial.

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