sgcHTTP 기능 매트릭스
sgcHTTP가 제공하는 모든 기능을, HTTP/2 클라이언트, gRPC 클라이언트, 세 개의 Google Cloud 클라이언트를 기준으로 정리했습니다. 모든 기능이 Delphi와 C++ Builder에서 동일하게 동작하며, 모든 라이선스에 전체 소스 코드가 제공됩니다. 이번 출시에서는 컴포넌트 하위 페이지가 아직 게시되지 않아, 아래 각 항목은 이 페이지 안에서 자체적으로 완결됩니다.
sgcHTTP가 제공하는 모든 기능을, HTTP/2 클라이언트, gRPC 클라이언트, 세 개의 Google Cloud 클라이언트를 기준으로 정리했습니다. 모든 기능이 Delphi와 C++ Builder에서 동일하게 동작하며, 모든 라이선스에 전체 소스 코드가 제공됩니다. 이번 출시에서는 컴포넌트 하위 페이지가 아직 게시되지 않아, 아래 각 항목은 이 페이지 안에서 자체적으로 완결됩니다.
멀티플렉싱 스트림, HPACK, ALPN
unary & 스트리밍 RPC
Pub/Sub, Calendar & FCM
Delphi 7부터 13까지, C++ Builder
sgcHTTP는 자체 완결형 제품입니다. sgcWebSockets Core 런타임이 함께 포함되어 제공되므로 애드온이 아닙니다.
HTTP/2와 gRPC에는 sgcCustomIndy가 필요합니다. 두 클래스 모두 TLS 프로토콜 협상에 ALPN이 필요한데, 표준 Indy 라이브러리는 이를 지원하지 않으므로 대신 sgcCustomIndy 위에 구축되어 있습니다. 주문에 자동으로 추가됩니다. 세 개의 Google Cloud 클라이언트는 순수 HTTPS이며 필요하지 않습니다.
SGC HTTP 팔레트 페이지의 컴포넌트 2종과, 코드 전용 Google Cloud 클래스 3종이 모두 sgcHTTP 유닛에 선언되어 있습니다.
| 컴포넌트 | 클래스 | 팔레트? | 설명 |
|---|---|---|---|
| HTTP/2 클라이언트 | TsgcHTTP2Client | 있음 | 네이티브 HTTP/2 클라이언트입니다. 멀티플렉싱 스트림, HPACK 헤더 압축, ALPN 협상을 지원하며, sgcCustomIndy가 필요합니다. |
| gRPC 클라이언트 | TsgcGRPCClient | 있음 | HTTP/2 클라이언트 위에 구축된 gRPC 클라이언트입니다. unary, 서버 스트리밍, 클라이언트 스트리밍, 양방향 RPC를 지원하며, sgcCustomIndy가 필요합니다. |
| Google Cloud Pub/Sub | TsgcHTTPGoogleCloud_PubSub_Client | 없음, 코드 전용 | Google Cloud Pub/Sub REST API입니다. 토픽, 구독, 스냅샷, 게시, 가져오기를 지원합니다. Core 위의 순수 HTTPS입니다. |
| Google Cloud Calendar | TsgcHTTPGoogleCloud_Calendar_Client | 없음, 코드 전용 | Google Calendar API v3입니다. 캘린더와 이벤트의 생성, 수정, 목록 조회, 삭제를 지원합니다. Core 위의 순수 HTTPS입니다. |
| Google Cloud FCM | TsgcHTTPGoogleCloud_FCM_Client | 없음, 코드 전용 | Firebase Cloud Messaging HTTP v1 API입니다. 호출 한 번으로 푸시 알림 페이로드를 전송합니다. Core 위의 순수 HTTPS입니다. |
TsgcHTTP2Client는 ALPN으로 협상되는 단일 TLS 연결 위에서 HTTP/2(RFC 9113)로 통신합니다. 이것이 sgcCustomIndy 위에 구축된 이유입니다.
| 기능 | API | 비고 |
|---|---|---|
| 연결 | Host, Port, Active | 하나의 TLS 연결이 멀티플렉싱되는 모든 요청 스트림을 실어 나릅니다. |
| 연결 열기 | Connect, ConnectAsync | 연결을 열고 같은 호출에서 선택적으로 요청을 발행합니다. |
| 읽기 | Get, GetAsync | 동기 호출이거나, 응답을 이벤트로 전달받는 발사 후 망각 방식입니다. |
| 쓰기 | Post, PostAsync, Put, PutAsync, Patch, PatchAsync | 요청 본문이 스트림이므로 업로드가 메모리에 다 들어갈 필요가 없습니다. |
| Delete & Options | Delete, DeleteAsync, Options, OptionsAsync | 나머지 HTTP 메서드 전체이며, 동일한 동기/비동기 짝을 이룹니다. |
| 응답 | OnHTTP2Response | 요청 객체와 응답 객체를 함께 전달하며, Response.DataString과 상태도 포함됩니다. |
| 청크 본문 | OnHTTP2ResponseFragment | 청크 응답의 각 조각이 도착할 때마다 최종 OnHTTP2Response보다 먼저 발생합니다. |
| 서버 푸시 | OnHTTP2PushPromise | HTTP/2 서버 푸시 리소스가 도착하는 대로 드러냅니다. |
| 연결 생명 주기 | OnHTTP2Connect, OnHTTP2Disconnect, OnHTTP2GoAway, OnHTTP2RSTStream | HTTP/2가 정의하는 연결, 연결 해제, 스트림 리셋 신호입니다. |
| 설정 | HTTP2Options, Settings | 상대방에게 전송되는 로컬 HTTP/2 SETTINGS 프레임 값입니다. |
| 안정성 | WatchDog, HeartBeat, Throttle | 자동 재연결, 킵얼라이브, 요청 스로틀링이며, sgc HTTP 스택 나머지와 공유됩니다. |
| 인증 & TLS | Authentication, TLSOptions, OnHTTP2Authorization | 표준 인증 방식과 TLS 구성, 그리고 커스텀 인증 헤더를 위한 훅입니다. |
| 의존성 | sgcCustomIndy | ALPN이 TLS 핸드셰이크 중 h2 프로토콜을 협상합니다. 표준 Indy 라이브러리는 이를 지원하지 않습니다. |
TsgcGRPCClient는 HTTP/2 클라이언트의 멀티플렉싱 스트림 위에서 Protocol Buffers 페이로드를 실어 나르므로, gRPC의 네 가지 호출 형태를 모두 지원합니다.
| 기능 | API | 비고 |
|---|---|---|
| 전송 | Client | TsgcHTTP2Client 인스턴스입니다. gRPC 클라이언트는 자체 연결을 여는 대신 이 위에 올라탑니다. |
| unary RPC | Call, CallAsync, CallString | 하나의 요청, 하나의 응답입니다. Call은 블로킹되어 TsgcGRPCResponse를 반환하고, CallAsync는 OnGRPCResponse로 전달합니다. |
| 서버 스트리밍 | ServerStreamingCall | 하나의 요청, OnGRPCStreamMessage로 전달되는 응답 스트림이며 OnGRPCStreamEnd까지 이어집니다. |
| 클라이언트 스트리밍 | OpenClientStream, SendStreamMessage, CloseClientStream, CloseClientStreamAsync | 요청 스트림이며, 스트림이 닫힐 때 최종 응답 하나를 받습니다. |
| 양방향 스트리밍 | OpenBidiStream, SendBidiMessage, CloseBidiStream | 같은 호출 위에서 양쪽이 독립적으로 스트리밍합니다. |
| 취소 | CancelCall | 스트림 id로 진행 중인 호출을 취소합니다. |
| 응답 | OnGRPCResponse, OnGRPCStreamMessage, OnGRPCStreamEnd | TsgcGRPCResponse가 StatusCode, Data/DataString, Headers, Trailers를 담습니다. |
| 오류 | OnGRPCError, OnGRPCException | gRPC 상태 코드 오류와 전송 계층 예외를 별도로 전달합니다. |
| 메타데이터 | DefaultMetadata, OnGRPCBeforeRequest | 호출별 및 기본 gRPC 메타데이터 헤더입니다. |
| 복원력 | RetryPolicy, Interceptors, ServiceConfig | 개별 호출 지점을 건드리지 않고도 재시도 동작, 횡단 관심사 인터셉터 체인, 서비스 구성을 제공합니다. |
| 관찰 가능성 | MetricsCollector | 클라이언트의 호출 지표를 수집합니다. |
| 의존성 | sgcCustomIndy | 기반이 되는 HTTP/2 클라이언트에서 물려받으며, ALPN이 동일한 방식으로 필요합니다. |
Google 서비스 계정으로 인증하고 순수 HTTPS로 통신하는 코드 전용 클래스 3종입니다. 어느 것도 sgcCustomIndy가 필요하지 않습니다.
| 기능 | API | 비고 |
|---|---|---|
| 인증 | GoogleCloudOptions.JWT, OnAuthToken, OnAuthTokenError | 서비스 계정 JWT입니다: 프로젝트 ID, 클라이언트 이메일, 개인 키. 세 클라이언트 모두 동일한 형태를 공유합니다. |
| Pub/Sub: 게시 & 가져오기 | Publish, Pull, Acknowledge, Seek | TsgcHTTPGoogleCloud_PubSub_Client. 토픽에 메시지를 보내고, 구독에서 메시지를 가져와 확인합니다. |
| Pub/Sub: 토픽 | CreateTopic, DeleteTopic, GetTopic, ListTopics | 코드에서 직접 토픽을 관리합니다. |
| Pub/Sub: 구독 | CreateSubscription, DeleteSubscripton, ListSubscriptions, ModifyAckDeadlineSubscription | ack 기한 및 push-config 변경을 포함한 구독 생명 주기 전체입니다. |
| Pub/Sub: 스냅샷 | CreateSnapshot, DeleteSnapshot, ListSnapshots | 나중에 재생할 수 있도록 구독의 확인 상태를 스냅샷으로 저장합니다. |
| Calendar: 캘린더 | NewCalendar, UpdateCalendar, DeleteCalendar, LoadCalendars | TsgcHTTPGoogleCloud_Calendar_Client. Google Calendar API v3의 캘린더 목록을 감쌉니다. |
| Calendar: 이벤트 | NewEvent, UpdateEvent, DeleteEvent, LoadEvents | 지정한 캘린더에서 이벤트를 생성, 변경, 삭제합니다. |
| Calendar: 동기화 | LoadCalendarsChanged, LoadEventsChanged, OnGetCalendar, OnGetCalendarEvent | 마지막 동기화 이후 변경된 캘린더와 이벤트를 위한 증분 동기화 훅입니다. |
| FCM: 푸시 | SendMessage | TsgcHTTPGoogleCloud_FCM_Client. 호출 한 번으로 프로젝트에 Firebase Cloud Messaging v1 페이로드를 전송합니다. |
| TLS와 로깅 | TLSOptions, LogFile | 세 Google Cloud 클라이언트 전체에서 공유됩니다. |
와이어 위의 공식 표준을, 지원하는 모든 컴파일러에서 동일한 소스로 사용합니다.
| 영역 | 내용 |
|---|---|
| HTTP/2 | RFC 9113이며, HPACK 헤더 압축과 ALPN 프로토콜 협상을 포함합니다. |
| gRPC | gRPC 와이어 프로토콜을 따르는, HTTP/2 스트림 위의 Protocol Buffers 페이로드입니다. |
| Google Cloud | Pub/Sub REST API, Google Calendar API v3, Firebase Cloud Messaging HTTP v1 API이며, 모두 Google 서비스 계정으로 인증합니다. |
| 플랫폼 | 다섯 클래스 모두 Windows Win32, Windows Win64, Linux64, macOS, iOS, Android를 지원합니다. |
| 의존성 | HTTP/2와 gRPC 클라이언트는 ALPN을 위해 sgcCustomIndy가 필요합니다. Google Cloud 클라이언트는 번들로 포함된 Core 런타임만 필요합니다. |
| 컴파일러 | Delphi와 C++ Builder 7부터 13까지. |
| 에디션 | HTTP/2는 sgcWebSockets Professional 에디션부터, gRPC는 Enterprise 에디션부터, Google Cloud 클라이언트는 Standard 에디션부터 함께 제공됩니다. |
| 라이선스 | 단독 제품입니다. sgcWebSockets Core 런타임이 함께 포함되며 전체 소스 코드가 제공됩니다. |