[Logo] Mentawai Recipes
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Moderation Log] Moderation Log   [Register] Register / 
[Login] Login 
Show don't tell  XML
Forum Index » Site Docs
Author Message
saoj



Joined: 10/01/2008 08:20:15
Messages: 39
Offline

Ao invés de começar documentando todas as funcionalidades do Mentawai, que são muitas, optamos por disponibilizar uma aplicação completa como referência. Dessa maneira você pode olhar o código, ver exemplos de várias funcionalidades e decidir por si só a respeito da praticidade e simplicidade do Mentawai em relação aos outros frameworks.

As características particulares do Mentawai, que o diferenciam de outros frameworks, são:

Full-stack (completo e auto-suficiente, não necessitando de outros frameworks)
KISS principle (se você não sabe ou não consegue fazer algo a culpa é do framework, não sua)
Configuração Programática (sem XML ou annotations)

A aplicação de referência pode ser baixada do SVN:

svn co svn://saoj-la.dyndns.org/menta/trunk Menta

Você também pode vê-la rodando aqui: http://menta.seducaotecnologica.com.br/

Clique aqui para as instruções de como importar esse projeto para dentro do seu Eclipse.

Poderíamos utilizar o bom marketing para convence-lo de que o Mentawai é bom, mas ao invés disso estaremos incentivando a política do SHOW DON'T TELL (mostre não fale) com um comparativo de frameworks através da aplicação de referência. Essa política funciona assim:

Estarei disponibilizando vários repositórios de SVN, um para cada framework como VRaptor, Struts, Spring MVC, etc.

Uma pessoa com experiência no framework X pode solicitar uma senha de committer para o repositório do framework X.

Feito isso ela pode implementar a aplicação de referência com o framework X de forma que possamos compará-la às outras implementação com diferentes frameworks.

Essaa implementações serão disponibilizadas lado-a-lado com a implementação de referência do Mentawai, ou seja, você poderá decidir por conta própria o framework de sua preferência.

A especificação completa da aplicação de referência pode ser consultada aqui: http://forum.mentaframework.org/posts/list/0/2406.page

Abaixo listamos as funcionalidades do Mentawai exemplificadas na aplicação de referência:

1) Autenticação

Filtro de autenticação para bloquear/permitir o acesso às actions
Tags de autenticação para bloquear/permitir os acesso às páginas (JSP, Velocity, etc.)
Redirect after login, ou seja, quando um usuário acessa uma página sem estar logado, ele é redirecionado para a página de login. Após um login bem sucedido ele é novamente redirecionado para a página que ele inicialmente tentou acessar.

2) Autorização

Filtro de autorização para bloquear/permitir o acesso às actions
Tags de autorização para bloquear/permitir o acesso às páginas (JSP, Velocity, etc.)
Tags de autorização para exibir/remover partes de uma página
Setar os grupos que um usuário logado pertence (a autorização ou não é concedida de acordo com os grupos do usuário logado)

3) Internacionalização (i18n)

Arquivos de i18n ficam dentro do diretório i18n. Os nomes são master_pt_BR.i18n, master_en_US.i18n, etc. Um arquivo (com possibilidade de prefixos para as chaves) para tudo, ao invés de vários arquivos espalhados pela aplicação, como um por action por exemplo.
Para mensagens que vieram de dentro das actions (mensagens dinâmicas de successo ou erro por exemplo, validação, etc.)
Para textos dentro do JSP, com tags aceitando prefixos e valores dinâmicos como por exemplo Hello $1.
Reload automático quando os arquivos de propriedades (i18n) são alterados. Você não quer ter que re-iniciar a sua aplicação porque mudou "Olá" para "Oi".
Tradução padrão quando uma chave não é encontrada (para Produção).
Exibição de texto com erro (! en_US.hello !) quando uma chave não é encontrada (para QA).
Localização para imagens através de uma tag para imprimir o sub-diretório do locale.

4) IoC

IoC completo, integrado com o framework, sem a necessidade de Spring. Mas quem quiser usar Spring também pode.
Configuração programática para IoC ao invés de usar um milhão de XMLs. Perguntem para o Google porque eles resolveram lançar o Guice.

5) Mensagens dinâmicas vindo das actions

"Sua conta foi atualizada com sucess"
Integração limpa e fácil com o sistema de i18n, ou seja, essas mensagens virão do arquivo master i18n.

6) Lista de dados estáticos

É bastante recorrente a necessidade de ter combos com listas estáticas, como grupos, idiomas, países, etc.
Eles precisam ser igualmente internacionalizados
Tags para facilmente exibir esses combos em um formulário HTML
Tags para facilmente exibir um valor (localizado) para um determinado id.

7) Filtros

Não estamos falando aqui de filtros de Servlet, mas de filtros do framework, como os interceptors do Struts.
Filtros precisam ser simples para que você possa fazer os seus e fáceis de usar, para que você possa utilizar os que o framework oferece.

8 ) Validação

Integrada com o i18n
Tags fáceis para mostrar os erros nas páginas
Jeito fácil de validar uma action (implementando uma interface ou filtro por exemplo)

9) Jeito fácil de testar as actions

JUnit para as actions sem complexidades, mocks, etc.

10) Tags pra a view

Diversas tags para facilitar a sua vida na view, muito melhores do que as genéricas da JSTL.
Facilidade para criar suas próprias tags, sem qualquer complexidade ou enrolação (abstraindo a bagunça inicial da api de JSP)
Tags para paginação e muitas outras. Ou você faz a paginação na mão com código no JSP?

11) Enviando email

Tem que ser integrado com o i18n, ou seja, cada usuário recebe um email no seu idioma. Os emails ficam separados dentro do diretório /letters, com um sub-diretório para cada locale.
Tem que suportar algum tipo de template, porque você precisa carregar um email e fazer algumas substituições no corpo da mensagem, como username, password, etc.
Tem que corretamente suportar charsets, caso contrário o usuário receberá lixo para os caracteres acentuados.
Tem que suportar emails em plain/text e também em HTML.
Precisa suportar defaults para hostname, from, authentication, etc. para que você só precise configurar isso uma vez de acordo com o ambiente (produção, QA, dev, etc.)
Precisa suportar o desativamento dos envios de email para quando você está rodando os unit tests. De maneira fácil e na configuração! (Não vai sair colocando IF em tudo)
Tem que suportar envio assíncrono, ou seja, na maioria das vezes você não quer bloquear a action enquanto o email está sendo enviado.
Tem que suportar SSL se você quiser utilizar o SMTP do GMAIL.
E não se esqueça do título do email, que precisa também ser internacionalizado e suportar templates.

12) Configurações por ambiente

As configurações estáticas e textuais, como dados de conexão com o banco, smtp, hibernate, logging, etc. precisam ser carregadas de um arquivo properties. A aplicação deve suportar um arquivo properties por ambiente, além de um default que pode ser sobrescrito pelo mais específico do ambiente.

13) Suporte a dois tipos de persistência (opcional)

a aplicação pode suportar JDBC ou Hibernate, ou seja, ela implementa uma versão dos DAOs com JDBC e outra com HIBERNATE. De acordo com uma variável de ambiente ("persistency") ela decide quais implementações do DAO ela vai utilizar. A flexibilidade de IoC demonstrada na prática.



 
Forum Index » Site Docs
Go to:   
Powered by JForum 2.1.8 © JForum Team