Pergunta

Comecei a pesquisar o MVC e ainda não tenho certeza de que o entendi. Pelo que recebo, parece que uma implementação de uma solução de 3 camadas, ou seja, o modelo corresponde a Dal, controlador à camada lógica de negócios e visualização como camada de apresentação.

Estou muito fora da base aqui?

Foi útil?

Solução

Eu adverti contra o tratamento do modelo como simplesmente uma camada de acesso a dados. Isso é simplificante e resulta em você colocar muito código na camada do controlador. É melhor se você colocar mais desse código no modelo e tornar a persistência do banco de dados apenas uma parte do código interno do modelo. Eu gosto de pensar em MVC assim:

  • Controlador: lidar com a entrada, determinar qual modelo e qual visão instanciada
  • Visualização: Apresentação dos dados do aplicativo
  • Modelo: toda a outra lógica para o aplicativo, incluindo, entre outros

Este é basicamente o Controlador de página padronizar.

Outra maneira de pensar sobre isso é o seguinte: suponha que você tenha que portar seu aplicativo da web para outra plataforma, como um aplicativo de linha de comando ou um aplicativo GUI de desktop. Que partes da lógica do aplicativo você deve reutilizar? O controlador e a visualização mudariam à medida que você transportaria seu aplicativo para outra plataforma, porque a implementação de entrada e saída precisaria alterar. O código que não precisa alterar deve ser implementado em seu modelo.

Se você fez a separação de preocupações corretamente, o modelo, a visualização e o controlador seriam minimamente acoplados e você poderá alterar a implementação de um sem afetar muito os outros. Se você alterar o modelo e se encontrar reescrevendo muito código no controlador ou na visualização, provavelmente não separou essas camadas adequadamente. E vice versa.

Leia sobre Martin Fowler Modelo de domínio anêmico Antipattern ou Design direcionado ao domínio rapidamente para obter outras perspectivas.

Veja também o meu Blog de 2008 que escrevi em resposta às pessoas que acrescentam o padrão de registro ativo. Ele recebeu bons comentários e discussões.

Outras dicas

Tipo de. Se parece com isso:

alt text

O padrão mais comumente usado hoje é:

Database -> DAL -> BLL -> Controller -> View Model -> UI

Onde

DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer

Observe que você nem sempre precisa de todas as camadas. O modelo BLL e View, por exemplo, pode ser opcional se o aplicativo for pequeno o suficiente.

Você deve verificar o Tutorial Nerddinner. Ele descreve todos esses conceitos em uma única referência.

Algumas ótimas explicações aqui se você é novo no MVC:

Alguém ao meu lado simplesmente não obtém asp.net MVC?

Uma nota curta, você está correto quando diz que o controlador pode (não precisa) ser a camada de negócios e a visualização é a camada de apresentação.

No entanto, o modelo são os objetos (dependendo da implementação) que contêm os dados, enquanto uma camada de dados é uma camada que recupera/manipula dados.

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