• Início
  • Assinatura Fontes
  • Cursos
  • Fontes de Aplicativos
  • Downloads
  • Contato
  • Sitemap
  • Sobre

Régys Borges da Silveira

  • Início
  • Assinatura Fontes
  • Cursos
  • Fontes de Aplicativos
  • Downloads
  • Contato
  • Sitemap
  • Sobre

Tag: horse

13 julho 2026

Conheça os 11 Middlewares Essenciais para Turbinar suas APIs Delphi e Lazarus com Horse

Escrito por Régys Borges da Silveira

Se você desenvolve APIs em Delphi ou Lazarus, com certeza já conhece ou ouviu falar do Horse. Ele conquistou a comunidade Pascal por ser um framework extremamente rápido, minimalista e projetado para alta concorrência. Porém, o verdadeiro poder do Horse se revela quando começamos a expandir suas capacidades usando middlewares.

Os middlewares funcionam como interceptadores no ciclo de vida das requisições HTTP, permitindo que você injete segurança, controle de tráfego, telemetria e automação com pouquíssimas linhas de código. Nos últimos anos, tenho trabalhado ativamente no desenvolvimento de uma suíte de middlewares focada em solucionar desafios reais de aplicações corporativas, garantindo portabilidade entre Delphi e FPC/Lazarus.

Neste artigo, apresento os 11 middlewares de minha autoria que você pode adotar hoje mesmo para elevar o nível técnico das suas APIs.

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
13/07/2026 Notícias API REST, Auto-CRUD, Backend Pascal, Delphi, FPC, free pascal, horse, json, lazarus, Middleware, OpenTelemetry, Programação Delphi, Prometheus, Segurança HTTP, Web Server Deixe um comentário
13 julho 2026

Desligamento Suave (Graceful Shutdown) no Horse: Resiliência Enterprise para suas APIs Delphi e Lazarus

Escrito por Régys Borges da Silveira

No desenvolvimento de APIs e microsserviços modernos, garantir a alta disponibilidade e a integridade dos dados durante atualizações de versão é um requisito essencial. Se você implanta suas aplicações em ambientes de contêineres (como Docker e Kubernetes) ou atrás de um balanceador de carga, certamente já enfrentou o desafio de atualizar um serviço em produção sem derrubar as conexões ativas dos usuários.

Com a nova atualização do Horse, o framework web minimalista mais popular do ecossistema Delphi e Lazarus, introduzimos o suporte nativo ao Graceful Shutdown (Desligamento Suave). Neste artigo, vamos entender como esse recurso funciona, quais são os ganhos reais para suas aplicações e como utilizá-lo na prática.

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
13/07/2026 Notícias api, Delphi, desligamento suave, DevOps, Docker, graceful shutdown, horse, Indy, kubernetes, lazarus, Microsserviços, pascal, resiliência, REST API, web broker Deixe um comentário
12 julho 2026

Delphi Voando Baixo: Como Levamos o gRPC no Horse a 9.7k QPS com Otimizações de Baixo Nível

Escrito por Régys Borges da Silveira

No desenvolvimento de microsserviços modernos, a velocidade de comunicação entre APIs é um dos fatores mais críticos para a escalabilidade de toda a infraestrutura. É por isso que o gRPC (baseado em HTTP/2 e Protocol Buffers) tornou-se o padrão ouro de comunicação interna em gigantes da tecnologia, superando o tradicional REST/JSON em termos de vazão e uso de banda.

Recentemente, no ecossistema do Horse — o micro-framework web preferido dos desenvolvedores Delphi e Lazarus —, iniciamos uma jornada intensa de engenharia de software para construir um provedor gRPC nativo (Cleartext h2c) capaz de bater de frente com os gigantes do mercado, como C#, Go e Rust. O resultado? Alcançamos a marca de 9.773 QPS (requisições por segundo) com uma latência média de apenas 20ms no host local.

Neste artigo, vou revelar os bastidores técnicos de como implementamos otimizações em nível de hardware, CPU, alocação de heap e concorrência para atingir essa marca histórica de performance no Delphi.

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
12/07/2026 Notícias buffer pool, concorrência, Delphi, grpc, horse, http2, lazarus, microservices, Microsserviços, pascal, Performance, rest, rtti, Web API Deixe um comentário
10 julho 2026

Arquitetura Avançada no Delphi: Desvendando o Ciclo de Vida do Servidor e a Inicialização Estruturada (UseStartup) no Horse

Escrito por Régys Borges da Silveira

