Delphi Azure SDK — IoT Hub, Service Bus, OAuth2 & 그 외

Microsoft Azure용 네이티브 Pascal 툴킷: MQTT 또는 AMQP를 통해 Azure IoT Hub에 장치 연결, CBS 인증이 있는 AMQP 1.0을 통해 Azure Service Bus에서 메시지 송수신, Azure AD OAuth2 및 JWT로 요청 서명, Azure OpenAI와 통신, 그리고 OpenAPI 사양에서 모든 Azure REST API에 대한 강력하게 타입이 지정된 클라이언트 생성 — 모두 응집력 있는 sgcWebSockets 컴포넌트 세트에서.

모든 Azure 표면을 위한 Pascal 컴포넌트

.NET 런타임, Azure CLI, PowerShell 브리지 없음 — Azure 엔드포인트에 직접 HTTPS, MQTT, AMQP 및 OAuth2를 사용하는 Delphi 컴포넌트일 뿐이에요.

Microsoft Azure는 수백 개의 REST API와 몇 가지 스트리밍 프로토콜을 노출해요: 리소스 매니저, Cognitive Services, 스토리지, Cosmos DB 및 Azure OpenAI용 HTTPS; IoT Hub 장치-투-클라우드 메시징용 MQTT 3.1.1 / 5; Service Bus 큐, 토픽 및 Event Hubs용 CBS(Claims-Based Security) 인증이 있는 AMQP 1.0. sgcWebSockets는 세 가지 전송 모두를 위한 네이티브 컴포넌트를 제공해요 — IoT Hub용 TsgcWSAPI_AzureIoT, Service Bus용 AMQP 1.0 클라이언트, 다른 모든 것에 대한 OAuth2 + JWT 헬퍼가 있는 TsgcHTTPClient — 그리고 OpenAPI에 문서화된 모든 Azure API에 대한 Pascal 클래스를 내보내는 sgcOpenAPI 코드 생성기.

인증은 Pascal에 깔끔하게 매핑돼요: 테넌트 ID, 애플리케이션(클라이언트) ID 및 클라이언트 시크릿 또는 인증서 기반 개인 키가 Azure AD OAuth2 클라이언트 자격 증명 흐름을 구동해요; 결과 JWT 액세스 토큰은 하나 이상의 https://management.azure.com/.default(또는 서비스별) 범위를 운반하며 모든 Authorization: Bearer 헤더로 들어가요. Service Bus의 경우 CBS 핸드셰이크는 데이터 링크가 열리기 전에 특수 $cbs 링크에서 AMQP 프레임으로 동일한 토큰을 재사용해요. 라이브러리가 라이프사이클을 자동으로 처리해요.

핵심 컴포넌트

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

전송

HTTPS / HTTP/2, TCP / WebSocket을 통한 MQTT 3.1.1 + 5, TCP / WebSocket을 통한 AMQP 1.0.

플랫폼

Windows, macOS, Linux, iOS, Android, .NET.

코드 생성기

sgcOpenAPI는 Azure REST 사양을 사용하여 Pascal 클라이언트 클래스를 내보내요.

일류 래퍼 + 생성된 SDK

Azure IoT Hub

TsgcWSAPI_AzureIoT — SAS 토큰 또는 X.509 상호 TLS 인증이 있는 MQTT 3.1.1 / 5, 장치 트윈, 직접 메서드, 클라우드-투-디바이스 메시지, 파일 업로드.

Azure Service Bus (AMQP 1.0)

TsgcAMQPClient는 Azure Service Bus에 필요한 CBS 인증 핸드셰이크가 있는 AMQP 1.0을 사용해요 — 큐, 토픽, 구독, 세션, 예약된 메시지 및 데드 레터 라우팅.

Azure Event Hubs

동일한 AMQP 1.0 클라이언트 — 소비자 그룹 오프셋 관리가 있는 고처리량 텔레메트리 수집을 위한 파티션된 이벤트 스트리밍.

Azure Storage

공유 키 또는 Azure AD 인증이 있는 HTTPS를 통한 Blob, 큐 및 테이블 스토리지 — 업로드, 다운로드, SAS URL 및 임대 관리.

Azure OpenAI

TsgcHTTP_API_OpenAI가 Azure OpenAI 리소스와 통신해요 — 채팅, 임베딩, 함수 호출 및 스트리밍, 모델 이름 대신 배포 ID 사용.

Azure Functions

함수 키, 시스템 키 또는 Azure AD 인증이 있는 함수 URL에 대한 HTTPS POST / GET 호출.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator 및 Document Intelligence — 모두 Bearer 또는 구독 키 인증이 있는 HTTPS를 통해 도달 가능.

생성된 Azure SDK

sgcOpenAPI는 OpenAPI 문서를 게시하는 모든 Azure REST API에 대해 Pascal 클라이언트 클래스를 내보내요 — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps 및 친구들.

Azure AD OAuth2 + JWT, 처음부터 끝까지

