Pergunta

Eu tenho um aplicativo ASP.NET com uma arquitetura de três camadas:

  • Camada de apresentação: ASP.NET

  • Bussiness camada: C biblioteca #

  • .
  • Data Access da camada: biblioteca C # com
    objetos ADO.Net Entity Framework.

Alguns métodos na camada Bussiness voltaria objetos de entidade ADO.NET mas, camada de acesso a dados não é visível na apresentação camada eu não posso fazer isso.

A minha pergunta é: Em uma exibição de design, é correto para expor objetos de entidade na camada de apresentação? Acho que só tem que ligar biblioteca camada de dados com aplicativo ASP.NET.

Obrigado!

Foi útil?

Solução

Eu sugiro que você olhar para os conceitos de Visualização de objetos ... ou de Transferência de Dados Objects (DTO). Você pode considerar o uso de uma ferramenta como AutoMapper ou similar que irá criar um objeto de domínio o ponto de vista específico de suas entidades. Em geral, você pode ter telas que precisam de uma entidade presente para realizar seu trabalho. Mas, mais frequentemente do que você não vai precisar passar várias entidades diferentes. Neste caso, você é melhor fora de criar um DTO que contém todas estas entidades. Ao fazer isso você está adicionando uma camada de separação entre a camada de apresentação e sua camada de negócio. Muitas vezes suas entidades têm mais poder do que você pode querer expor a sua camada de apresentação. E vice versa. Freqüentemente você pode precisar de receber algumas mensagens de interface do usuário para a camada de apresentação com base em alguma validação sinalizado em sua camada de negócios. Em vez de fazer o seu ui mais complexo do que ele precisa ser (passando em suas entidades completas) você só pode passar em que as necessidades de UI na forma do DTO. Além disso, nunca há uma necessidade para o seu negócio objetos para se preocupar com nada específico para a camada de apresentação. Eu sugiro que você não vincular diretamente a qualquer coisa, tanto para trás como a camada de acesso a dados. Tecnicamente a sua camada de apresentação deve saber tão pouco quanto possível sobre a sua camada de negócios. No caso de MVP ou MVC isso é muito fácil de alcançar, desconectando o front-end e back-end por meio desta separação adicional!

Outras dicas

É absolutamente desejável ter sua entidade objetos disponíveis para uso e consumo na sua camada de apresentação. Isso é o que todo o trabalho é para.

  • Encadernação coleção de objetos a uma grade / listview / suspensa
  • Espirro um único objeto (cliente ou seja) para um formulário para leitura / update / delete

Isto torna a sua vida mais fácil, de longe. Caso contrário, você teria que passar cadeia depois int após dupla após corda entre sua apresentação e de negócios camadas.

Estes podem ser objetos de entidade ou até mesmo seus próprios objetos POCO que foram hidratados da Entidade objetos.

Eu mesmo ir tão longe para dizer que seus Entites deve estar em sua própria montagem separar do DAL.

Eu não acho, não é, a melhor maneira de fazer isso é para classes de dados separadas de comportamento e de referência apenas classes de dados na apresentação abordagem level.The bom eu acho que usar WCF ver este link

Supervisão Controlador e Passive View

Se você passar a Entidade, que são essencialmente Supervisão controlador. Caso contrário, você está Passive View.

Supervisão controlador é menos trabalho, mas menos testáveis. Supervisão do controlador também diz databinding é OK. vista passiva é testável, mas um trabalho muito mais. Sem ligação de dados. Muitas propriedades.

Normalmente eu ficar com Supervisão Controller. Você normalmente não precisa que o nível de capacidade de teste e não vale a pena extra.

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