HTTP/2가 기반으로 삼는 확장.
- 클라이언트가 말할 수 있는 프로토콜을 알리면, 서버가 TLS 핸드셰이크 중에 그중 하나를 골라요.
- 이 협상은 HTTP 컴포넌트가 닿을 수 있는 범위보다 아래인 TLS 계층 안에서 일어나요.
- 표준 Indy 라이브러리는 이를 지원하지 않아요. 커스텀 Indy 라이브러리는 ALPN을, 그리고 그에 따른 HTTP/2를 사용할 수 있게 해요.
표준 Indy 라이브러리는 ALPN을 지원하지 않고, OpenSSL 1.1.1이나 3.x를 통한 TLS 1.3도 지원하지 않아요. sgcWebSockets Enterprise는 이를 지원하는 커스텀 Indy 빌드를 함께 제공해요. sgcCustomIndy는 바로 그 빌드를 sgcWebSockets Core로 가져오며, IDE에 이미 있는 Indy 옆에 설치돼요.
아래 항목은 모두 그 위에 놓인 컴포넌트가 아니라 Indy 계층 자체의 기능이에요. Indy 라이브러리를 교체하는 것이 이 기능들을 켜는 방법인 이유가 바로 여기에 있어요.
IDE의 Indy 라이브러리를 교체하는 일은 아무도 하고 싶어 하지 않는 작업이라, 이 팩은 그것을 요구하지 않아요. 커스텀 Indy 파일에는 sgc 접두사가 붙어서, IdGlobal 은 sgcIdGlobal이 되고, 두 버전이 문제없이 공존해요.
IDE에 이미 있는 Indy가 무엇이든 설치된 채로, 등록된 채로 남아요. 패키지를 제거했다가 나중에 되돌리거나 IDE 프로필을 두 개 유지해야 하는 단계는 없어요.
표준 Indy 라이브러리로 이미 빌드하던 것은 바이트 단위로 동일한 유닛을 대상으로 계속 컴파일돼요. 커스텀 빌드는 추가되는 것일 뿐, 교체가 아니에요.
커스텀 Indy 라이브러리 사용 여부는 SGC_CUSTOM_INDY 지시자로 제어하며, 이 지시자는 sgcVer.inc에 있어요. 커스텀 빌드를 다시 끄는 것도 한 줄 수정이에요.
이름을 바꾼 Indy 유닛은 라이선스와 함께 소스로 제공되므로, 프로젝트 설정으로 컴파일되고 라이브러리의 나머지 부분처럼 디버거에서 단계별로 추적할 수 있어요.
Delphi 7에는 더 오래된 Indy가 들어 있어요. 커스텀 Indy 라이브러리가 함께 들어 있으므로, 찾아서 IDE에 설치하고 컴포넌트와 버전을 맞춰 관리해야 할 Indy 10이 없어요.
커스텀 Indy 라이브러리는 새로 나온 것이 아니에요. sgcWebSockets Enterprise가 지금까지 기반으로 삼아 온 바로 그 라이브러리이며, 이 팩은 sgcWebSockets Core에서 그것에 이르는 경로예요.
설정할 것이 없어요. sgcIdSSLOpenSSL_Static 유닛을 uses 절에, 예를 들어 메인 .dpr에 추가하면, 다음 실행부터 애플리케이션이 실행 파일에 링크된 OpenSSL을 사용해요.
uses sgcIdSSLOpenSSL_Static; // That is the whole configuration. No compiler // directive to enable, no OpenSSL API version to // choose. Remove the unit again and the application // goes back to loading the OpenSSL DLLs.
{$DEFINE SGC_CUSTOM_INDY}
// One define controls the custom Indy library.
// Static OpenSSL linking has no effect without it,
// and turning the custom build off again is a
// one line change.
정적 링크를 쓸 수 없는 버전이나 플랫폼에서도 문제가 생기지 않아요. 애플리케이션은 이전처럼 OpenSSL DLL을 계속 로드하므로, 같은 소스가 어디서나 빌드돼요. 정적 링크가 적용되는 범위
이 형식의 오브젝트 파일을 링크할 수 있는 곳.
이전 버전은 잘못된 오브젝트 파일 형식이라고 보고하므로, 정적 링크는 Delphi XE2부터 시작해요.
커스텀 Indy 라이브러리를 사용하지 않으면 정적 링크는 효과가 없어요.
sgcCustomIndy는 sgcWebSockets Core 라이선스에 붙어요. Core 주문 안에서 첫 번째 추천 애드온으로 제공되므로, sgcAI, sgcMQ, sgcSocial을 주문하는 도중에 클릭 한 번으로 추가할 수 있고, 같은 라이선스로 함께 도착해요.
Enterprise가 사용하는 것과 동일한 커스텀 빌드를 Core 주문 중에 추가해요. 전체 소스 코드와 1년간의 업데이트가 포함돼요.
WebAuthn 지원이 있는 sgcAuth 및 HTTP/2, gRPC 클라이언트가 있는 sgcHTTP 는 이 팩이 필요하므로, 둘 중 어느 쪽을 주문해도 sgcCustomIndy가 항상 포함돼요. 팩의 표시 가격에 이미 포함되어 있어요.
커스텀 Indy 라이브러리는 sgcWebSockets Enterprise와 eSeGeCe All-Access의 구성 요소이며 기본으로 활성화되어 있어요. 둘 중 하나를 보유하고 있다면 추가할 것이 없어요. Standard와 Professional은 표준 Indy 라이브러리를 사용해요.
혼동하기 쉬운 제품이 있어요: sgcIndy는 IDE의 Indy를 대신해 설치하는 전체 Indy 패키지로, 이것과는 다른 제품이에요. 필요한 에디션 확인하기
가격 보기ALPN과 HTTP/2, OpenSSL 1.1.1 및 3.x 기반 TLS 1.3, Windows에서 실행 파일 안에 링크되는 OpenSSL. 이 모든 것이 이미 갖고 있는 Indy 옆에 나란히 놓여요. sgcWebSockets 체험판에는 커스텀 Indy를 포함한 전체 Enterprise 기능이 들어 있어요.
sgcCustomIndy는 sgcWebSockets Core 런타임 위에 만들어진 팩 중 하나예요. 모두 같은 규칙을 따르고, 전체 소스 코드가 포함되며, 로열티 없이 배포할 수 있어요.
sgcAI, sgcMQ, sgcSocial, sgcCustomIndy에 함께 들어 있는 런타임이에요. HTTP, TLS, JSON, TCP, UDP를 제공하며, 이 팩이 붙는 라이선스예요.
HTTP 서버, HTTP/2 클라이언트, gRPC 클라이언트, Google Cloud Pub/Sub, Calendar, FCM 클라이언트예요. sgcHTTP 주문에는 항상 sgcCustomIndy가 포함돼요.
OAuth2 클라이언트, JWT 클라이언트, WebAuthn 지원이에요. sgcAuth 주문에는 항상 sgcCustomIndy가 포함돼요.
Delphi와 C++ Builder용 AI, LLM, MCP 컴포넌트이며, sgcWebSockets Core 런타임이 함께 들어 있어요.
MQTT, AMQP 0.9.1 및 1.0, Apache Kafka, STOMP 클라이언트이며, sgcWebSockets Core 런타임이 함께 들어 있어요.
팩, 애드온 등