Azure의 최신 신원 모델은 균일해요: Azure AD에 애플리케이션을 등록하고, 필요한 API 권한(예: Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User)을 부여하고, OAuth2 클라이언트 자격 증명 흐름(서비스-투-서비스용) 또는 최종 사용자 데이터용 권한 부여 코드 흐름으로 인증하세요. TsgcOAuth2Client가 두 가지를 모두 구동해요; TsgcJWTClient는 공유 시크릿보다 인증서 기반 인증을 선호할 때 클라이언트 어설션에 서명해요. 결과 베어러 토큰은 모든 HTTPS 호출에 직접 공급되며, Service Bus / Event Hubs의 CBS 프레임은 동일한 JWT를 재사용해요 — 중복 자격 증명 관리 없음.

AMQP 1.0을 통해 Azure Service Bus에 메시지 보내기

공유 액세스 서명으로 인증하고, CBS 핸드셰이크로 AMQP 1.0 연결을 열고, 큐에 게시하는 25줄 스니펫.

uses
  sgcAMQP_Client, sgcAMQP_Classes_1_0;

var
  vAMQP: TsgcAMQPClient;
begin
  vAMQP := TsgcAMQPClient.Create(nil);
  try
    vAMQP.Version       := amqp100;
    vAMQP.Host          := 'my-namespace.servicebus.windows.net';
    vAMQP.Port          := 5671;
    vAMQP.TLS           := True;

    // CBS authentication with a SAS token
    vAMQP.Authentication.Mode        := amqpAuthCBS;
    vAMQP.Authentication.User        := 'RootManageSharedAccessKey';
    vAMQP.Authentication.Password    := 'SharedAccessSignature sr=...&sig=...&se=...&skn=RootManageSharedAccessKey';

    vAMQP.Connect;
    try
      vAMQP.SendMessage('orders',
        '{"orderId":1234,"total":42.50}');
    finally
      vAMQP.Disconnect;
    end;
  finally
    vAMQP.Free;
  end;
end;

SAS 토큰이 있는 MQTT 장치 클라이언트

Azure IoT Hub는 TCP 포트 8883 또는 WebSocket 포트 443을 통해 MQTT 3.1.1 또는 5(IoT Hub 특정 토픽 스키마 포함)를 수락해요. TsgcWSAPI_AzureIoT는 연결, SAS 토큰 서명, 장치 트윈 동기화, 직접 메서드 디스패치 및 클라우드-투-디바이스 메시지 채널을 처리해요 — Windows, Linux 및 모바일 대상에서 동일한 소스 코드로.

uses
  sgcWSAPI_AzureIoT;

var
  vIoT: TsgcWSAPI_AzureIoT;
begin
  vIoT := TsgcWSAPI_AzureIoT.Create(nil);
  try
    vIoT.Authentication.SharedAccessKey.HostName := 'my-hub.azure-devices.net';
    vIoT.Authentication.SharedAccessKey.DeviceId := 'device-001';
    vIoT.Authentication.SharedAccessKey.Key      := 'BASE64-DEVICE-KEY==';

    vIoT.OnMQTTConnect           := DoMQTTConnect;
    vIoT.OnMQTTPublish           := DoMQTTPublish;
    vIoT.OnDeviceTwinDesired     := DoDeviceTwinDesired;
    vIoT.OnDirectMethod          := DoDirectMethod;

    vIoT.Active := True;
  finally
    vIoT.Free;
  end;
end;

첫 Azure 호출까지 세 단계

1. 설치

sgcWebSockets를 Delphi 또는 C++Builder IDE에 드롭하세요 — Delphi 버전 7부터 13까지 버전당 하나의 패키지. 체험판 다운로드.

2. Azure AD 앱 등록

앱 등록을 생성하고, 클라이언트 시크릿을 생성하거나 인증서를 업로드하고, 호출하려는 서비스에 대한 API 권한을 부여하세요.

3. 컴포넌트 드롭

IoT의 경우 TsgcWSAPI_AzureIoT를 사용하고, Service Bus / Event Hubs의 경우 AMQP 1.0 클라이언트를 사용하고, REST의 경우 TsgcHTTPClient + TsgcOAuth2Client를 사용하세요.

관련 블로그 게시물

AMQP 1.0을 통한 Azure Service Bus + CBS 인증

Azure Service Bus 및 Event Hubs에 필요한 AMQP CBS 핸드셰이크의 단계별 워크스루.

Azure IoT 파일 업로드

IoT Hub의 blob 스토리지 업로드 흐름을 사용하여 MQTT 메시지 제한보다 큰 텔레메트리 페이로드를 배송하세요.

RAD Studio에서 Azure OpenAI

채팅, 임베딩 및 함수 호출을 위해 TsgcHTTP_API_OpenAI를 Azure OpenAI 배포로 가리키세요.

오늘 Delphi 앱에 Azure 통합을 출시하세요

체험판을 다운로드하세요 — IoT Hub, Service Bus (AMQP 1.0) 및 Azure OpenAI 데모가 컴파일 준비가 되어 있어요.