sgcWebSockets vs ICS — Delphi 네트워킹 비교

· 리뷰

다른 오랜 Delphi 네트워킹 라이브러리

2026년에 네트워킹 라이브러리를 찾고 있는 Delphi 개발자에게 세 가지 이름이 떠오르는 경향이 있어요: Indy, Overbyte ICS(François Piette의 Internet Component Suite) 및 sgcWebSockets. ICS는 Indy만큼 오래되었고 헌신적인 팬층이 있어요. 특히 비차단, 메시지 펌프 기반 아키텍처를 인정하는 개발자들 사이에서요. sgcWebSockets는 최신 프로토콜에 초점을 맞춘 더 새로운 상용 라이브러리예요.

이 기사는 두 가지를 정면으로 비교해요: 기능 적용 범위, WebSocket 지원, HTTP/2 및 HTTP/3, 라이선스, 개발자 경험 및 상업적 지원. 비교가 특정 ICS 릴리스에 의존하는 경우 주장은 작성 시점의 공개 문서화된 v9 시리즈를 기반으로 해요 — 정확한 기능 확인이 필요하면 현재 ICS 변경 로그를 확인하세요.

기원 및 디자인 철학

ICS는 1990년대에 비동기 이벤트 기반 WinSock 래퍼 세트로 시작됐어요. 클래식 ICS 컴포넌트(TWSocket, THttpCli, TSslHttpServer)는 비차단 메시지 펌프 모델을 사용해요: 모든 소켓 작업이 Windows 메시지를 게시하고 이벤트 핸들러에서 응답해요. 그 모델은 Delphi VCL에 아름답게 맞아요 — 스레드 없음, 동기화 프리미티브 없음, 메인 스레드에서 실행. ICS는 나중에 더 높은 동시성을 위해 스레드 풀링된 HTTP 서버(TSslHttpAppSrv)를 추가했어요.

sgcWebSockets는 다른 문제를 중심으로 설계되었어요: 장기 양방향 연결(WebSocket, MQTT, SSE, gRPC 스타일 스트림)과 최신 전송 스택(HTTP/2, QUIC을 통한 HTTP/3). Windows에서 확장을 위한 IOCP 기반 서버와 저지연 메시징을 위한 이벤트 기반 클라이언트 모델을 사용해요. Indy와 ICS도 대체 HTTP 백엔드로 래핑하므로 환경에 맞는 전송을 선택할 수 있어요.

기능별 비교

기능Overbyte ICS (v9, 작성 시점)sgcWebSockets
HTTP/1.1 클라이언트예 (THttpCli, TSslHttpCli)예, 여러 백엔드
HTTP/1.1 서버예 (TSslHttpAppSrv)
WebSocket 클라이언트예 (v8 이후)예, 전체 RFC 6455
WebSocket 서버예 (v8 이후)예, 서브 프로토콜, 메시지별 deflate, 채널
HTTP/2제한적 / 일류 기능 아님예, 전체 HPACK + 프레임 계층
HTTP/3 / QUIC아니오예 (msquic 기반)
MQTT 3.1.1 / 5.0네이티브 브로커 없음, 기본 클라이언트만전체 클라이언트 + 브로커, 두 버전 모두
AMQP 1.0 / 0.9.1아니오
STOMP, SSE, WAMPSSE 기본, 다른 것은 아니오모두 지원
WebRTC / STUN / TURN / DTLS-SRTP아니오
CoAP, AWS IoT, Azure IoT아니오
SMTP / POP3 / IMAP / FTP / NNTP예, 성숙한 구현아니오 (Indy 또는 ICS 사용)
OpenSSL 바인딩예, 매우 최신예, SChannel 및 BoringSSL 포함
30개 이상의 REST API 래퍼 (OpenAI, Anthropic, AWS, Azure, 거래소)아니오
라이선스무료, mozilla 스타일상용, Free 에디션 사용 가능
Delphi 버전D7부터 D13까지D7부터 D13까지
유지 관리활성, 공급업체 주도 (Magenta Systems)활성, 공급업체 주도, 월간 릴리스
상업적 지원선택적 유료 지원 계약유료 에디션에 포함

WebSocket 지원

ICS는 v8에 WebSocket 컴포넌트(TIcsWebSocketClient, WebSocket 핸들러가 있는 TSslHttpAppSrv를 통한 서버 측)를 추가했어요. RFC 6455와 TLS를 다루는데, 이는 많은 사용 사례에 충분해요. ICS가 아직 즉시 제공하지 않는 것은 기본적으로 메시지별 deflate, 명명된 채널 / 브로드캐스트 그룹, 자동 재연결 WatchDog, JavaScript 클라이언트 글루 또는 WebSocket 위의 내장 프로토콜(WebSocket-MQTT, WebSocket-STOMP, WAMP)이에요.

sgcWebSockets는 WebSocket을 우주의 중심으로 취급해요. 서버는 동일한 포트에서 HTTP와 WebSocket을 다중화하고, 채널 및 브로드캐스트 헬퍼와 함께 제공되며, Delphi API를 미러링하는 JavaScript 클라이언트를 포함하고, WatchDog 자동 재연결, 하트비트 ping/pong, 메시지 큐 및 LB 스타일 로드 밸런서 컴포넌트를 추가해요. WebSocket으로 살고 숨쉰다면 개발자 경험이 눈에 띄게 풍부해요.

HTTP/2 및 HTTP/3

