Delphi Azure SDK — IoT Hub, Service Bus, OAuth2 & meer

Een native Pascal-toolkit voor Microsoft Azure: koppel devices aan Azure IoT Hub over MQTT of AMQP, verstuur / ontvang berichten op Azure Service Bus over AMQP 1.0 met CBS-authenticatie, onderteken requests met Azure AD OAuth2 en JWT, praat met Azure OpenAI, en genereer sterk getypeerde clients voor elke Azure REST-API uit de OpenAPI-specificatie — allemaal vanuit een samenhangende set sgcWebSockets-componenten.

Pascal-componenten voor elk Azure-oppervlak

Geen .NET-runtime, geen Azure CLI, geen PowerShell-bridge — alleen Delphi-componenten die rechtstreeks HTTPS, MQTT, AMQP en OAuth2 spreken met de Azure-endpoints.

Microsoft Azure biedt honderden REST-API’s en een handvol streaming-protocollen: HTTPS voor de Resource Manager, Cognitive Services, Storage, Cosmos DB en Azure OpenAI; MQTT 3.1.1 / 5 voor device-to-cloud-messaging van IoT Hub; AMQP 1.0 met CBS (Claims-Based Security)-authenticatie voor Service Bus-queues, topics en Event Hubs. sgcWebSockets levert native componenten voor alle drie de transporten — TsgcWSAPI_AzureIoT voor IoT Hub, de AMQP 1.0-client voor Service Bus, en TsgcHTTPClient met OAuth2- + JWT-helpers voor de rest — plus de sgcOpenAPI-codegenerator die Pascal-klassen genereert voor elke Azure-API met OpenAPI-documentatie.

Authenticatie mapt netjes op Pascal: een tenant-ID, een application (client) ID en óf een client secret óf een door een certificaat ondersteunde private key sturen de Azure AD OAuth2 client-credentials-flow; de resulterende JWT access-token draagt een of meer https://management.azure.com/.default- (of service-specifieke) scopes en gaat in elke Authorization: Bearer-header. Voor Service Bus hergebruikt de CBS-handshake dezelfde token als AMQP-frame op een speciale $cbs-link voordat er een data-link wordt geopend. De library regelt de lifecycle automatisch.

Kerncomponenten

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Transport

HTTPS / HTTP/2, MQTT 3.1.1 + 5 over TCP / WebSocket, AMQP 1.0 over TCP / WebSocket.

Platforms

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

Codegenerator

sgcOpenAPI verwerkt Azure REST-specificaties en levert Pascal-clientklassen.

First-class wrappers + gegenereerde SDK’s

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 met SAS-token- of X.509-mutual-TLS-authenticatie, device twin, direct methods, cloud-to-device-berichten, file uploads.

Azure Service Bus (AMQP 1.0)

De TsgcAMQPClient spreekt AMQP 1.0 met de CBS-authenticatie-handshake die Service Bus vereist — queues, topics, subscriptions, sessions, scheduled messages en dead-letter routing.

Azure Event Hubs

Dezelfde AMQP 1.0-client — partitioned event streaming voor high-throughput telemetrie-ingest, met consumer-group offset-management.

Azure Storage

Blob-, Queue- en Table-storage via HTTPS met Shared Key- of Azure AD-authenticatie — uploads, downloads, SAS-URLs en lease-management.

Azure OpenAI

TsgcHTTP_API_OpenAI praat met je Azure OpenAI-resource — chat, embeddings, function calling en streaming, met deployment-IDs in plaats van modelnamen.

Azure Functions

HTTPS POST- / GET-invocaties tegen function-URLs, met function-key-, system-key- of Azure AD-authenticatie.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator en Document Intelligence — allemaal bereikbaar via HTTPS met Bearer- of subscription-key-authenticatie.

Gegenereerde Azure SDK’s

sgcOpenAPI levert Pascal-clientklassen voor elke Azure REST-API die een OpenAPI-document publiceert — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps en vrienden.

Azure AD OAuth2 + JWT, end-to-end

Het moderne identity-model van Azure is uniform: registreer een applicatie in Azure AD, geef die de benodigde API-permissions (bv. Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) en authenticeer met de OAuth2 client-credentials-flow (service-to-service) of de authorisation-code-flow (eindgebruikersdata). TsgcOAuth2Client stuurt beide; TsgcJWTClient ondertekent de client-assertion wanneer je certificate-based authentication verkiest boven een shared secret. De resulterende bearer-token voedt elke HTTPS-call direct, en het CBS-frame op Service Bus / Event Hubs hergebruikt dezelfde JWT — geen dubbel credential-beheer.

Verstuur een bericht naar Azure Service Bus over AMQP 1.0

Een snippet van 25 regels dat zich authenticeert met een shared-access-signature, een AMQP 1.0-verbinding opent met de CBS-handshake en publiceert in een queue.

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;

MQTT-device clients met SAS tokens

Azure IoT Hub accepteert MQTT 3.1.1 of 5 (met het IoT Hub-specifieke topic-schema) over TCP-poort 8883 of WebSocket-poort 443. TsgcWSAPI_AzureIoT regelt de verbinding, het SAS-token-signing, de device-twin-synchronisatie, de dispatch van direct methods en het cloud-to-device-messagekanaal — met dezelfde broncode op Windows, Linux en de mobiele targets.

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;

Drie stappen naar je eerste Azure-call

1. Installeren

Plaats sgcWebSockets in je Delphi- of C++Builder-IDE — één package per Delphi-versie 7 tot en met 13. Download de proefversie.

2. Registreer een Azure AD-app

Maak een app registration, genereer een client secret of upload een certificaat en geef API-permissions voor de services die je wilt aanroepen.

3. Plaats een component

Voor IoT gebruik je TsgcWSAPI_AzureIoT, voor Service Bus / Event Hubs de AMQP 1.0-client, voor alles REST TsgcHTTPClient + TsgcOAuth2Client.

Gerelateerde blogposts

Azure Service Bus + CBS-authenticatie over AMQP 1.0

Stapsgewijze walkthrough van de AMQP CBS-handshake die Azure Service Bus en Event Hubs vereisen.

Azure IoT file uploads

Gebruik IoT Hub’s blob-storage upload-flow om telemetrie-payloads groter dan de MQTT-berichtlimiet te versturen.

Azure OpenAI vanuit RAD Studio

Richt TsgcHTTP_API_OpenAI op je Azure OpenAI-deployment voor chat, embeddings en function calling.

Lever vandaag Azure-integraties in je Delphi-app

Download de proefversie — IoT Hub-, Service Bus- (AMQP 1.0) en Azure OpenAI-demo’s worden kant-en-klaar geleverd om te compileren.