RSS feed
Anunciando a ASP.NET MVC 3 Release Candidate (Candidata a Lançamento) - ScottGu's Blog em Português

Anunciando a ASP.NET MVC 3 Release Candidate (Candidata a Lançamento)


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:

imagem

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):

imagem

Nós também fornecemos IntelliSense para palavras-chave e diretivas do Razor:

imagem

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":

imagem

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:

imagem

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:

imagem

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.

imagem

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:

imagem

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:

imagem

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:

imagem

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:

imagem

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.

Published Tuesday, November 9, 2010 9:53 AM by Leniel Macaferi

Comments

No Comments