© casa do código do código livros para o programador rua vergueiro, 3185 - 8º andar 04101-300...

12

Upload: truongdiep

Post on 02-Apr-2018

224 views

Category:

Documents


3 download

TRANSCRIPT

© Casa do CódigoTodos os direitos reservados e protegidos pela Lei nº9.610, de 10/02/1998.Nenhuma parte deste livro poderá ser reproduzida, nem transmitida, sem auto-rização prévia por escrito da editora, sejam quais forem os meios: fotográficos,eletrônicos, mecânicos, gravação ou quaisquer outros.

Casa do CódigoLivros para o programadorRua Vergueiro, 3185 - 8º andar04101-300 – Vila Mariana – São Paulo – SP – Brasil

Casa do Código

Agradecimentos

Uma obra como esta é sempre fruto do esforço direto ou indireto de muitas pessoas.Assim, nadamais justo que dedicar algumas poucas, mas expressivas, palavras a elas.

Fabrício Lopes Sanchez

ADeus, pela capacidade intelectual mínima para realizar um projeto como este.À minha família, por atuarem como luzes quando tudo em volta se apaga.Ao Márcio Fabio Althmann (muito mais do que um pro�ssional de renome, um

amigo), pela parceria neste projeto.À editora Casa do Código, por acreditar no projeto e fornecer todo suporte de

que precisamos durante todo o processo de composição desta obra.

Márcio Fabio Althmann

A toda minha família e amigos.Em especial à minha esposa JulianeMateus Costa. Sempreme apoiando e dando

forças para encarar e vencer os obstáculos.Ao Fabrício Sanchez que felizmente aceitou construir comigo esse projeto.

i

Casa do Código

Sobre os autores

Este livro é o resultado �nal de anos de estudo e acúmulo de experiência de doispro�ssionais do mercado de tecnologia, mais especi�camente, do volátil e evolutivouniverso de desenvolvimento de so�ware. Esta seção é dedicada a você que desejasaber mais sobre os autores desta obra.

Fabrício Lopes Sanchez

Fabrício Lopes Sanchez é graduado em Ciência da Computação e mestre emProcessamentoDigital de Sinais. Commais de �� anos de experiência nomercado dedesenvolvimento de so�wares, Fabrício acumulou conhecimentos sólidos em dife-rentes plataformas tecnológicas (C/C++, Java, PHP), embora tenha se especializadoem desenvolvimento para web na plataforma Microso�. Desenvolvedor, arquiteto ediretor de tecnologia de uma startup (cargo que exerce nos dias atuais) são algumasdas funções exercidas por Fabrício nos últimos anos. Atuou também como especi-alista técnico de projetos de computação em nuvem na Microso� Brasil, onde pôdeparticipar de grandes projetos utilizando a plataforma da empresa para este �m (asaber, Windows Azure). Em ����, Fabrício foi nomeado pela Microso� como :MostValuable Professional: (MVP) na categoria ASP.NET/IIS, prêmio que a empresa con-cede a pro�ssionais aos quais ela julga destaques em suas tecnologias.

Fabrício escreve de forma recorrente em seu blog: http://fabriciosanchez.com.br.Além disso, ele pode ser encontrado também no Twitter através do usuário @San-chezFabricio.

Márcio Fabio Althmann

Márcio Fábio Althmann possui mais de �� anos de experiência no mercado dedesenvolvimento de so�ware e é especialista na plataforma .NET.

Coautor do livro Desenvolvendo para web usando o Visual Studio ���� no qual

iii

Casa do Código

abordou o tema Explorando o Acesso a Dados Utilizando LINQ To SQL.Vencedor do concursoWin�e� realizado pelaMicroso�Brasil, na categoriaDe-

senvolvimento. Graças ao concurso teve a oportunidade de conhecer a sede da Mi-croso� em Redmond nos EUA.

Atualmente trabalha na equipe de tecnologia da Benner Sistemas, equipe queé responsável por desenvolver as ferramentas utilizadas pelos desenvolvedores daempresa.

Blog: http://www.marcioalthmann.net GitHub: http://github.com/marcioalthmann Twitter: @marcialthmann

iv

Casa do Código

Prefácio

A plataforma ASP.NET continua a evoluir e expandir, acompanhando a web.Quando o modelo web forms de desenvolvimento foi introduzido, ele trouxe à pro-gramação web desenvolvedores que já possuíam ampla experiência com desenvolvi-mento para desktops. O ASP.NET web forms coloca uma camada de abstração sobreo protocolo HTTP, possibilitando assim um modelo de desenvolvimento baseadoem eventos. Algo mais familiar para estes desenvolvedores. Como a web se modi-�cou e introduziu novas técnicas, tags e apresentou o amplo poder do JavaScript, aplataforma ASP.NET precisou acompanhar tal evolução.

