WiRL 및 WebBroker

발행: (2025년 12월 17일 오후 05:33 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

WiRL e WebBroker 표지 이미지

WebBroker 소개

WebBroker는 아마도 Embarcadero(당시에는 Borland)에서 개발한 최초의 기술로, Web 프로그래밍을 Delphi와 통합하려고 시도했습니다. 이 시스템은 TWebModule 컴포넌트(특수한 형태의 DataModule)를 기반으로 하며, 개별 호출을 라우팅할 수 있습니다. 이 작업을 수행하기 위해 두 가지 방법으로 동작할 수 있습니다:

  • WebActionWebModule을 더블 클릭하면 팝업 창이 열리고 하나 이상의 WebAction을 생성할 수 있습니다; 각 액션마다 HTTP 요청(메서드, URL 등)과 매치하기 위한 기준을 정의하고, 응답을 정의하는 이벤트를 처리할 수 있습니다.
  • Dispatcher – 대안으로 IWebDispatch 인터페이스를 구현하는 클래스를 작성하고 이를 WebModule에 등록할 수 있습니다.

WiRL 및 WebBroker

WiRL은 이 접근 방식을 사용합니다. 최신 버전에서는 TWiRLDispatcher라는 새로운 컴포넌트가 도입되어 WebBroker에 대한 모든 호출을 WiRL로 전달할 수 있게 되었습니다.

디스패처는 해당 요청을 처리하도록 구성된 WiRL 엔진이 존재하는지 확인합니다. 존재한다면 엔진에 응답 처리를 요청하고, 그렇지 않으면 WebBroker에 처리할 수 없음을 알립니다. 이 경우 WebBroker는 다른 디스패처나 구성된 WebAction을 시도합니다.

코드 관점에서 보면, 일반적인 WebBroker 애플리케이션을 생성해야 합니다(예: 마법사 사용: File → New → Others → Web → Web Server Application) 그리고 TWiRLServerTWiRLDispatcher를 인스턴스화합니다.

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;

WebBroker와 WiRL의 장점과 단점

장점

  • 기존 WebBroker 애플리케이션에 REST 서비스를 통합할 수 있음.
  • WebBroker가 지원하는 아키텍처(Apache 모듈, ISAPI, CGI, FastCGI(Delphi 13에서 도입), Standalone)를 사용한 통합 애플리케이션 생성.
  • WebBroker 고유 기능 사용: 네이티브 로깅 및 세션.

단점

  • WebBroker 사용으로 인한 복잡성 증가.
  • SSE(Server‑Sent Events) 및 chunked transfer encoding과 같은 일부 기능이 없음.

개인적인 조언: 새로운 프로젝트에서는 WiRL을 Indy 기반 전통 아키텍처로 사용하는 것이 바람직합니다. 다만 기존 WebBroker 애플리케이션에 REST 서비스를 통합해야 하거나 WebBroker가 지원하는 아키텍처(Apache 모듈, ISAPI, CGI, FastCGI) 중 하나를 활용해야 할 경우는 예외입니다. Indy 접근 방식은 설정 및 관리가 더 간단하며, WiRL의 모든 기능을 완전히 지원합니다.

Back to Blog

관련 글

더 보기 »