Nesta manhã, a equipe da ASP.NET lançou a ASP.NET MVC 3 RC (release candidate) ou candidata a lançamento. Você pode baixá-la aqui.
A
ASP.NET MVC 3 é um lançamento muito bacana, e acrescenta várias novas
funcionalidades e refinamentos. Ela também é compatível com a ASP.NET
MVC V1 e V2 - o que torna mais fácil a atualização das aplicações
existentes (leia as notas de lançamento para as saber as etapas exatas a
seguir). Você pode aprender mais sobre algumas das grandes capacidades
presentes na ASP.NET MVC 3 a partir de posts anteriores que escrevi
sobre ela:
O lançamento de hoje da ASP.NET MVC 3 RC
inclui vários refinamentos adicionais para os recursos (além de
correções de bugs, melhorias para as ferramentas, melhorias de
performance, etc.). Este post cobre as melhorias específicas para o lançamento hoje. Reveja meus posts anteriores para aprender mais sobre os muitos, muitos
outros recursos e melhorias da ASP.NET MVC 3 introduzidas nas versões
de amostras/betas.
IntelliSense para o Razor no Visual Studio
Colorização
do código e suporte à IntelliSense para modelos de visão baseados no
Razor agora está disponível dentro do Visual Studio e do Visual Web
Developer Express (que é gratuito).
A IntelliSense funciona
para arquivos HTML, C#, VB, JavaScript e CSS quando é feita a edição
dentro de modelos de visão baseados no Razor:
Você
tem IntelliSense completa para código C#/VB - incluindo métodos de
ajuda HTML (todos os métodos de ajuda HTML existentes na ASP.NET MVC
também funcionam perfeitamente em visões baseadas no Razor):
Nós também fornecemos IntelliSense para palavras-chave e diretivas do Razor:
Observe
a seguir como depois de definir a diretiva @model para ser um Produto,
os métodos de ajuda HTML fortemente tipados (e a propriedade "Model"
dentro do modelo de visão) são completados corretamente para prover IntelliSense para uma classe "Product":
Ainda
estamos fazendo o ajuste de desempenho final para o editor (e temos
várias otimizações que não puderam entrar no lançamento de hoje). Se
você encontrar um cenário onde a IntelliSense parece não funcionar ou
parece mais lenta do que deveria ser - por favor, envie-nos uma
reprodução para que possamos assegurar que nossos últimos lançamentos
implementem as correções necessárias.
Gerenciador de Pacotes NuGet
Eu escrevi
mês passado sobre um gerenciador de pacotes novo, gratuito e de código
fonte aberto - que na época estávamos chamando de "NuPack". Desde então
nós renomeamos o NuPack para NuGet (em Inglês). O lançamento de hoje da ASP.NET MVC 3 instala o NuGet automaticamente como parte da configuração.
Você
pode usar o NuGet para facilmente fazer o download e instalar ambas
bibliotecas comerciais e de código aberto dentro de seus projetos. Por
exemplo, para instalar NHibernate e uma biblioteca de extensão LINQ que
alguém tenha construído para NHibernate, eu poderia digitar
"install-package NHibernate.Linq"dentro do console do gerenciador de
pacotes NuGet no Visual Studio:
Quando
eu pressionar enter o NuGet fará o download automaticamente de todas as
bibliotecas (e suas dependências) e configurará o meu projeto ASP.NET
MVC 3 para usá-las:
Existem
hoje centenas de bibliotecas .NET de código aberto dentro do feed de
pacotes do NuGet, e a lista continuará a crescer ao longo do tempo.
Achamos
que o NuGet permitirá que todos os desenvolvedores .NET (não apenas os
que desenvolvem com a ASP.NET MVC) sejam capazes de alavancar e
compartilhar funcionalidades de uma maneira mais fácil com toda a
comunidade, tornando a construção de aplicações .NET ainda melhor.
Assista a Palestra de Scott Hanselman na PDC
Scott
Hanselman deu a pelestra mais bem avaliada na PDC deste ano, a qual ele
chamou de "ASP.NET + Packaging + Open Source = Crazy Delicious"
(ASP.NET + Empacotamento + Código Livre = Absurdamente Delicioso). É
uma palestra "sem slides" que demonstra como codificar uma aplicação do
início ao fim usando a ASP.NET MVC 3, Razor, NuGet, desenvolvimento de
código antecipado com o Entity Framework (EF), SQL CE e um monte de
outras coisas legais.