No desenvolvimento de APIs modernas e microsserviços com Delphi e Lazarus, o Horse se consolidou como o framework mais querido devido à sua simplicidade, leveza e alta velocidade. No entanto, à medida que os sistemas corporativos crescem, a necessidade de organização arquitetural, controle físico sobre conexões e conformidade com nuvens (como Docker e Kubernetes) torna-se crucial.

Recentemente, o ecossistema do Horse recebeu uma atualização de peso, focada justamente em infraestrutura corporativa: o suporte a Server Lifecycle Hooks (Ganchos de Ciclo de Vida do Servidor), o Graceful Shutdown (Desligamento Suave) unificado e o padrão de inicialização estruturada via UseStartup. Neste artigo, vamos explorar essas novidades e construir um exemplo didático e completo.

1. Ciclo de Vida do Servidor (Server Lifecycle Hooks) & Graceful Shutdown

Diferente dos hooks de requisição tradicionais (como onRequest ou onSend), os novos Server Lifecycle Hooks atuam no ciclo de vida físico do servidor de socket. Eles permitem que você intercepte momentos críticos:

  • OnBeforeListen: Disparado imediatamente antes do socket físico abrir no sistema operacional (ideal para registrar portas em registries ou verificar configurações).
  • OnAfterListen: Executado logo após o socket estar ativo e escutando conexões.
  • OnBeforeStop: Chamado antes de iniciar a parada física do servidor.
  • OnAfterStop: Disparado após a liberação total da porta física no sistema.
program ServerLifecycleDemo;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Horse;

type
  TServerEventListener = class
  public
    // Método de objeto compatível com THorseServerLifecycleMethod
    procedure OnBeforeListen(const AInstance: THorseInstance);
    procedure OnAfterStop(const AInstance: THorseInstance);
  end;

{ TServerEventListener }

procedure TServerEventListener.OnBeforeListen(const AInstance: THorseInstance);
begin
  Writeln(' -> [MÉTODO] 1. Antes de escutar: Configurando firewalls locais no host...');
end;

procedure TServerEventListener.OnAfterStop(const AInstance: THorseInstance);
begin
  Writeln(' -> [MÉTODO] 4. Após parar: Conexões encerradas de forma limpa.');
end;

var
  LListener: TServerEventListener;

begin
  try
    LListener := TServerEventListener.Create;
    try
      // ========================================================
      // 1. REGISTRO VIA MÉTODOS DE OBJETO (Method of Object)
      // ========================================================
      THorse.AddOnBeforeListen(LListener.OnBeforeListen);
      THorse.AddOnAfterStop(LListener.OnAfterStop);

      // ========================================================
      // 2. REGISTRO VIA PROCEDIMENTOS ANÔNIMOS (Anonymous Proc)
      // ========================================================
      
      // Executa imediatamente após o socket abrir na rede
      THorse.AddOnAfterListen(
        procedure(const AInstance: THorseInstance)
        begin
          Writeln(' -> [ANÔNIMO] 2. Servidor online! Escutando em http://', AInstance.Host, ':', AInstance.Port);
        end);

      // Executa assim que a sinalização de Stop é recebida, antes de fechar o socket
      THorse.AddOnBeforeStop(
        procedure(const AInstance: THorseInstance)
        begin
          Writeln(' -> [ANÔNIMO] 3. Sinal de parada capturado! Iniciando drenagem de requisições...');
        end);

      // Rota de teste
      THorse.Get('/ping',
        procedure(Req: THorseRequest; Res: THorseResponse; Next: TNextProc)
        begin
          Res.Send('pong');
        end);

      // Inicializa a escuta física (dispara OnBeforeListen e OnAfterListen)
      THorse.Listen(9000);

    finally
      LListener.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Aliado a isso, temos o Graceful Shutdown. Em ambientes de microsserviços modernos, os balanceadores de carga precisam que um contêiner escoe as requisições em trânsito antes de ser finalizado. A nova infraestrutura gerencia a contagem de conexões ativas e garante um encerramento seguro sob um tempo limite (timeout) configurável.

2. Organização Arquitetural com UseStartup

Inspirado no padrão de bootstrapping adotado pelo ASP.NET Core, a funcionalidade UseStartup resolve um dos maiores problemas de projetos Delphi que crescem demais: o arquivo principal do projeto (o .dpr) virar um “monólito de rotas” gigante e bagunçado.

Ao implementar a interface IHorseStartup, isolamos a configuração de middlewares, hooks e rotas dentro de uma classe dedicada, mantendo o ponto de entrada da aplicação extremamente limpo e focado no controle de inicialização.

3. Exemplo Prático e Didático

Vamos criar uma aplicação console clássica estruturada. Primeiramente, criamos a unit de Startup que encapsulará todas as regras de registro do nosso servidor:

unit Startup;

interface

uses
  Horse, System.SysUtils;

type
  TMyStartup = class(TInterfacedObject, IHorseStartup)
  private
    procedure RegisterMiddlewares(const AInstance: THorseInstance);
    procedure RegisterRoutes(const AInstance: THorseInstance);
    procedure RegisterLifecycleHooks(const AInstance: THorseInstance);
  public
    procedure Configure(const AInstance: THorseInstance);
  end;

implementation

{ TMyStartup }

procedure TMyStartup.Configure(const AInstance: THorseInstance);
begin
  // Configurações Globais da Instância
  ReportMemoryLeaksOnShutdown := True;

  RegisterLifecycleHooks(AInstance);
  RegisterMiddlewares(AInstance);
  RegisterRoutes(AInstance);
end;

procedure TMyStartup.RegisterLifecycleHooks(const AInstance: THorseInstance);
begin
  // Monitoramento físico do ciclo de vida
  AInstance.AddOnBeforeListen(
    procedure(const AInst: THorseInstance)
    begin
      Writeln(' -> [LOG] Preparando para abrir o socket físico...');
    end);

  AInstance.AddOnAfterListen(
    procedure(const AInst: THorseInstance)
    begin
      Writeln(' -> [LOG] Servidor online e ativo na porta: ', AInst.Port);
    end);

  AInstance.AddOnBeforeStop(
    procedure(const AInst: THorseInstance)
    begin
      Writeln(' -> [LOG] Iniciando Graceful Shutdown (aguardando finalização de requisições ativas)...');
    end);
end;

procedure TMyStartup.RegisterMiddlewares(const AInstance: THorseInstance);
begin
  // Adicione seus middlewares favoritos aqui (JSON Parser, CORS, etc.)
  // AInstance.Use(HorseJhonson);
end;

procedure TMyStartup.RegisterRoutes(const AInstance: THorseInstance);
begin
  AInstance.Get('/ping',
    procedure(Req: THorseRequest; Res: THorseResponse; Next: TNextProc)
    begin
      Res.Send('pong');
    end);

  AInstance.Get('/api/v1/status',
    procedure(Req: THorseRequest; Res: THorseResponse; Next: TNextProc)
    begin
      Res.Send('{"status":"online"}');
    end);
end;

end.

Agora, veja como o arquivo principal do projeto (.dpr) fica absurdamente elegante, legível e profissional:

program AppServer;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Horse,
  Startup in 'Startup.pas';

var
  LStartup: IHorseStartup;
begin
  try
    Writeln('====================================================');
    Writeln('    Servidor Corporativo Delphi (UseStartup)        ');
    Writeln('====================================================');

    // Instanciamos o configurador isolado
    LStartup := TMyStartup.Create;

    // Injetamos a inicialização e ativamos a escuta
    THorse.UseStartup(LStartup).Listen(9000);

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Conclusão

Organizar o código de inicialização de suas APIs em Delphi não é apenas uma questão de estética, mas de manutenibilidade e escalabilidade técnica. Ao isolar a configuração lógica na interface IHorseStartup e acoplar logs e monitoramentos APM diretamente nos Lifecycle Hooks, seu projeto ganha robustez para rodar em produção e facilidade para testes automatizados.

O que você achou dessa nova abordagem de bootstrapping no Delphi? Deixe seu comentário e compartilhe nas suas redes sociais!

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
10/07/2026 Notícias api, Arquitetura de Software, backend, Clean Code, Delphi, freepascal, graceful shutdown, horse, Indy, lazarus, lifecycle hooks, Microsserviços, rest, usestartup, webbroker Deixe um comentário
10 julho 2026

Arquitetura Multi-Instance no Horse: Como Rodar Múltiplos Servidores HTTP Isolados no Mesmo Processo com Delphi e Lazarus

Escrito por Régys Borges da Silveira

No desenvolvimento de APIs modernas e microsserviços, é muito comum nos depararmos com o seguinte cenário: você precisa expor uma API pública para consumo externo na porta 80, mas ao mesmo tempo precisa expor um painel administrativo ou endpoints de monitoramento de métricas em uma porta interna reservada (como a porta 8080).

No ecossistema Delphi e Lazarus, o Horse consolidou-se como o framework web mais popular, leve e minimalista. No entanto, historicamente o framework operava sob uma fachada central baseada em métodos de classe estáticos (singletons globais). É exatamente aqui que entra a nova e poderosa funcionalidade da arquitetura Multi-Instance.

