Delphi-Azure-SDK — IoT Hub, Service Bus, OAuth2 & mehr

Ein natives Pascal-Toolkit für Microsoft Azure: Geräte an Azure IoT Hub über MQTT oder AMQP anbinden, Nachrichten auf Azure Service Bus über AMQP 1.0 mit CBS-Authentifizierung senden / empfangen, Anfragen mit Azure AD OAuth2 und JWT signieren, mit Azure OpenAI sprechen und für jede Azure-REST-API streng typisierte Clients aus ihrer OpenAPI-Spezifikation erzeugen — alles aus einem stimmigen Satz sgcWebSockets-Komponenten.

Pascal-Komponenten für jede Azure-Oberfläche

Keine .NET-Runtime, keine Azure-CLI, keine PowerShell-Bridge — nur Delphi-Komponenten, die HTTPS, MQTT, AMQP und OAuth2 direkt mit den Azure-Endpunkten sprechen.

Microsoft Azure stellt Hunderte von REST-APIs und eine Handvoll Streaming-Protokolle bereit: HTTPS für Resource Manager, Cognitive Services, Storage, Cosmos DB und Azure OpenAI; MQTT 3.1.1 / 5 für Device-to-Cloud-Messaging beim IoT Hub; AMQP 1.0 mit CBS (Claims-Based Security) Authentifizierung für Service-Bus-Queues, -Topics und Event Hubs. sgcWebSockets liefert native Komponenten für alle drei Transporte — TsgcWSAPI_AzureIoT für IoT Hub, den AMQP-1.0-Client für Service Bus und TsgcHTTPClient mit OAuth2-/JWT-Helpern für alles Übrige — sowie den sgcOpenAPI-Codegenerator, der Pascal-Klassen für jede in OpenAPI dokumentierte Azure-API erzeugt.

Die Authentifizierung lässt sich sauber auf Pascal abbilden: Eine Tenant-ID, eine Application-(Client-)ID und entweder ein Client-Secret oder ein zertifikatsbasierter Private Key treiben den OAuth2-Client-Credentials-Flow von Azure AD; der entstehende JWT-Access-Token trägt einen oder mehrere https://management.azure.com/.default-Scopes (oder dienstspezifische Scopes) und wandert in jeden Authorization: Bearer-Header. Für Service Bus nutzt der CBS-Handshake denselben Token als AMQP-Frame auf einem speziellen $cbs-Link, bevor irgendein Daten-Link geöffnet wird. Die Bibliothek erledigt den Lebenszyklus automatisch.

Kernkomponenten

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Transport

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

Plattformen

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

Code-Generator

sgcOpenAPI verarbeitet Azure-REST-Spezifikationen und erzeugt Pascal-Client-Klassen.

First-Class-Wrapper + generierte SDKs

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 mit SAS-Token oder X.509-Mutual-TLS-Authentifizierung, Device Twin, Direct Methods, Cloud-to-Device-Messages, File Uploads.

Azure Service Bus (AMQP 1.0)

Der TsgcAMQPClient spricht AMQP 1.0 mit dem CBS-Authentifizierungs-Handshake, den Service Bus verlangt — Queues, Topics, Subscriptions, Sessions, geplante Nachrichten und Dead-Letter-Routing.

Azure Event Hubs

Derselbe AMQP-1.0-Client — partitioniertes Event-Streaming für durchsatzstarke Telemetrie-Aufnahme mit Consumer-Group-Offset-Management.

Azure Storage

Blob-, Queue- und Table-Storage über HTTPS mit Shared-Key- oder Azure-AD-Authentifizierung — Uploads, Downloads, SAS-URLs und Lease-Management.

Azure OpenAI

TsgcHTTP_API_OpenAI spricht mit deiner Azure-OpenAI-Ressource — Chat, Embeddings, Function Calling und Streaming, mit Deployment-IDs statt Modellnamen.

Azure Functions

HTTPS-POST-/GET-Aufrufe gegen Function-URLs, mit Function-Key-, System-Key- oder Azure-AD-Authentifizierung.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator und Document Intelligence — alle über HTTPS mit Bearer- oder Subscription-Key-Authentifizierung erreichbar.

Generierte Azure-SDKs

sgcOpenAPI erzeugt Pascal-Client-Klassen für jede Azure-REST-API, die ein OpenAPI-Dokument veröffentlicht — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps und Freunde.

Azure AD OAuth2 + JWT, durchgängig

Das moderne Identitätsmodell von Azure ist einheitlich: eine Anwendung in Azure AD registrieren, ihr die nötigen API-Berechtigungen erteilen (z. B. Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) und mit dem OAuth2-Client-Credentials-Flow (Service-zu-Service) oder dem Authorization-Code-Flow (Endnutzerdaten) authentifizieren. TsgcOAuth2Client treibt beides; TsgcJWTClient signiert die Client-Assertion, wenn du zertifikatsbasierte Authentifizierung statt eines geteilten Secrets bevorzugst. Der resultierende Bearer-Token speist jeden HTTPS-Call direkt, und der CBS-Frame auf Service Bus / Event Hubs nutzt denselben JWT erneut — keine doppelte Credential-Verwaltung.

Eine Nachricht über AMQP 1.0 an Azure Service Bus senden

Ein 25-Zeilen-Snippet, das sich mit einer Shared-Access-Signature authentifiziert, eine AMQP-1.0-Verbindung mit dem CBS-Handshake öffnet und in eine Queue veröffentlicht.

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-Geräteclients mit SAS-Tokens

Azure IoT Hub akzeptiert MQTT 3.1.1 oder 5 (mit dem IoT-Hub-spezifischen Topic-Schema) über TCP-Port 8883 oder WebSocket-Port 443. TsgcWSAPI_AzureIoT übernimmt die Verbindung, das SAS-Token-Signing, die Device-Twin-Synchronisation, den Dispatch von Direct Methods und den Cloud-to-Device-Message-Kanal — mit demselben Quelltext auf Windows, Linux und den Mobile-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;

Drei Schritte zu deinem ersten Azure-Call

1. Installieren

Zieh sgcWebSockets in deine Delphi- oder C++Builder-IDE — ein Package pro Delphi-Version 7 bis 13. Testversion herunterladen.

2. Azure-AD-App registrieren

Eine App-Registrierung anlegen, ein Client-Secret erzeugen oder ein Zertifikat hochladen und API-Berechtigungen für die Dienste vergeben, die du aufrufen willst.

3. Komponente platzieren

Für IoT TsgcWSAPI_AzureIoT, für Service Bus / Event Hubs den AMQP-1.0-Client, für alles REST TsgcHTTPClient + TsgcOAuth2Client.

Verwandte Blog-Beiträge

Azure Service Bus + CBS-Authentifizierung über AMQP 1.0

Schrittweiser Durchlauf des AMQP-CBS-Handshakes, den Azure Service Bus und Event Hubs verlangen.

Azure-IoT-Datei-Uploads

Den Blob-Storage-Upload-Flow von IoT Hub nutzen, um Telemetrie-Payloads jenseits des MQTT-Nachrichtenlimits zu transportieren.

Azure OpenAI aus RAD Studio

Richte TsgcHTTP_API_OpenAI auf dein Azure-OpenAI-Deployment für Chat, Embeddings und Function Calling.

Azure-Integrationen heute in deine Delphi-App bringen

Lade die Testversion herunter — IoT-Hub-, Service-Bus-(AMQP-1.0)- und Azure-OpenAI-Demos werden fertig zum Kompilieren ausgeliefert.