Arquivos do Blog
Instalação do Preview do ASP.NET MVC 4
Você já pode baixar e testar a nova versão do ASP.NET MVC e conferir os novos recursos.
Links onde podemos obter o ASP.NET MVC 4:
Web Platform Installer – Instalação dos templates de projeto.
Nuget package – Ideal para atualizar um projeto MVC 3 existente.
Stand Alone Installer- Instalação dos templates de projeto.
Além do novo CSS o tema padrão foi melhorado e possui recursos que torna o tema adaptável a aplicações rodando em navegadores desktop e mobile
Como migrar manualmente do MVC 3 para o MVC 4?
1. Você precisa substituir o seguinte código no web.config do seu projeto:
System.Web.Mvc, Version=3.0.0.0
System.Web.WebPages, Version=1.0.0.0
System.Web.Helpers, Version=1.0.0.0
System.Web.WebPages.Razor, Version=1.0.0.0
Por esse:
System.Web.Mvc, Version=4.0.0.0
System.Web.WebPages, Version=2.0.0.0
System.Web.Helpers, Version=2.0.0.0,
System.Web.WebPages.Razor, Version=2.0.0.0
2. Agora, atualize a versão do elemento webPages:Version para “2.0.0.0″ e adicione um novo elemento Key chamado PreserveLoginUrl com o valor “true”:
<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="PreserveLoginUrl" value="true" /> </appSettings>
3. Delete as seguintes referências do seu projeto:
System.Web.Mvc (v3.0.0.0)
System.Web.WebPages (v1.0.0.0)
System.Web.Razor (v1.0.0.0)
System.Web.WebPages.Deployment (v1.0.0.0)
System.Web.WebPages.Razor (v1.0.0.0)
Agora, adicione as seguintes referências:
System.Web.Mvc (v4.0.0.0)
System.Web.WebPages (v2.0.0.0)
System.Web.Razor (v2.0.0.0)
System.Web.WebPages.Deployment (v2.0.0.0)
System.Web.WebPages.Razor (v2.0.0.0)
4. Feche o Visual Studio. Vá até a pasta do seu projeto e abra o arquivo NomedoProjeto.csproj.
5. Localize o elemento ProjectTypeGuids e altere {E53F8FEA-EAE0-44A6-8774-FFD645390401} para {E3E379DF-F4C6-4180-9B81-6769533ABE47
6. Salve as alterações do arquivo (.csproj) que você acabou de editar, abra novamente o projeto e compile (Ctrl+Shift+B).
Se tudo estiver Ok, você já pode testar o projeto com a nova versão do ASP.NET MVC 4.
ASP.NET MVC 4 e Programação Assíncrona
Execução assíncrona é o futuro do desenvolvimento de aplicações para Windows
Nas versões anteriores do ASP.NET MVC era possível criar Controllers assíncronos herdando a classe AsyncController e usando algumas convenções:
MyActionAsync: método que retorna void e lança um processo assíncrono
MyActionCompleted: método que retorna um ActionResult (neste caso será o resultado da Action MyAction)
Para permitir que o MVC gerencie operações assíncronas e passe o resultado para a View, os desenvolvedores tinham que usar o AsyncManager do AsyncController.
Por exemplo, o controller abaixo permite obter uma lista de filmes serializada em Json de forma assíncrona a partir de um serviço OData:
public class MoviesController : AsyncController
{
public ActionResult Index()
{
return View();
}
public void GetJsonMoviesAsync(int? page)
{
const int pageSize = 20;
int skip = pageSize * ((page ?? 1) - 1);
string url = string.Format("http://odata.netflix.com/[…]&$skip={0}&$top={1}",
skip, pageSize);
//a operação assíncrona é declarada
AsyncManager.OutstandingOperations.Increment();
var webClient = new WebClient();
webClient.DownloadStringCompleted += OnWebClientDownloadStringCompleted;
webClient.DownloadStringAsync(new Uri(url));//o processo assíncrono inicia
}
private void OnWebClientDownloadStringCompleted(object sender,
DownloadStringCompletedEventArgs e)
{
// O processo assíncrono termina
// "movies" o resultado é adicionado aos parâmetros da AsyncManager
// Método GetJsonMoviesCompleted
List<Movie> movies = null;
if (AsyncManager.Parameters.ContainsKey("movies"))
{
movies = (List<Movie>)AsyncManager.Parameters["movies"];
movies.Clear();
}
else
{
movies = new List<Movie>();
AsyncManager.Parameters["movies"] = movies;
}
movies.AddRange(Movie.FromXml(e.Result));
//Fim da operação assíncrona (chama a Action Completed)
AsyncManager.OutstandingOperations.Decrement();
}
public ActionResult GetJsonMoviesCompleted(List<Movie> movies)
{
//Retorna o resultado em Json
return Json(movies, JsonRequestBehavior.AllowGet);
}
}
Veja agora como podemos criar a mesma operação assíncrona acima, usando o ASP.NET MVC 4 e o C# 5 com as novas palavras chaves async e await, bem mais simples!:
public class MoviesController : AsyncController
{
public ActionResult Index()
{
return View();
}
public async Task<ActionResult> GetJsonMovies(int? page)
{
const int pageSize = 20;
int skip = pageSize * ((page ?? 1) - 1);
string.Format("http://odata.netflix.com/[…]&$skip={0}&$top={1}",
skip, pageSize);
var webClient = new WebClient();
string xmlResult = await webClient.DownloadStringTaskAsync(url);
return Json(Movie.FromXml(xmlResult), JsonRequestBehavior.AllowGet);
}
}
Como você pode ver no código acima, no ASP.NET MVC 4 continua necessário herdar a classe AsyncController mas não há mais convenções de nomenclatura usando métodos Completed/Async
Fonte: http://www.juliencorioland.net/Archives/en-aspnet-mvc-4-asynchronous-controllers


