Sunday 4 January 2009

Participar no denvolvimento do Olimpo CMS

Há já algum tempo que ando a trabalhar neste projecto e apesar de muitos se terem interessado no projecto, desde sempre que trabalhado sozinho. Tenho a certeza que não é porque o código não está disponível, pois, desde sempre que o código está disponível (Inicialmente no Source Forge e agora no Google Code).

Para fazer o download do projecto é necessário instalar um cliente de SVN (para windows pode usar o TortoiseSVN Client). O SVN é um gestor de versões que evolui do CVS que é conhecido por toda a Internet, pois, ela praticamente foi desenvolvida por milhares de programadores ao longo do globo usando o CVS.

Neste momento uso o MonoDevelop como IDE de desenvolvimento. Escolhi este IDE porque está num estado de maturação suficiente para suportar o desenvolvimento de um produto como o Olimpo CMS. Outra razão pela escolha é porque eu uso como sistema operativo um Ubuntu. Este sistema operativo é baseado no kernel linux e o Visual Studio não corre neste num sistema operativo. Assim, tive que encontrar uma solução para desenvolver em .NET num ambiente Linux e o Mono e MonoDevelop são a alternativa certa.

O Olimpo CMS está desenvolvido usando diversas camadas com especificidades diferentes:
  • olimpoTools.DataAccess - Camada de acesso a dados. Esta camada é responsável pelas acções directas a um repositório de dados (MySQL, SQL Server, etc.). Tem diversas funcionalidades de persistncia de dados que usa System.Reflection nas transposições dos dados "de e para" objectos e listas de objectos.
  • olimpo.Common.Theme - esta camada é responsável pelo carregamento de um OlimpoTheme. O OlimpoTheme é uma tema gravado na base de dados do Olimpo CMS que é representa e carrega todo o site e nas zonas definidas.
  • olimpo.WebUI - Ponto de entrada do Olimpo CMS. Usa do olimpo.Common.Theme para carregar o site.
  • Modules - Tudo no Olimpo CMS são módulos. Apesar de haver módulos transversais a toda a aplicação (Membership, Globals, Language, etc.), a maior parte dos módulos encerram em si as suas funcionalidades. Existe um conjunto de Interfaces que definem como um módulo deve ser construido e o que deve implementar para que o olimpo.Common.Theme o possa carregar no lugar correcto da página.
    Cada módulo é um projecto Web isolado que está dentro da árvore de directório do Olimpo CMS, cujo binário compilado é colocado na directória bin do projecto principal. Desta forma, não necessitamos de compilar o Olimpo CMS quando efectuamos uma alteração num módulo.
Praticamente todo o desenvolvimento usa a metodologia MVC (Model View Controller) e já existem alguns testes unitários que tentam garantir a qualidade das alterações.

Agora já sabem como está estuturado o Olimpo CMS no alto nível. Mais tarde irei começar a explicar os seus componentes.


Abraços
Paulo Aboim Pinto
Odivelas - Portugal

1 comment:

Anonymous said...
This comment has been removed by a blog administrator.