Arquivos do Blog

Novidades do Visual Studio 11 e do .Net Framework 4.5: Parte II

Uma série de recursos foram adicionados as linguagens de programação que podemos trabalhar no Visual Studio.

 

Vou apresentar alguns dos novos recursos

Javascript:

As versões anteriores do Visual Studio já possuiam suporte ao Javascript, porém na versão 11 este suporte é total, assim como é nas linguagens top de linha como o C# e o Visual Basic

  • Agora é possível através do DOM Explorer examinar e manipular o Document Object Model de uma página HTML.
  • A depuração foi melhorada para suportar grandes arquivos.
  • O Intellisense foi melhorado com uma maior precisão e maior desempenho.

Talvez a adição mais interessante é de um REPL (Read-Evaluate-Print Loop) para o desenvolvimento JavaScript. Este fornece aos desenvolvedores um ambiente interativo com o qual podem escrever códigos e interagir com os aplicativos em execução.

 

Visual Basic / C#

Suporte de programação assíncrona serão integrados  nas novas versões das linguagens de programação C# 5 e Visual Basic 11. O uso de código assíncrono em versões anteriores do Visual Studio era difícil de implementar e depurar. O Visual Studio 11 melhora em ambas as áreas, fornecendo novos recursos de linguagem que permitem o uso de fluxos de controle tradicionais (loops / condicionais / etc) com código assíncrono e inclui a capacidade de depurar estas declarações com o depurador integrado.

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: