BT

As quatro View Engines para o ASP.NET MVC

por Jonathan Allen , traduzido por Lucas Souza em 08 Jul 2010 |

Com a introdução do Razor na última semana, existem agora quatro view engines para o ASP.NET MVC. Os outros são o Spark, NHaml e o tradicional arquivo ASPX template. Este artigo introduz as quatro engines com um foco especial na nova engine, a Razor.

O estilo da view engine ASPX nos leva de volta ao clássico ASP. Códigos usando a síntaxe <%= %> ou a mais nova <%: %> predominam este estilo. Ao longo do tempo os controles ASPC foram adicionados e logo após foram adicionados as páginas masters, mas isto também resulta em um ciclo de vida das páginas muito caro.

Spark, que é também usado no projeto MonoRail Castle, tem uma abordagem um pouco diferente. Enquanto ele suporta placeholders, ele também livremente mistura HTML e código usando atributos e tags especiais. Enquanto isto pode ser um pouco mais verboso, ele tem a vantagem de ser completamente compatível com o XML.

NHaml é uma implementação para o .NET da linguagem de markup Haml. Esta linguagem não usa toda a síntaxe parecendo XML.

A mais nova engine é a Razor da Microsoft. Embora todos os sistemas de templating compartilhem características, este se distingue dos outros três como será mostrado. Diferente do NHaml, ele usa apenas XML para como markup, e ao contrário do Spark ele não vai tão longe com a utilização de código XML. Ele não é exatamente como o ASPX e substitui alguns place holders com o @ symbol seguido por uma expressão ou um bloco de controle. Nenhum marcador final especial é necessário, então o código resultante é bastante conciso.

Por padrão todos os textos de um @ expression é HTML-encoded. Texto dentro de um @ block pode ter "blocos de conteúdos". Identificado por qualquer tag XML, que traz você de volta ao modo HTML da mesma maneira clássica que os desenvolvedores ASP usando o %> html <%=. Se você nao quer que uma tag seja emitida você pode usar a tag <text>.

Como ele usa a síntaxe existentes do VB ou do C#, a Microsoft espera que o Razor seja fácil de aprender. E enquanto qualquer editor de texto pode ser usado, o Visual Studio 2010 será atualizado para oferecer suporte completo para arquivos Razor.

Outra imporante feature presente no Razor é que ele é compatível com frameworks de testes de unidade. Razor templates não exigem um controlador ou host web-server, por isso as views escritas com ele devem ser totalmente testáveis. Enquanto na teoria qualquer coisa pode ser testada, o ASPX torna bastante difícil a codificação de testes e as outras duas engines na realidade não falam sobre a testabilidade em seus respectivos sites.

Todas as quatro engines suportam o conceito de páginas masters, então não há muito o que ser dito sobre este assunto. Views pré compiladas dentro de assembles são suportadas parcialmente pelo ASPX e completamente pelo Razor e pelo Spark. O NHaml atualmente tem isto na lista de features previstas. O que é particularmente interessante sobre o Razor e sobre o Spark é que suas views pré compiladas podem ser usadas em cenários non-hosted como engines de mail-merge.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.