WiRL e WebBroker

Published: (December 17, 2025 at 03:33 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Cover image for WiRL e WebBroker

Introduzione a WebBroker

WebBroker è probabilmente la prima tecnologia sviluppata da Embarcadero (all’epoca ancora Borland) che ha cercato di integrare la programmazione Web con Delphi. Il sistema si basa sul componente TWebModule (un particolare tipo di DataModule) che è in grado di smistare le singole chiamate. Per fare questa operazione può agire in due modi:

  • WebAction – facendo doppio click sul WebModule viene aperta una finestra popup dove è possibile creare una o più WebAction; per ognuna di esse è possibile definire dei criteri per fare match con la richiesta HTTP (metodo, URL, ecc.) e gestire un evento dove definire la risposta.
  • Dispatcher – in alternativa è possibile scrivere una classe che implementi l’interfaccia IWebDispatch e registrarla sul WebModule.

WiRL e WebBroker

WiRL usa quest’ultimo approccio. Con l’ultima versione è stato introdotto un nuovo componente TWiRLDispatcher che permette di inoltrare tutte le chiamate fatte a WebBroker verso WiRL.

Il dispatcher verifica se esiste un engine di WiRL configurato per gestire quella specifica richiesta. In caso positivo, chiede all’engine di gestire la risposta; altrimenti notifica a WebBroker l’impossibilità di produrla. In quest’ultimo caso WebBroker proverà con altri dispatcher o WebAction configurati.

Dal punto di vista del codice, è necessario creare una normale applicazione WebBroker (ad esempio usando il wizard: File → New → Others → Web → Web Server Application) e istanziare TWiRLServer e TWiRLDispatcher.

interface

uses
  // .............
  WiRL.http.Server,
  WiRL.http.Server.WebBroker;

type
  TMainWebModule = class(TWebModule)
  private
    FWiRLServer: TWiRLServer;
    FDispatcher: TWiRLDispatcher;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  WebModuleClass: TComponentClass = TMainWebModule;

implementation

{$R *.dfm}

constructor TMainWebModule.Create(AOwner: TComponent);
begin
  inherited;
  FWiRLServer := TWiRLServer.Create(Self);

  FWiRLServer.AddEngine('/rest')
    .SetEngineName('RESTEngine')
    .AddApplication('/app')
      .SetResources('*')
      .SetFilters('*');

  FWiRLServer.Active := True;

  // È fondamentale che l'owner dei dispatcher sia Self, che deriva da TWebModule
  // In questo modo il dispatcher viene automaticamente registrato sul WebModule
  FDispatcher := TWiRLDispatcher.Create(Self);
  FDispatcher.Server := FWiRLServer;  
end;

Vantaggi e svantaggi di WebBroker con WiRL

Vantaggi

  • Possibilità di integrare servizi REST in applicazioni WebBroker preesistenti.
  • Generazione di applicazioni integrate con le architetture supportate da WebBroker: moduli Apache, ISAPI, CGI, FastCGI (introdotta da Delphi 13), Standalone.
  • Utilizzo delle funzionalità specifiche di WebBroker: logging nativo e sessioni.

Svantaggi

Consiglio personale: per i nuovi progetti WiRL è preferibile utilizzare l’architettura tradizionale basata su Indy, a meno che non sia necessario integrare servizi REST in un’applicazione WebBroker preesistente o si abbia l’esigenza specifica di sfruttare una delle architetture supportate da WebBroker (moduli Apache, ISAPI, CGI o FastCGI). L’approccio con Indy risulta più semplice da configurare e gestire, offrendo pieno supporto a tutte le funzionalità di WiRL.

Back to Blog

Related posts

Read more »