fluxo da aplicação controladores de alça, então onde é que a minha lógica de negócio ir?

StackOverflow https://stackoverflow.com/questions/371758

Pergunta

Vou começar esta questão ao admitir que eu sou muito novo para MVC. O padrão de design faz sentido para mim a um nível elevado, mas agora que eu estou explorando ASP.NET MVC, algumas das peças arquitetônicas estão desafiando minhas noções pré-concebidas. Aprender é uma coisa boa.

Eu tenho trabalhado com Oxite ultimamente como uma ferramenta de aprendizagem escrito por pessoas no empresa que criou ASP.NET MVC e, portanto, um aplicativo de referência ostensiva para ASP.NET MVC.

Mas hoje eu vi um blog sobre Oxite por Rob Conery que diz:

Uma das coisas que a equipe Oxite decidi fazer foi separar a Controladores e Visões para outra Projeto para o que só posso assumir é a separação da lógica de negócios da vista lógica. Isso pode levar a alguns confusão desde Controladores são destinadas ao fluxo de aplicação punho - não necessariamente lógica de negócios.

Isso tem me jogado para um laço. esta separação é um princípio de MVC e, portanto, um erro pelos desenvolvedores Oxite, ou é a opinião de Rob? Se a lógica de negócios pertence no modelo, por que a equipe Oxite colocá-lo no controlador? Como faço para executar uma ação que é lógica de negócios se não no controlador?

Para além disso, estou fazendo um erro usando Oxite como referência aprendizagem considerando comentários como Rob?

Foi útil?

Solução

A sua lógica de negócios vai na sua camada de negócios. Os controladores usam a camada de negócios para criar um modelo para seus pontos de vista para renderizar. Um bom exemplo é a aplicação do MVC montra que Rob Conery produziu. Oxite está recebendo lotes de má imprensa, uma vez que aparentemente não faz bom uso do framework MVC.

A razão que você quer uma camada de negócios que é separado de seus controladores é que você pode querer reutilizar a camada de negócios entre vários controladores, ou mesmo múltiplas aplicações. Um exemplo disso seria funções normais do usuário para exibir dados e função administrativa para a atualização e os dados de adição. Você pode fazer uso dos mesmos componentes BL em ambos os casos, mas têm diferentes controladores e vistas para prestar aos dados. objetos de modelo seria o mesmo.

Outras dicas

Você poderia implementar sua camada de negócios (ou seja, o modelo) com suas entidades, agregados, repositórios e serviços. Os serviços de chamar os repositórios, que puxam os dados do seu DAL na forma de entidades.

Isto pode ser definido em um único projeto, separado que não é nada mais do que uma DLL.

Em seguida, ter seu MVC App, que é realmente a sua camada de apresentação, e tê-lo utilizar seu projeto camada de negócios. os controladores irão trabalhar com os seus serviços, e bombear os dados esses serviços geram em ViewData que é então bombeado para seus pontos de vista.

Os controladores só deve lidar com preocupações de roteamento, como que vista para exibição, com base em entrada do usuário a partir de formas, querystrings, cookies, sessões, etc.

tem havido um alvoroço na comunidade "puristas MVC" sobre a validade de Oxite sendo usado um um bom MVC exemplo. A linha inferior é, a lógica do negócio não deve ser contido em controladores, que eu tenho certeza que você vai ver como Oxite fica reformulado ao longo dos próximos meses.

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