Neste artigo, vamos explorar como o Horse foi redesenhado para suportar servidores logicamente isolados rodando concorrentemente no mesmo processo de aplicação, e entender o “pulo do gato” de infraestrutura para colocar isso de pé em produção.

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
10/07/2026 Notícias apache, API REST, backend, Delphi, delphi web, Desenvolvimento Web, free pascal, horse, Indy, isapi, lazarus, microsservicos, multi-instance, pascal, servidor http Deixe um comentário
09 julho 2026

Observabilidade Máxima: Como implementar Telemetria, OpenTelemetry e Prometheus no Delphi com Horse

Escrito por Régys Borges da Silveira

O desenvolvimento de APIs com Delphi utilizando o Horse revolucionou a forma como criamos serviços rápidos, minimalistas e eficientes. No entanto, à medida que nossas aplicações crescem e passam a rodar em ambientes de produção complexos, surge um grande desafio: como saber exatamente o que está acontecendo por debaixo do capô em tempo real?

Monitorar uma aplicação em produção apenas analisando arquivos de log estáticos (ou pior, esperando o cliente reclamar de lentidão) não é mais viável. É aqui que entra a Observabilidade e seus pilares principais: a coleta de métricas e o rastreamento distribuído (Distributed Tracing).

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
09/07/2026 Notícias api, APM, backend, Delphi, DevOps, Grafana, horse, Jaeger, Microsserviços, Monitoramento, Observabilidade, OpenTelemetry, Prometheus, Telemetria, Web Framework Deixe um comentário
26 junho 2026

Horse Epoll: Como quebramos a barreira das 29.000 requisições por segundo com Delphi no Linux

Escrito por Régys Borges da Silveira

Se você desenvolve APIs em Delphi, provavelmente já ouviu o mito de que o Delphi não serve para backend web de alto desempenho na nuvem ou de que ele consome muita memória. Hoje, vamos desmistificar essa falácia por completo.

Por alguns dias estive estudando o httpsys e epoll, o primeiro para windows e o segundo para linux, visando melhorar o provedor epoll do DEXTe acrescentar ao HORSE provedores para httpsys e epoll, o ponto de partida dessa empreitada foi tentar entender melhor como tudo acontece nos bastidores e como otimizar ao maximo um servidor feito em delphi, para isso utilizei estes dois projetos dos quais tenho participado bastante.

Neste artigo, vamos analisar a fundo o desenvolvimento do Horse Epoll, um provedor nativo assíncrono de transporte HTTP construído para Linux, e entender como técnicas avançadas de programação de baixo nível elevaram o Delphi a patamares de performance brutais, batendo 29.710 requisições por segundo em contêineres Docker.

Continue lendo…

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
26/06/2026 Notícias Delphi, desempenho, embarcdero, epoll, horse, linux, nuvem, servidor 1 comentário
05 outubro 2021

[Evento Gratuito] Semana HORSE

Escrito por Régys Borges da Silveira
semana-horse

Serão 03 Mega Aulas Gratuitas sobre Servidores e Microserviços com Horse, Consumo dos Servidores com VCL Desktop e Firemonkey.

Você aprenderá a usar sobre Padrões de Mercado, Organização, Boas Práticas, Distribuição em Windows e Linux e muitas dicas sobre “por onde começar”. Não perca!

Inscreva-se -> Deixe seus dados e receba todas as informações, links, etc
http://adrianosantostreina.com.br/semanahorse

Compartilhar este post

  • Compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Compartilhar no Telegram(abre em nova janela) Telegram
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Imprimir(abre em nova janela) Imprimir
  • Envie um link por e-mail para um amigo(abre em nova janela) E-mail

Curtir isso:

Curtir Carregando...
05/10/2021 Notícias api, horse, linux, micro serviços, rest, servidor, windows Deixe um comentário
WHATSAPP (34) 9 9822.1845
  • Connect on LinkedIn
  • Connect on RSS
  • Connect on YouTube
  • Connect on Github

MVP EmbarcaderoCertificação

12.741/2013 academy ACBr Android cbs Clean Code consumidor Cupom curso datasnap Delphi Delphi 13 desenvolvimento Desenvolvimento de Software Embarcadero FireDAC Firemonkey fiscal ibpt ibs Imposto inteligência artificial Lei linux mobile NF-e nfc-e nfce nfe Nota nota eletronica consumidor nota fiscal eletrônica object pascal paf-ecf pascal programação RAD Studio reforma tributária rest SAT tabela Transparência video web xe7

Sites parceiros

  • Embarcadero

Social Media

  • Connect on LinkedIn
  • Connect on RSS
  • Connect on YouTube
  • Connect on Github
© Copyright 2017. Theme by BloomPixel.

%d