Skip to content

Arquitetura

Gabriel Mourão edited this page May 31, 2019 · 2 revisions

A arquitetura do FastWork é baseada em serviços, ou seja, todos os recursos são serviços independentes, que podem ser removidos ou alterados sem que haja impacto em outras partes do Framework.

O server utilizado no gerenciamento de requisição, é o Swoole\Http\Server, e a identificaçao da recepção de um requisição é indicada no evento 'on' => 'request' do Swoole\Http\Server.

Ao receber a chamada do evento, o servidor inicia uma instancia de AnthraxisBR\SwooleFW\Application, aqui é gerenciado os providers antes de entrar em src\Routing\Router, o router será chamado dentro da instancia de AnthraxisBR\SwooleFW\Routing\Wrapper, Wrapper, irá conter o server, a request, o route e instancia de resposta do swoole_http_server`.

Ao entrar no roteador, é feito uma leitura dos arquivos em routes/, e as rotas são iniciadas, assim é identificado qual Action será o responsável pela request, ou responder um possível erro ou intervenção via provider.

Banco de Dados

A conexão com o banco de dados, pode ser feita tanto pelo driver do Swoole, com a instancia de swoole_mysql, ou via Doctrine, onde a integração é mais profunda, e no momento é mais segurao.

Service Providers

O FastWork possui um recurso de injeçao de serviços independentes, esses serviços podem tem niveis de permissão de alteração diferentes, baseado em sua categoria de declaração que são:

Action Provider Mandatory Provider Fixed Provider Overloader Provider Assync Provider

Veja o modulo: Service Providers

Estrutura de injeção de objetos

O FastSwoole possui em sua maior parte dos recursos nativos, operando com base na injeção de objetos, o exemplo é a declaração de uma Cloud Function com o Unificador PAAS, onde o mesmo objeto, serve para criar Cloud Function tanto na AWS, GCP ou Azure, apenas alterando qual é o provider do serviço.

Os objetos em sua maior parte podem, ser independentes, os seja, serem instanciados em qualquer situação, ou dentro das injeções da Action, que irá validar e injetar recursos no objeto no momento da chamada.

Detalhes podem ser vistos em:

Clone this wiki locally