Arquitetura do ExpressoBR

De Wiki Expresso V3
Ir para: navegação, pesquisa

Conteúdo

Arquitetura Geral

Ponto Único de Entrada

O ExpressoBR é um software que implementa o padrão de projeto Front Controller, que define um ponto centralizado para a manipulação da navegação entre telas e para o fluxo da aplicação.

Toda requisição feita para o ExpressoBR é direcionada para o arquivo index.php, por força de configuração do servidor, que define os arquivos a serem processados quando seu nome é omitido na URL.

Gerenciamento das Dependências

O arquivo index.php faz uso dos arquivos bootstrap.php e init_plugins.php para, respectivamente, configurar o caminho de busca para as dependências fixas da aplicação e para inicializar os plugins, que são dependências fracamente acopladas.

As pastas library e vendor armazenam as dependências da aplicação, as bibliotecas de terceiros. A library é a pasta de dependências original, que contém bibliotecas Javascript e PHP, enquanto a vendor é a pasta do Composer, que gradualmente armazenará todas as dependências PHP que se enquadrarem no padrão PSR-0 do PHP-FIG.

Controle da Aplicação por Framework

O arquivo index.php utiliza o padrão de projeto Inversion of Control, delegando o controle da aplicação para o framework Tinebase, que é uma extensão do Zend Framework.

Arquitetura expressobr.png

Arquitetura dos Módulos

Cada módulo do ExpressoBR segue uma estrutura padrão de camadas, com divisões claras de responsabilidades. Algumas camadas são adjacentes, de modo que não há uma relação de comunicação um para um em todos os casos, como ocorre por exemplo com camadas de rede.

  • A camada Server é responsável por capturar a requisição, identificá-la é instanciar um objeto adequado para tratá-la.
  • A camada Frontend é por tratar a requisição. Há implementações de Frontend para a linha de comando (CLI), para requisições HTTP ordinárias, para requisições no formato JSON-RPC, para requisições WebDAV e ActiveSync.
  • A camada Controller é responsável por manipular os objetos das camadas Model, que encapsula os dados, e Backend, que encapsula as operações e a comunicação com sistemas externos.
  • A camada View é implicita, composta por HTML, CSS e Javascript. Há somente um documento HTML que carrega todo o CSS e Javascript, este último implementado por ExtJS que desenha a interface e controla os eventos gerados pelo usuário.

O processamento da camada View é feito inteiramente no cliente, após a primeira requisição HTTP. As requisições ao ExpressoBR são predominantemente do tipo JSON-RPC.

Padrão de Arquitetura

Arquitetura do expressov3.01.png

Camadas

Arquitetura do expressov3.02.png

Tipos de Requisição e Camadas

Arquitetura do expressov3.03.png

Principal Padrão de Projeto

Arquitetura do expressov3.04.png

Arquitetura do expressov3.05.png

Despacho de Requisição

Arquitetura do expressov3.06.png

Arquitetura do expressov3.07.png

Arquitetura do expressov3.08.png

Comunicação do servidor PHP com o cliente Javascript

Arquitetura do expressov3.09.png

Ferramentas pessoais
Espaços nominais

Variantes
Ações
Navegação
Ferramentas