O framework ASP.NET MVC valoriza coisas diferentes do ASP.NET web forms.Enquanto aplicações ASP.NET web forms possibilitam a criação de interfaces ricasutilizando HTML� e JavaScript utilizando ummodelo baseado em controles de ser-vidor vinculados a trechos de códigos especí�cos, o ASP.NET MVC disponibilizao mesmo poder de forma diferente, trazendo o desenvolvedor mais para “perto dometal”. Aplicações web baseadas no frameworkMVC nos dá o controle absoluto detodos os elementos HTML e de cada byte a �o. Aplicações MVC exigem que desen-volvedores conheçam mais sobre web, pois ele permite “abraçar” cada detalhe dela.

Todos as aplicações construídas com a tecnologia ASP.NET — Web Forms eMVC— são baseadas nomesmo núcleo. Cada um destes modelos compartilha con-ceitos comuns, como diretórios padrão, editores modelos e o repositórios padrão.Para entender de forma assertiva o ASP.NET e com todos os seus aspectos, é precisorecorrer a manuais e livros que possam ajudar. É aí que livros como este entram emcena.

Como a ampla adoção do ASP.NET MVC em todo o mundo, os livros, como oque você está segurando, são muito mais importantes. O Fabrício e o Márcio mon-taram um excelente guia técnico, que lhe dará toda a informação necessária paraexpandir sua compreensão do ASP.NETMVC bem como conceitos maiores que cer-cam a plataforma ASP.NET. À medida que avançamos para melhor uni�car a plata-

v

Casa do Código

forma ASP.NET, você certamente vai querer ter uma visão clara e profunda do queASP.NET MVC tem para oferecer. Eu espero que você se divirta com volume deaprendizado sobre ASP.NET que o espera neste livro. Aproveite o livro do Fabricioe do Márcio.

Scott HanselmanPrincipal Program Manager – Azure and Web ToolsMicroso� Corp.

vi

Casa do Código Sumário

Sumário

� Sua primeira aplicação ��.� E então, vamos começar? . . . . . . . . . . . . . . . . . . . . . . . . . . ��.� Código fonte e lista de discussão . . . . . . . . . . . . . . . . . . . . . . �

� Entendendo a estrutura de uma aplicação ASP.NETMVC ��.� ASP.NET MVC? Por quê? . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Voltando à nossa primeira aplicação . . . . . . . . . . . . . . . . . . . ���.� Um pouco mais sobre convenções . . . . . . . . . . . . . . . . . . . . . ���.� Navegação baseada em rotas . . . . . . . . . . . . . . . . . . . . . . . . ���.� Concluindo e desa�ando . . . . . . . . . . . . . . . . . . . . . . . . . . ��

� Projetando a aplicação “Cadê meu médico?” ���.� Cadê meu médico? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Criando a aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Referenciando bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Criando o layout da aplicação . . . . . . . . . . . . . . . . . . . . . . . ���.� Concluindo e desa�ando . . . . . . . . . . . . . . . . . . . . . . . . . . ��

� Models: Desenhando os modelos da nossa aplicação ���.� Model?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Abordagens para a criação deModels . . . . . . . . . . . . . . . . . . . ���.� O Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Omodelo primeiro? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Banco de dados primeiro? . . . . . . . . . . . . . . . . . . . . . . . . . ���.� Model �rst x Code �rst: Quando utilizar um ou outro? . . . . . . . . . ���.� Adicionando atributos de validação nos modelos . . . . . . . . . . . . ��

vii

Sumário Casa do Código

� Controllers: Adicionando comportamento a nossa aplicação ���.� Vamos ‘controlar’ a aplicação? . . . . . . . . . . . . . . . . . . . . . . . ���.� Entendendo o papel dos Controllers e Actions . . . . . . . . . . . . . . ���.� Cadê meu médico: o que faremos? . . . . . . . . . . . . . . . . . . . . ���.� Cadê meu médico: CRUDs . . . . . . . . . . . . . . . . . . . . . . . . . ��

� Views: interagindo com o usuário ����.� Visões?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Conceito de “Engenho de renderização” . . . . . . . . . . . . . . . . . ����.� ASPX ou ASP.NET Razor? . . . . . . . . . . . . . . . . . . . . . . . . . ����.� ASP.NET Razor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Diferenças na prática . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Helpers?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Algumas outras vantagens . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Mobilidade: Sua consulta de médicos em dispositivos móveis . . . . . ���

� Segurança: Criando sua área administrativa ����.� Área administrativa?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Criando a área administrativa . . . . . . . . . . . . . . . . . . . . . . . ����.� Apesar do login, nada é bloqueado. E agora?! . . . . . . . . . . . . . . ����.� Filtros de ação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Implementando o �ltro ‘AutorizacaoDeAcesso’ . . . . . . . . . . . . . ����.� Concluindo e desa�ando . . . . . . . . . . . . . . . . . . . . . . . . . . ���

� Publicando sua aplicação ����.� Pré-requisitos para hospedar aplicações ASP.NET MVC � . . . . . . . ����.� Ambientes de host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Computação em nuvem. Por quê? . . . . . . . . . . . . . . . . . . . . . ����.� OWindows Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Windows Azure Websites . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Publicando a aplicação ‘Cadê Meu Médico?’ . . . . . . . . . . . . . . . ����.� Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ����.� Código fonte e lista de discussão . . . . . . . . . . . . . . . . . . . . . . ���

Bibliogra�a ���Versão: ��.�.�

viii