Você pode assistir a palestra online
(em Inglês) ou pode fazer o download da mesma (clique com o botão direito do
mouse e escolha "salvar como" a partir de um dos links a seguir):
- arquivo WMV - banda estreita (cerca de 258 megas)
- arquivo MP4 - banda estreita (cerca de 120 megas)
Eu
realmente recomendo que você assista a palestra - é ao mesmo tempo
divertida, e demonstra como todas as partes da pilha da ASP.NET MVC 3 (e
especialmente o NuGet) se encaixam.
Cacheamento de Saída de Páginas Parciais
A
ASP.NET MVC tem suportado o cacheamento de saída de respostas de
páginas completas desde a primeira versão V1. Com a ASP.NET MVC V3 (a
partir da versão RC de hoje) nós também estamos permitindo suporte para o
cacheamento de saída de páginas parciais - o que te permite facilmente
fazer o cacheamento de saída de regiões ou fragmentos de uma resposta em
oposição à totalidade da página. Isso acaba sendo super útil em muitos
cenários.
Fazer o cacheamento de saída de apenas uma região de
uma página é muito fácil de fazer. Basta encapsular a região que você
deseja armazenar em cache dentro de uma ação filha que você chama dentro
da visão que você está renderizando. Por exemplo, a seguir eu tenho
uma página de listagem de produtos, e quero gerar também a saída de uma
seção "Daily Specials" (Promoções do Dia) na página:
Acima
eu estou usando o método de ajuda Html.Action() para chamar o método de
ação filho SalesController.DailySpecials(). Observe que eu estou
passando um parâmetro de categoria para ele acima - o que me permite
personalizar os produtos da "Promoções do Dia" que mostrarei com base em
quais tipos de produtos o usuário está atualmente vendo (assim se os
usuários estiverem navegando por produtos relacionados a "computador" eu
posso exibir uma lista de produtos da categoria computador que estão em promoção, e
se eles estiverem navegando em produtos para "nenéns" eu posso mostrar
produtos de fraldas que estão em promoção).
A seguir está uma simples
implementação do método SalesController.DailySpecials(). Ele recupera
uma lista adequada de produtos e, em seguida, devolve uma resposta
usando um modelo de visão parcial do Razor:
Observe
como o método DailySpecials acima tem um atributo [OutputCache] sobre
ele. Isso indica que o conteúdo parcial gerado por ele deve ser
armazenado em cache (durante 3600 segundo = 1 hora). Nós também estamos
indicando que o conteúdo em cache deve variar automaticamente com base
no parâmetro da categoria.
Se temos 10 categorias de produtos, o
nosso método DailySpecials vai cachear 10 listas diferentes de produtos
em promoção - e a lista de promoções adequadas (computadores ou
fraldas) será entregue como saída dependendo de qual categoria de
produtos o usuário estiver navegando no momento. Importante: nenhum
acesso ao banco de dados ou lógica de processamento irá acontecer se o
conteúdo parcial for servido a partir do cache de saída - o que
reduzirá a carga no nosso servidor, diminuindo assim o tempo de resposta.
Este novo mecanismo oferece uma maneira muito fácil e limpa de adicionar cache de saída de páginas parciais em suas aplicações.
JavaScript Não Intrusivo e Validação
Discuti
sobre várias melhorias referentes à validação e JavaScript/AJAX, as
quais estão chegando com a ASP.NET MVC 3. Você pode conferir estas
melhorias no meu post sobre a primeira versão de amostra da ASP.NET MVC 3.
Uma
das boas melhorias que acompanham a ASP.NET MVC V3 é que os métodos de
ajuda AJAX e de Validação na ASP.NET MVC agora usam uma abordagem JavaScript discreta/não intrusiva
(em Inglês) por padrão. JavaScript não intrusivo evita a injeção de JavaScript
diretamente na marcação HTML e, em vez disso permite a separação mais
clara de comportamento usando a nova convenção "data-" do HTML 5 (que,
convenientemente, funciona em navegadores mais antigos - incluindo o IE6
- também). Isso torna seu código HTML menor e mais limpo, e facilita
opcionalmente a troca ou personalização de bibliotecas JS. Os métodos
de ajuda de validação na ASP.NET MVC 3 agora utilizam o plugin
jQueryValidate por padrão.
Validação no Lado do Cliente Habilitada Por Padrão
Com
as versões anteriores da ASP.NET MVC (incluindo a versão beta da
ASP.NET MVC V3 do mês passado) você precisava chamar explicitamente o
método Html.EnableClientValidation() dentro de suas visões a fim de
habilitar a validação do lado do cliente. Começando com a versão
candidata a lançamento (RC) de hoje, isso não é mais necessário, e a
validação no lado do cliente (usando uma abordagem não intrusiva) agora é
ativada por padrão (você pode desligar/desabilitar isso se você quiser
através de uma opção de configuração no arquivo web.config).
Você
ainda precisa referenciar as bibliotecas jQuery + bibliotecas de
validação jQuery apropriadas dentro do seu site para que a validação no
lado do cliente funcione. Porque você explicitamente referência os
arquivos JavaScript, você pode optar por hospedá-los em seu próprio
servidor ou referenciá-los a partir de uma CDN (rede de distribuição de
conteúdo) iguais as disponibilizadas pela Microsoft ou pelo Google.
Validador Remoto
Um
recurso adicional de validação que é novo com a versão RC de hoje é o
suporte para um novo atributo de validação [Remote] que te permite tirar
proveito do suporte do validador remoto do plugin de Validação da
jQuery. Isso permite que a biblioteca de validação do lado do cliente
chame automaticamente um método personalizado que você define no
servidor para executar a lógica de validação que só pode ser feita no
lado do servidor. Ele fornece uma maneira muito limpa para integrar
cenários como este dentro da sua experiência de validação no lado do
cliente.
Validação Granular da Requisição/Solicitação
A
ASP.NET MVC tem suporte nativo para a validação de requests
(solicitações), o que ajuda a proteger automaticamente contra ataques
XSS e de injeção de HTML. Às vezes, porém, você quer explicitamente
desativar a validação de solicitações em alguns cenários onde você quer
que os usuários possam postar conteúdo HTML (por exemplo: criação de
blogs ou edição de conteúdo de CMS).
Agora você pode
adicionar um atributo [SkipRequestValidation] (ignorar a validação de
requisições) em modelos ou modelos de visão, o qual desativa a validação
de solicitações com base em propriedades durante a vinculação de dados
do modelo:
Adicionar
o atributo acima no seu modelo/viewodel (modelo de visão) permite que
você defina-o uma única vez e ele será aplicado em todos os cenários.
Outras Melhorias na versão RC
A seguir está uma lista parcial de outras boas melhorias na RC de hoje:
Janela de Diálogo "New Project" (Novo Projeto) Melhorada:
Quando você cria um Projeto ASP.NET MVC 3 é apresentadas a você uma janela de diálogo igual a mostrada a seguir:
A
janela de diálogo acima é agora extensível, e você pode adicionar
outros modelos de projeto iniciais, motores de visão, e frameworks de
teste unitário nela. Iremos liberar modelos de projeto iniciais ao
longo do tempo (que aparecerão na lista) para tornar ainda mais fácil
começar a trabalhar em novos projetos.
Melhorias de Scaffolding (Criação Automática de Código/Visões)
Uma
série de pequenas melhorias, porém agradáveis têm sido feitas nos
modelos de criação automática de código da ASP.NET MVC. Os modelos
agora executam um melhor trabalho de identificação de propriedades de
ID/chave primária em modelos, e trata as mesmas adequadamente (por
exemplo: eles agora criam links apropriados para edição/remoção/etc). Os modelos de criação de código/visões Create/Edit (Criar/Editar) agora usam
Html.EditorFor() por padrão, ao invés de Html.TextBoxFor() - o que torna
mais fácil para você personalizar/ajustar a maneira como seus modelos
são exibidos.
Melhorias na Janela de Diálogo Add-View (Adicionar Visão)
Quando
você usa a janela de diálogo Add->View para adicionar uma visão
que é fortemente tipada, a janela de diálogo Add View agora filtra mais
os tipos não condizentes e é classificada/organizada de uma forma que
torna mais fácil encontrar o que você está procurando.
Suporte a Controladores sem Sessão
Agora
você pode indicar se você quer que uma classe de Controllador use
session-state (sessão) - e se assim for se você quer que ela seja do
tipo leitura/escrita ou somente leitura.
Modelo do Razor Dinâmico Por Padrão
Se
você não especificar uma diretiva @model dentro de suas visões Razor, a
propriedade "Model" na página será definida com o tipo dynamic (dinâmica) ao
invés de objeto. Isso permite que você execute uma vinculação tardia no
tipo do modelo. Antes você tinha que adicionar "@model dynamic" no topo do arquivo para fazer isso.
Novas Sobrecargas para Html.LabelFor() e Html.LabelForModel()
Novas
sobrecargas para os métodos de ajuda LabelFor() e LabelForModel() foram
adicionadas, as quais permitem que você opcionalmente especifique ou
substitua o texto do label (rótulo).
Download
Um link direto para um instalador da ASP.NET MVC 3 RC pode ser encontrado aqui. Ele funciona com o VS 2010 e com o gratuito Visual Web Developer 2010 Express.
Por favor, certifique-se de desinstalar qualquer versão anterior da ASP.NET MVC 3 que você tenha instalado no seu sistema.
Resumo
O
lançamento de hoje da ASP.NET MVC 3 RC contém um monte de coisas boas
que torna o desenvolvimento Web com a ASP.NET MVC melhor do que nunca.
Se você tiver dúvidas ou sugestões sobre o lançamento, ou encontrar
problemas/bugs nele, por favor poste os mesmos no fórum da ASP.NET MVC em www.asp.net. A equipe da ASP.NET MVC acompanha de perto este fórum e será capaz de ajudar.
Estamos
pensando em passar as próximas semanas acompanhamento o retorno da
comunidade, melhorando a performance, e consertando o conjunto final
de bugs. Agradecemos antecipadamente por qualquer problema/bug que
você nos enviar!
Espero que ajude,
Scott
PS Além do blog, eu também estou agora utilizando o Twitter para atualizações rápidas e para compartilhar links. Siga-me em: twitter.com/ScottGu
Texto traduzido do post original por
Leniel Macaferi.