Uma questão que frequentemente é feita quando alguém deve criar uma ViewEngine personalizada em vez de um ActionResult. Por exemplo, suponha que você deseja retornar os objetos em um formato XML personalizado. Você escreveria uma ViewEngine personalizada ou um MyCustomXmlFormatActionResult?

A regra geral para a escolha entre um e outro é se faz ou não sentido ter algum tipo de arquivo de modelo que orienta a forma como o markup é processado. Se há apenas uma maneira de converter um objeto para o formato de saída, então escrever uma ActionResult personalizada faz mais sentido.

Cenário: Por exemplo, o ASP.NET MVC Framework inclui um JsonResult por padrão, que serializa um objeto em JSON. Você não mudaria a serialização do mesmo objeto para JSON baseado na Action ou na View que será retornada. Serialização geralmente não é controlada através de um modelo.

Mas suponha que você queira usar o XSLT para transformar XML em HTML. Neste caso, você pode ter múltiplas maneiras para transformar o XML em HTML dependendo da Action que foi chamada. Neste caso, você criaria um XsltViewEngine, que utiliza arquivos XSLT como modelo de Views.

Conclusão: ViewEngines tem um propósito muito específico e restrito. Eles existem para levar os dados passados por uma Action e gerar uma saída formatada, geralmente HTML. Mas esse assunto gera muitas e muitas discussões sobre qual forma usar, então na dúvida, implemente da forma que te faça mais feliz.

É isso galera, e se gostou não esqueça de ajudar outras pessoas compartilhando e curtindo…

Um forte abraço a todos e até a próxima…