이것은 가장 큰 격차가 있는 영역이에요. 작성 시점에 ICS는 v9 릴리스 노트에 HTTP/2를 일류 기능으로 나열하지 않아요 — 일부 실험적인 작업이 공개 메일링 리스트에서 논의되었지만 ICS 애플리케이션 내에서 HTTP/2의 권장 경로는 별도의 라이브러리를 사용하는 것이에요.

sgcWebSockets는 2018년부터 HPACK 헤더 압축 알고리즘, 프레임 다중화, 서버 푸시 및 ALPN 협상을 포함한 전체 HTTP/2 구현을 제공해 왔어요. 동일한 코드 경로가 Apple Push Notification 클라이언트, Google FCM 클라이언트 및 빌드하는 모든 HTTP/2 서버 엔드포인트에 사용돼요. QUIC을 통한 HTTP/3는 Windows에서 Microsoft의 msquic 라이브러리와 Linux에서 ngtcp2를 사용하여 2023년에 추가되었어요. 최첨단 전송 지원이 필요한 애플리케이션의 경우 이것은 의미 있는 차별화 요소예요.

클래식 인터넷 프로토콜

ICS는 여기서 분명히 승리해요. SMTP, POP3, IMAP, FTP, NNTP, DNS 및 심지어 HTTP 프록시 서버도 모두 포함되어 있으며 잘 유지 관리되고 있어요. 이메일 클라이언트, FTP 프론트엔드 또는 SMTP 릴레이를 빌드하는 경우 ICS가 sgcWebSockets(이러한 프로토콜을 전혀 제공하지 않음)보다 더 강력한 시작점이에요.

일반적인 조합은 동일한 제품에서 메일/FTP 계층에는 ICS를, WebSocket / HTTP/2 / MQTT 계층에는 sgcWebSockets를 사용하는 것이에요. 두 라이브러리는 별도의 유닛 네임스페이스가 있기 때문에 행복하게 공존해요.

SSL / TLS

두 라이브러리 모두 TLS를 진지하게 다뤄요. ICS는 새 OpenSSL 릴리스를 매우 빠르게 추적하는 것으로 잘 알려져 있어요 — 새 OpenSSL 3.x 마이너 버전은 일반적으로 며칠 내에 지원돼요. sgcWebSockets도 OpenSSL을 추적하며 추가로 Windows SChannel 및 BoringSSL을 지원하고, TLS 위에 애플리케이션 수준 기밀성을 위한 자체 종단 간 암호화 계층도 지원해요.

개발자 경험

ICS는 VCL 폼 내에서 매우 자연스러운 이벤트 기반, 메시지 펌프 스타일 API를 사용해요 — 컴포넌트를 드롭하고, OnDataAvailable 또는 OnRequestDone을 연결하면 Windows 메시지가 흐름을 구동해요. 스레드가 가볍고, 디버깅이 쉽고, 클래식 VCL 개발에 관용적이에요. 단점은 단일 메시지 펌프를 넘어 확장하려면 스레드 풀링된 서버 변형이나 명시적인 다중 인스턴스 디자인이 필요하다는 것이에요.

sgcWebSockets는 Indy와 최신 REST 라이브러리에서 사용하는 더 최근의 컴포넌트 규칙을 따라요: 강력하게 타입이 지정된 옵션 하위 객체(HeartBeat, WatchDog, TLSOptions 등), 이벤트 기반 콜백 및 후드 아래의 워커 스레드가 있는 컴포넌트. IOCP 서버 전송은 사용자 코드 변경 없이 수만 개의 동시 연결로 확장돼요.

라이선스 및 가격

ICS는 Mozilla 스타일 라이선스 하에 상업적 및 비상업적 사용 모두에 무료예요. 선택적 상업적 지원 계약은 Magenta Systems에서 사용 가능해요. sgcWebSockets는 상용이며, 비상업적 사용을 위한 Free 에디션과 네 가지 유료 에디션(Standard, Professional, Enterprise, All-Access)이 있어요. 유료 에디션에는 소스 코드, 월간 업데이트 및 직접 공급업체 지원이 포함돼요.

결정 매트릭스

필요한 것…최선의 선택
SMTP, POP3, IMAP, FTP, NNTP 클라이언트ICS
스레딩 없는 작은 단일 폼 HTTP fetcherICS
최첨단 OpenSSL 추적ICS (sgc는 매우 가까워요)
채널, WatchDog, JS 클라이언트가 있는 WebSocket 클라이언트/서버sgcWebSockets
HTTP/2 클라이언트 또는 서버, Apple Push, FCMsgcWebSockets
HTTP/3 / QUICsgcWebSockets
MQTT 5 브로커, AMQP 1.0, WAMP, STOMPsgcWebSockets
WebRTC, STUN, TURN, IoT, CoAPsgcWebSockets
즉시 사용 가능한 OpenAI / Anthropic / 클라우드 API 컴포넌트sgcWebSockets
상업적 공급업체 지원 계약둘 중 하나 — sgcWebSockets 번들, ICS 선택적

맺음말

ICS와 sgcWebSockets는 실제로 경쟁자라기보다는 보완적인 도구예요. ICS는 클래식 인터넷 프로토콜과 경량 HTTP에 뛰어난, 아름답게 엔지니어링된 무료 메시지 펌프 친화적 라이브러리예요. sgcWebSockets는 최신 웹 스택 — WebSocket, HTTP/2/3, MQTT, AMQP, WebRTC, IoT, AI API — 를 소유하고 많은 수의 동시 연결로 확장되는 집중적인 상용 라이브러리예요. 많은 실제 프로젝트에 대한 올바른 답은 둘 다 사용하고, 각 라이브러리가 가장 잘하는 프로토콜에 대해 선택하는 것이에요.