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

Un toolkit Pascal natif pour Microsoft Azure : connectez des appareils à Azure IoT Hub via MQTT ou AMQP, envoyez / recevez des messages sur Azure Service Bus via AMQP 1.0 avec authentification CBS, signez des requêtes avec Azure AD OAuth2 et JWT, parlez à Azure OpenAI, et générez des clients fortement typés pour toute API REST Azure à partir de sa spécification OpenAPI — le tout depuis un ensemble cohérent de composants sgcWebSockets.

Composants Pascal pour chaque surface Azure

Pas de runtime .NET, pas d'Azure CLI, pas de pont PowerShell — juste des composants Delphi qui parlent HTTPS, MQTT, AMQP et OAuth2 directement aux endpoints Azure.

Microsoft Azure expose des centaines d'API REST et une poignée de protocoles streaming : HTTPS pour le Resource Manager, Cognitive Services, Storage, Cosmos DB et Azure OpenAI ; MQTT 3.1.1 / 5 pour le messaging device-to-cloud d'IoT Hub ; AMQP 1.0 avec authentification CBS (Claims-Based Security) pour les files Service Bus, topics et Event Hubs. sgcWebSockets fournit des composants natifs pour les trois transports — TsgcWSAPI_AzureIoT pour IoT Hub, le client AMQP 1.0 pour Service Bus, et TsgcHTTPClient avec helpers OAuth2 + JWT pour tout le reste — plus le générateur de code sgcOpenAPI qui émet des classes Pascal pour toute API Azure documentée en OpenAPI.

L'authentification se mappe proprement sur Pascal : un tenant ID, un application (client) ID et soit un client secret soit une clé privée adossée à un certificat pilotent le flux OAuth2 client-credentials d'Azure AD ; le token JWT résultant porte un ou plusieurs scopes https://management.azure.com/.default (ou propres au service) et part dans chaque en-tête Authorization: Bearer. Pour Service Bus, le handshake CBS réutilise le même token comme une trame AMQP sur un lien $cbs spécial avant l'ouverture du moindre lien de données. La bibliothèque gère le cycle de vie automatiquement.

Composants principaux

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Transport

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

Plateformes

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

Générateur de code

sgcOpenAPI consomme les spécifications REST Azure et émet des classes client Pascal.

Wrappers de première classe + SDK générés

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 avec authentification SAS-token ou TLS mutuel X.509, device twin, méthodes directes, messages cloud-to-device, uploads de fichiers.

Azure Service Bus (AMQP 1.0)

Le TsgcAMQPClient parle AMQP 1.0 avec le handshake d'authentification CBS exigé par Service Bus — files, topics, subscriptions, sessions, messages planifiés et routage dead-letter.

Azure Event Hubs

Le même client AMQP 1.0 — streaming d'événements partitionné pour l'ingestion de télémétrie haut débit, avec gestion des offsets par consumer-group.

Azure Storage

Stockage Blob, Queue et Table via HTTPS avec authentification Shared Key ou Azure AD — uploads, downloads, URL SAS et gestion des leases.

Azure OpenAI

TsgcHTTP_API_OpenAI parle à votre ressource Azure OpenAI — chat, embeddings, function calling et streaming, avec des deployment IDs à la place des noms de modèle.

Azure Functions

Invocations HTTPS POST / GET vers des URL de function, avec authentification function-key, system-key ou Azure AD.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator et Document Intelligence — tous accessibles via HTTPS avec authentification Bearer ou subscription-key.

SDK Azure générés

sgcOpenAPI émet des classes client Pascal pour toute API REST Azure qui publie un document OpenAPI — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps et compagnie.

Azure AD OAuth2 + JWT, de bout en bout

Le modèle d'identité moderne d'Azure est uniforme : enregistrez une application dans Azure AD, accordez-lui les permissions d'API nécessaires (p. ex. Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) et authentifiez-vous avec le flux OAuth2 client-credentials (service-à-service) ou le flux authorization-code (données end-user). TsgcOAuth2Client pilote les deux ; TsgcJWTClient signe l'assertion client lorsque vous préférez l'authentification par certificat à un secret partagé. Le bearer token résultant alimente directement chaque appel HTTPS, et la trame CBS sur Service Bus / Event Hubs réutilise le même JWT — pas de gestion de credentials en double.

Envoyer un message à Azure Service Bus via AMQP 1.0

Un snippet de 25 lignes qui s'authentifie avec une shared-access-signature, ouvre une connexion AMQP 1.0 avec le handshake CBS et publie dans une file.

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;

Clients d'appareil MQTT avec des SAS tokens

Azure IoT Hub accepte MQTT 3.1.1 ou 5 (avec le schéma de topics spécifique à IoT Hub) sur le port TCP 8883 ou WebSocket 443. TsgcWSAPI_AzureIoT prend en charge la connexion, la signature du SAS-token, la synchronisation du device twin, le dispatch des méthodes directes et le canal de messages cloud-to-device — avec le même code source sur Windows, Linux et les cibles mobiles.

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;

Trois étapes vers votre premier appel Azure

1. Installer

Déposez sgcWebSockets dans votre IDE Delphi ou C++Builder — un package par version de Delphi de 7 à 13. Téléchargez l'essai.

2. Enregistrer une app Azure AD

Créez une app registration, générez un client secret ou téléversez un certificat, et accordez les permissions d'API pour les services que vous comptez appeler.

3. Déposez un composant

Pour IoT utilisez TsgcWSAPI_AzureIoT, pour Service Bus / Event Hubs utilisez le client AMQP 1.0, pour toute API REST utilisez TsgcHTTPClient + TsgcOAuth2Client.

Articles de blog connexes

Azure Service Bus + authentification CBS sur AMQP 1.0

Pas-à-pas du handshake AMQP CBS exigé par Azure Service Bus et Event Hubs.

Uploads de fichiers Azure IoT

Utilisez le flux d'upload blob-storage d'IoT Hub pour expédier des payloads de télémétrie plus volumineux que la limite du message MQTT.

Azure OpenAI depuis RAD Studio

Pointez TsgcHTTP_API_OpenAI vers votre deployment Azure OpenAI pour chat, embeddings et function calling.

Livrez des intégrations Azure dans votre app Delphi dès aujourd'hui

Téléchargez l'essai — les démos IoT Hub, Service Bus (AMQP 1.0) et Azure OpenAI sont livrées prêtes à compiler.