“Passeando” pela internet encontrei uma ferramenta interessante. GenWise!!!! A proposta deste software é gerar três camadas para desenvolvimento web: persistência, négocio e até a camada de GUI. A camada de persistência é baseada no NHibernate. O problema é que não é um software do tipo freeware. O site disponibiliza um versão para avaliação. Eu baixei e instalei, contudo achei pouco intuitivo. Mas deu pra notar que ele realmente faz o que se propõe. Talvez com um pouco de costume na utilização da ferramenta ela seja muito prática na criação de qualquer sistema. Só que é PAGA.
Desinstalei e pensei em construir alguma coisa igual ou parecida. Algo que pudesse automatizar alguma etapa no processo de desenvolvimento, principalmente na construção das classes, interfaces, métodos, etc. Tem situações que são altamente repetitivas seja qual for o sistema; e adotando um padrão, algumas etapas ficam bem mecânicas.
Pensando nisso escrevi alguns scripts utilizando a ferramenta MyGeneration. Escrevi 4 novos scripts e adaptei um que baixei da internet. Vou descrever um pouco de cada um deles:
-
Utilizamos o NHibernate como framework de persistência. Quem utiliza sabe que é preciso ter as classes (POJO) e os .hbm.xml para mapeamento entre as classes e as entidades do banco de dados. Nada mais natural que o primeiro script fosse pra gerar esses arquivos. Baixei um da internet e fiz algumas adaptações.
-
O segundo script vai gerar a camada DAO; todas as classes que farão comunicação com a camada de persistência. Claro que existe uma classe abstrata chamada BaseDAO que será herdada em todas as classes da camada DAO. Nesta classe abstrata existe vários métodos e propriedades úteis para manipulação dos dados persistentes: inclusões, alterações, listagens, transações, etc. Além das classes, o script também gera uma classe DAOFactory. É por ela que a camada de negócio irá acessar os objetos DAOs da camada. Quem conhecer PADRÕES DE PROJETO entederá o que estou falando.
-
O terceiro script gera as interfaces das classes DAOs. Faz parte das boas práticas utilizar as interface das classes. Um dos motivos é desacoplamento, ou seja, fazer com que a camada seja independente dos objetos da outra. A comunicação entre as camadas é pelo Factory utilizando interface. Falo alguma coisa sobre isso no post sobre Visão de Módulo.
-
O quarto gera os BOs. São as classes de objetos de negócio. Esses BO’s estão utilizando seu respectivo DAO e já possui definido as operações básicas para qualquer aplicação: SelecionarPorId, Inserir, Alterar, Listar, transações… Certamente não é sulficiente para uma aplicação. Mas já é um bom começo. Não será preciso começar do zero seus objetos de negócio. Coisas como constructor, destructor, metódos básicos, definição das classes, etc. já vem pronto. Este script também gera mais duas classes: Um DAOAccess e um BOFactory. Os acesso aos DAOs pelos BOs serão feitos por uma única via chamada DAOAccess e a exposição dos BOs será feita pelo BOFactory. Ver Visão de Módulo e comentários mais acima.
-
O quinto gerá as interfaces para os BO’s pelos mesmos motivos citados acima, nas interfaces dos DAOs
Teria uma sexta classe a ser gerada. Devo criar o script. Essa classe será usada na camada de apresentação. É a BOAccess. Todas as chamadas aos BOs (Objetos de Negócio) da aplicação deverão ser feitas por este componente. Nada de instanciar a classe diretamente. O BOAccess é o nosso especialista nessa função. É uma classe muito simples. Mas bastante útil no caso de voce mudar a forma de implantação (deployment) de sua aplicação. Devo construir mais este script.
Quem se interessar em ver esses scripts em funcionamento clique aqui. Vale lembrar que o BaseDAO também foi criado por mim para utilização com NHibernate. De igual modo o gerenciamento de sessões de usuário no NHibernate também desenvolvemos. Tudo em c#.net 2.0!
Comentários