[size=18]Projeto MiddleHeaven[/size]
[color=blue]Gostaria de Saber se alguém, chegou a usar esse projeto e se fez alguma implementação achei interessante mas não sei como utiliza-lo.[/color]
:arrow: http://middleheaven.wordpress.com/about/
Por Sergio Taborda,
Depois de alguns anos usando e construindo frameworks a partir de bibliotecas de terceiros fiquei cançado de repetir sempre as mesma coisa.
A ideia por detrás do Middleheaven é construir um framework sobre o qual aplicações possam ser construídas independentemente do ambiente onde elas irão ser executadas ou qual o tipo de apresentação ao usuário. Desde aplicações web servidas por navegadores, a aplicações desktop standalone com controle de licença a aplicaçãoes desktop distribuidas ou a integrações de serviços.
Por baixo dos panos muitas bibliotecas de terceiros e aderência aos padrões da plataforma Java atuais (o MiddleHeaven aponta para funcionar em Java 7) conferem a solidez necessária.
Por isso, o Middleheaven será o único framework que você irá precisar.
Quando as tecnologias mudarem ou os padrões mudarem, quando novas formas de fazer e distribuir software na plataforma Java forem criadas a suas aplicações não serão re-escritas. Simplesmente mudar o jar do Middleheaven e voilá.
Assim, o objetivos primários do Middleheaven são:
* Minimizar todo o esforço de implementação de requisitos não funcionais - implementar requisitos comuns, mas não padronizados, como a possibilidade de upload de arquivos em sites, é chato retirando foco do verdadeiro objetivo da aplicação.
* Minimizar a dependencia de bibliotecas de terceiros - a sua aplicação depende fortemente das classes do Middleheaven mas não depende de classe fora dele. Assim, quando o Middleheaven decidir utilizar uma biblioteca de terceiros diferente , ou quando a biblioteca usada for alterada pelos seus desenvolvedores isso não terá impacto nenhum na sua aplicação.
* Minimizar a re-implementação de padrões de negocio. Padrões de aplicação já consagrados são incluidos desde o principio como o padrão Money. Além disso esses padrões são incluidos dentro de um contexto de modo a permitir o máximo de reuso e flexibilidade.
Estas permissas são levadas ao extremo e expressas directamente em features especificas:
* MVC Universal: A sua logica de controle de apresentação é totalmente desacoplada da tecnologia usada para a apresentação. Isto permitirá que aplicações Middleheaven tenham interfaces web e desktop simultaneamente controladas pelo mesmos objetos de apresentação.
* Acesso Ubiquo a Dados: Acesso a dados pode ser feito de qualquer nodo do sistema e para qualquer tipo de armazenamento. Um coração fortemente orientado ao dominio é provido de acesso a repositorios de dados em bancos de dados relacionais, bancos de dados orientados a objectos, arquivos XML e outros mecanismos especiais como acesso remoto de dados.
* Estrutura forte para tratamento de quantidades. Datas, tempos, intervalos, dinheiro , medidas e conversões estão no coração do Middleheaven.
* Mecanismo de injeção automática de dependências
* Mecanismo de bootstrap para que uma mesma aplicação funcione em diferentes ambientes e o ambiente possa injetar as suas proprias implementações dos serviços primários.
* Aplicações desenvolvidas em módulos individuais e interdependentes como resolução automática de dependencias.
* Carregamento ?a quente? de serviços de modulos de aplicação
* Mecanismo de autenticação e autorização.
Dado o vasto campo que o projeto MiddleHeaven visa abraçar não é possivel fazê-lo de um só vez. Para isso as funcionalidades do MiddleHeaven são divididas em Caixas de Ferramentas ( Toolboxes) para que seja mais simples organizar o conjunto de funcionalidades. Estas toolboxes não necessáriamente se mapeiam para pacotes de classes, mas normalmente é isso que acontece.