Atenção: esse artigo tem dois vídeos complementares.
Clique e assista o primeiro!

Clique e assista o segundo!

Artigo no estilo: Curso

Do que trata o artigo

Dando continuidade sobre as novidades do ASP.NET MVC 3 trataremos de assuntos como Inversão de Controle e Injeção de Dependência. Veremos também como trabalhar com output cache com actions, além disso, veremos como funcionam e para que servem os controllers sem sessão, ou Sessionless Controllers.

Para que serve

Trabalhar com inversão de controle e injeção de dependências no ASP.NET MVC nos permite criar aplicações mais robustas no sentido de que sua manutenção e evolução são mais simples. Melhorar o desempenho de nossas aplicações mantendo em cache o resultado de actions Permitir que diversas chamadas assíncronas sejam de fato processadas em paralelo pelo servidor.

Em que situação o tema é útil

Diminuir a dependência entre os objetos do sistema, ganhando assim flexibilidade. Melhorar testes automatizados já que pode ser possível utilizar objetos mock. Ao utilizar o recurso de output cache se obtém um ganho de velocidade já que informações em cache não precisar ser recuperadas na fonte, acelerando assim a renderização das views e chamadas assíncronas, via ajax, feitas por um mesmo usuário podem facilmente ser paralelizadas com a utilização de sessionless controllers.

Resumo do DevMan

Nos dois artigos anteriores sobre o ASP.NET MVC 3 foram apresentadas diversas novidades desta nova versão do framework: Razor e sua sintaxe, helpers, atributos, filtros, validações e mais. Novidades que dizem respeito ao servidor e novidades que dizem respeito ao client side.

Nesta terceira e última parte serão vistas algumas das melhorias para trabalhar com Injeção de Dependências e Inversão de Controle com o ASP.NET MVC 3. A interface IDependencyResolver abstrai de uma maneira muito simples como o ASP.NET MVC pode resolver nossas dependências nos controllers tornando o trabalho de instanciação deste algo transparente e simples.

Uma action pode ser renderizada de forma a ser uma partial dentro de uma view. Pode-se ainda renderizar uma action diretamente dentro de uma view, ou seja, obter o conteúdo resultante da execução desta action e colocar na view, ou ainda renderizar da maneira padrão. A grande novidade é que agora o output cache também funciona para as chamadas child actions – as renderizadas como partial e diretamente na view. O ganho em economia de processamento é muito grande e a aplicação passa a ser mais responsiva e agradável do ponto de vista do usuário da mesma.

Sessionless controllers permitem que chamadas assíncronas realizadas por um mesmo usuário sejam de fato processadas em paralelo. Em razão do SessionState não ser thread-safe as chamadas assíncronas à recursos que manipulam sessão no ASP.NET são processados de forma serial, no entanto quando desabilitamos a sessão nos controllers, múltiplos requests assíncronos são de fato processados em paralelo.

Quando se fala em ASP.NET MVC um dos principais argumentos utilizados em prol da adoção do framework é de que ele é fácil para testar. Esta é uma meia verdade. O ASP.NET MVC é mais do que apenas em uma tecnologia: é uma arquitetura. Não é simplesmente uma decisão tecnológica, é também uma decisão arquitetural.

A testabilidade inerente ao ASP.NET MVC existe em razão da separação de responsabilidades existente e promovida pelo framework. Os controller podem ser testados pois existem maneiras de mantê-los desacoplados de quaisquer códigos de infraestrutura, como acesso a dados, acesso a disco, serviços externos, etc. Uma das maneiras de fazer isso é através da Inversão de Controle obtida com Injeção de Dependências. Isso permite ter controllers mais coesos, ou seja, controllers com menos responsabilidades e com responsabilidades que realmente pertencem a eles.

...
Quer ler esse conteúdo completo? Tenha acesso completo