Qual é a diferença entre um framework Action Based e um Component Based ?
– O que é um framework Action Based ?
– É um típico framework web, lidam com as requisições de entrada através de controladores e ações.
Existem diversos frameworks que implementam o modelo MVC e são Action Based, como o Struts, Struts 2, Spring MVC.
A figura abaixo mostra o fluxo de funcionamento desse tipo de framework.
Se você analisar a imagem acima, é fácil perceber que um framework Action Based, mesmo tendo muitos recursos, você terá de se utilizar de bibliotecas de terceiros para suprir as necessidades de seus aplicativos.
No entanto, nem todas as estruturas MVC são consideradas Action Based.
– O que é um framework MVC Component Based ?
– É um framework é como se fosse um pacote completo. Abstração é a chave para esses frameworks, abstrai os componentes internos, e reduz a necessidade de se aprender e implementar várias frameworks, pois fornece seus próprios componentes internos que podem ser implementadas rapidamente, e curva de aprendizado baixa.
O que obviamente aumenta o tempo de desenvolvimento. Também a reutilização de código, é uma preocupação com qualquer framework, mas o MVC Component Based por padrão permite que você componentize seu código, e o reutilize de uma maneira fácil. Além disso, quase todos esses frameworks lidam com o estado por padrão e fornecem outros recursos interessantes. Mas não espere que todos os frameworks lidem com todos os recursos.
A figura abaixo mostra o fluxo de funcionamento desse tipo de framework.
Existem vários frameworks MVC Component Based, como: JSF implementação padrão, IceFaces, PrimeFaces, RichFaces, ADF, MyFaces, existem outras. Todos esses frameworks possuem uma boa base de componentes para o desenvolvedor.
Na minha opinião pessoal, com base na minha experiência profissional, se você já tem muita experiência em torno do desenvolvimento web, da forma tradicional, vai achar mais difícil de utilizar os frameworks MVC Action Based. Mas se você for iniciante em Java para web, vai aprender de forma fácil e rápida implementar as soluções que queria.
Tanto o Spring MVC quanto o JSF são frameworks MVC, fazem a mesma coisa, mas com algumas diferenças. Eu sempre gostei mais da performance de aplicações MVC Action Based, utilizando os frameworks Spring MVC, Struts ou Struts 2. Embora eu prefira o desenvolvimento com JSF, MVC Component Based, por ser mais produtivo, e tenha uma performance em certos casos igual, e não muito mais lenta em comparação ao MVC Action Based.
O JSF permite uma iteração maior entre os componentes ricos da camada view com Java. Ele se utiliza de binding da camada view para a camada controller. Ao se utilizar um framework MVC Action Based, isso não é possível, não há essa iteração, ele se utiliza de request da camada view para a camada controller. Essa iteração deixa os componentes das páginas muito mais bonitos e funcionais, com mais recursos, sendo manipuláveis diretamente pela linguagem Java, mas em alguns casos, isso consume mais recursos, e causa lentidão na aplicação.
Se é utilizado um framework MVC Action Based, não se vai ter iteração dos componentes da camada view com a linguagem Java, mas terá uma resposta mais rápida.
Dependendo do projeto, é que se deve escolher um ou outro, do resultado que se quer, e do prazo do projeto.
Por exemplo, um portal de conteúdo externo ou interno, com um número grande de usuários acessando simultaneamente, ou seja um número de requisições bem alto, fica bom com um framework MVC Action Based.
Um site de E-commerce com determinados pontos tendo acessos maiores, quando se vai escolher um produto, quando se vai finalizar a compra, quando se vai realizar o pagamento, fica bom com um framework MVC Component Based.
Eu já trabalhei com os frameworks Struts, Spring MVC, JSF a versão padrão, RichFaces e PrimeFaces, e posso assegurar por experiência própria que a versão PrimeFaces, é mais produtiva e a de mais rápido aprendizado.
E o framework ADF da Oracle, nunca trabalhei com ele, mas pelo que pesquisei e estudei, não é o de mais rápido aprendizado, mas com certeza é o mais estável do mundo, pois a Oracle o utiliza em todos os seus sites, e em alguns de seus produtos.
Seguem alguns exemplos bem básicos, de alguns dos frameworks citados neste texto, a ideia é quem quiser fazer uma comparação prática entre eles, baixar os exemplo e executá-los:
Exemplo de uma aplicação Java Web utilizando o módulo MVC do Spring framework.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando o Struts framework.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando o Struts 2 framework.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando JSF.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando JSF integrado ao Spring Framework.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando JSF com o framework IceFaces.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando JSF com o framework RichFaces.
Baixar Código-Fonte via GitHub
Exemplo de aplicação Java Web utilizando JSF com o framework PrimeFaces.
Baixar Código-Fonte via GitHub
Fonte:
JSF Padrão – javaserverfaces.java.net
PrimeFaces – www.primefaces.org
IceFaces – www.icesoft.org
RichFaces – richfaces.jboss.org
Struts – struts.apache.org
Spring – spring.io
MyFaces – myfaces.apache.org
ADF – www.oracle.com/adf