MVC
- Padrão de arquitetura de software
- Descrito em 1979 por Trygve Reenskaug
- Model, view and controller
- Foco em reutilização e segregação de contextos
- MVC ≠ Arquitetura em Camadas
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Model
- Gerencia os dados e o estado da aplicação
- Não interage com a interface
- Muitas vezes (ou quase sempre) persiste os dados em algum lugar
- O mesmo modelo deve ser reutilizado e inalterado em diferentes interfaces
Slide 6
Slide 6 text
Padrões de persistência
- Persistir no controller
- Persistir no controller base
- Active Record
- Repository Pattern
- DAO (Data access object)
Slide 7
Slide 7 text
View
- Apresentar o modelo ao usuário através de uma interface
- Permite ao usuário interagir com a aplicação e manipular dados
- Não armazena nenhum dado (exceto cache)
- Facilmente reutilizável e configurável para exibir dados diferentes e de
diferentes maneiras
Slide 8
Slide 8 text
Controller
- Intermediário entre Model & View
- Atualiza a exibição quando o modelo muda
- Atualiza o modelo quando o usuário manipula a visão
- “Toma as decisões” da aplicação
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
É permitido:
- Usuário interagir com uma View
- Views interagirem com
Controllers
- Controllers interagirem com
Views
- Controllers se comunicarem com
outros Controllers
- Controllers se comunicarem com
o Model
- Usuário interagir diretamente
com os Controllers
- Usuário interagir diretamente
com o Model
- Views interagirem diretamente
com outras Views
- Views interagirem diretamente
com o Model
- Models interagirem com outros
Models*
Não é permitido:
Slide 12
Slide 12 text
Show me the code!
https://github.com/antonielcm/todomvc-dotnetcore
https://github.com/antonielcm/todomvc_on_rails
Slide 13
Slide 13 text
Benefícios
- Contextos segregados (Model - View)
- CRUD
- Views de vários tipos (respondendo PDF, XLS, específica para mobile)
- Fácil manutenção
- Testes ❤
Slide 14
Slide 14 text
Variações
- MVP
- MVVM
Slide 15
Slide 15 text
Como utilizar?
- Ruby on Rails
- ASP.NET
- Django
- Spring Framework
- Composer/Laravel/Code Igniter/CakePHP
- Express e Sails.js