Microframeworks para uma web mais rápida, flexível e integrada

Em uma web dominada por frameworks complexos e monolíticos, emerge um conceito de projeto que preza agilidade, integração e flexibilidade. No lugar de plataformas que oferecem centenas de funcionalidades, padrões bem definidos e comunidade cativa, os microframeworks apostam em ecossistemas mais amplos, foco em funcionalidades-chave e flexibilidade para integrar projetos de diversos fornecedores para embasar o necessário para o produto em questão -- e nada mais. Neste artigo, apresento as principais diretrizes que norteiam este tipo de framework, faço comparações com modelos tradicionais e dou exemplo de alguns expoentes do segmento.


O que são microframeworks

Estes frameworks abordam a oferta de funcionalidades de maneira diferenciada. Por exemplo, eles oferecem:

  • Arquitetura flexível e aberta à extensão
  • Propósitos mais específicos e bem delineados
  • Facilidade para integração de funcionalidades de outros fornecedores

Diversas linguagens tem representantes no gênero, mas as voltadas para web acabam se destacando, como o PHP e o Python. Por exemplo temos o Flask, o Falcon e o Silex. Eles se restringem à interface REST e a estrutura Request/Responde básica do HTTP, enquanto oferecem interfaces para integração com outros projetos, que adicionam camadas como ORM, OAuth, Segurança, etc.

Arquitetura

Como estes frameworks permitem a integração com camadas mantidas por equipes diferentes, com abordagens e arquiteturas diferentes? Através de Middlewares. Ou seja, as bibliotecas são "empilhadas" em uma pipeline pela qual o request e, posteriormente, a response passam e podem ser processados e modificados antes e depois do acesso ao código da aplicação. Por exemplo, no Falcon:

class ExampleMiddleware(object):

    def process_request(self, req, resp):
      """ código para pré processar os inputs:
      Aqui podem ser implementadas regras de autorização,
      OAuth, Inicialização de Session (ORM). Modificações
      request e na response serão passadas para o código da aplicação    
      """
    def process_response(self, req, resp, resource, req_succeeded):
        """ código para fechar o processamento da aplicação
        Aqui podem ser implementadas funções de logging, fechamento de sessão, etc

# Insere o middleware na pilha de execução do Falcon
api = falcon.API(ExampleMiddleware())

Exemplos semelhantes são feitos com Hooks através da estrutura de decorators, ou com os providers do Silex, por exemplo.

Conclusão

Este é um artigo introdutório sobre o tema, apenas para salientar a diferença dos microframeworks em relação a abordagem tradicional. Através deles, é possível integrar serviços de fornecedores diferentes, escolhendo os que melhor se encaixam no projeto que você está desenvolvendo atualmente.

Referências

  • https://blog.appdynamics.com/engineering/php-microframework-vs-full-stack-framework/
  • https://stackoverflow.com/questions/7560602/are-microframeworks-intended-for-large-code-bases
  • https://www.slant.co/topics/532/~best-python-microframeworks
  • http://php-pb.net/2014/05/27/microframeworks/
  • https://www.noupe.com/development/javascript-jquery/11-minimal-javascript-frameworks-96416.html

Add a comment

Previous Post Next Post