Download - Desvendando ASP.NET MVC
![Page 1: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/1.jpg)
Desvendando o ASP.NET MVC
![Page 2: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/2.jpg)
@vquaiato
http://viniciusquaiato.com
Coordenador .NET Gonow Tecnologia
.NET Architects
.NET Magazine
![Page 3: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/3.jpg)
![Page 4: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/4.jpg)
Fazer software não é algo muito simples...
![Page 5: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/5.jpg)
Muitas vezes acabamos com uma bagunça tremenda...
![Page 6: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/6.jpg)
![Page 7: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/7.jpg)
Mas queremos criar as melhores soluções:
Clareza
Facilidade de manutenção
Extensibilidade
Coesão
![Page 8: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/8.jpg)
![Page 9: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/9.jpg)
O padrão MVC
![Page 10: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/10.jpg)
![Page 11: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/11.jpg)
![Page 12: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/12.jpg)
São as classes do nosso sistema, as classes que criamos para atender ao
negócio proposto
![Page 13: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/13.jpg)
Dentro da camada model temos:
Entidades
Acesso a Dados
Serviços
![Page 14: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/14.jpg)
![Page 15: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/15.jpg)
São responsáveis por receber e responder as requisições
![Page 16: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/16.jpg)
Não possuem regras de negócio!
![Page 17: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/17.jpg)
São uma ponte entre a visão e o modelo
![Page 18: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/18.jpg)
![Page 19: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/19.jpg)
É literalmente uma visão: a representação gráfica do modelo.
![Page 20: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/20.jpg)
É através da View que é possível alterar e interagir com o model.
![Page 21: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/21.jpg)
Não existem regras de negócio da view!
No máximo regras de exibiçao!
![Page 22: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/22.jpg)
![Page 23: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/23.jpg)
Ok, mas...
![Page 24: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/24.jpg)
![Page 25: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/25.jpg)
Arquitetura de software é algo muito importante
![Page 26: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/26.jpg)
Fazer software não é algo simples
![Page 27: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/27.jpg)
Pensar e valorizar arquitetura nos permite criar aplicações mais:
Claras
Fáceis de manter
Extensíveis
Coesas
![Page 28: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/28.jpg)
![Page 29: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/29.jpg)
Pensar em arquitetura não significa perder dias e mais dias “meditando”
![Page 30: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/30.jpg)
Arquitetura é algo prático
![Page 31: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/31.jpg)
Framework web que implementa o padrão MVC
![Page 32: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/32.jpg)
É uma parte do ASP.NET
![Page 33: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/33.jpg)
Templates de projeto, classes, helpers, controles que facilitam a criação de
aplicações web
![Page 34: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/34.jpg)
Não é apenas uma escolha tecnológica, é uma escolha de arquitetura
![Page 35: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/35.jpg)
Não existe um tipo de projeto específico para usar ASP.NET MVC
![Page 36: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/36.jpg)
Toda e qualquer aplicação pode (e deve) usar o ASP.NET MVC
![Page 37: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/37.jpg)
É um framework maduro, estável e bastante completo
![Page 38: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/38.jpg)
Já utilizado por sistemas de grande porte e grandes empresas
![Page 39: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/39.jpg)
Quando seu sistema já utilizar outra plataforma
![Page 40: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/40.jpg)
Projetos simples não devem usar MVC
![Page 41: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/41.jpg)
Projetos simples não devem usar MVC
Mito!
![Page 42: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/42.jpg)
A equipe não conhece ASP.NET MVC
![Page 43: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/43.jpg)
A equipe não conhece ASP.NET MVC
Mito!
![Page 44: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/44.jpg)
Precisar de controles prontos e ricos
![Page 45: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/45.jpg)
Precisar de controles prontos e ricos
Mito!
![Page 46: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/46.jpg)
Precisar facilidade para trabalhar com Ajax
![Page 47: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/47.jpg)
Precisar facilidade para trabalhar com Ajax
Mito!
![Page 48: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/48.jpg)
Precisar de um framework maduro
![Page 49: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/49.jpg)
Precisar de um framework maduro
Mito!
![Page 50: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/50.jpg)
Precisar de profissionais do mercado
![Page 51: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/51.jpg)
Precisar de profissionais do mercado
Mito!
![Page 52: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/52.jpg)
Precisar fazer o projeto rápido
![Page 53: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/53.jpg)
Precisar fazer o projeto rápido
Mito!
![Page 54: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/54.jpg)
![Page 55: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/55.jpg)
Extensível
Testável (TDD)
SoC
DRY
Controlável
![Page 56: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/56.jpg)
Views podem ser trocadas e criadas com diversas View Engines
Model Binder pode ser customizado
Pontos de extensão para adicionar funcionalidades globais
![Page 57: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/57.jpg)
Tudo é testável!
Controllers, model, views
Possível trabalhar com TDD em todas as camadas
![Page 58: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/58.jpg)
Separation of Concerns
É possível manter as responsabilidades nos lugares corretos
Facilita manutenção, testes, evolução, coeacão
![Page 59: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/59.jpg)
Don’t Repeat Yourself
Evita duplicações de código: helpers, filters, validation attributes
Repetição de código é uma das raízes de todo mal!
![Page 60: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/60.jpg)
Todas as camadas estão ao nosso controle
Podemos controlar todo HTML gerado
Não existe manutenção de estados de controles
![Page 61: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/61.jpg)
![Page 62: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/62.jpg)
![Page 63: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/63.jpg)
Desconheço
![Page 64: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/64.jpg)
![Page 65: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/65.jpg)
O ASP.NET MVC está praticamente em sua versão 3
Em menos de 3 anos!
![Page 66: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/66.jpg)
Razor view engine
Javascript e Ajax não intrusivo
Filtros globais
Controllers sem sessão
Validação remota
Web helpers
E muito mais!
![Page 67: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/67.jpg)
Razor
Filtros globais
Controllers sem sessão
Output Cache
![Page 68: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/68.jpg)
Um blog feito com ASP.NET MVC
![Page 69: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/69.jpg)
Muito obrigado!
![Page 70: Desvendando ASP.NET MVC](https://reader036.vdocuments.pub/reader036/viewer/2022081508/5564b0c7d8b42a366c8b570b/html5/thumbnails/70.jpg)
http://asp.net/mvc
http://asp.net/mvc/mvc3
http://weblogs.asp.net/scottgu/
http://haacked.com/http://viniciusquaiato.com/blog/asp-net-mvc-3/