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.

Template do ASP.NET MVC 4

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

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d bloggers like this: