SDK Azure para Delphi — IoT Hub, Service Bus, OAuth2 y más

Un toolkit Pascal nativo para Microsoft Azure: conecta dispositivos a Azure IoT Hub sobre MQTT o AMQP, envía / recibe mensajes en Azure Service Bus sobre AMQP 1.0 con autenticación CBS, firma peticiones con Azure AD OAuth2 y JWT, habla con Azure OpenAI, y genera clientes fuertemente tipados para cualquier API REST de Azure desde su especificación OpenAPI — todo desde un conjunto coherente de componentes sgcWebSockets.

Componentes Pascal para cada superficie de Azure

Sin runtime .NET, sin Azure CLI, sin puente PowerShell — sólo componentes Delphi que hablan HTTPS, MQTT, AMQP y OAuth2 directamente con los endpoints de Azure.

Microsoft Azure expone cientos de APIs REST y un puñado de protocolos en streaming: HTTPS para el Resource Manager, Cognitive Services, Storage, Cosmos DB y Azure OpenAI; MQTT 3.1.1 / 5 para mensajería device-to-cloud de IoT Hub; AMQP 1.0 con autenticación CBS (Claims-Based Security) para colas, topics de Service Bus y Event Hubs. sgcWebSockets incluye componentes nativos para los tres transportes — TsgcWSAPI_AzureIoT para IoT Hub, el cliente AMQP 1.0 para Service Bus, y TsgcHTTPClient con helpers OAuth2 + JWT para todo lo demás — además del generador de código sgcOpenAPI que emite clases Pascal para cualquier API de Azure documentada en OpenAPI.

La autenticación se mapea limpiamente a Pascal: un tenant ID, un application (client) ID y o bien un client secret o bien una clave privada respaldada por certificado controlan el flujo OAuth2 client-credentials de Azure AD; el token JWT resultante lleva uno o más scopes https://management.azure.com/.default (o específicos del servicio) y va en cada cabecera Authorization: Bearer. Para Service Bus, el handshake CBS reutiliza el mismo token como un frame AMQP en un link especial $cbs antes de abrir cualquier link de datos. La librería gestiona el ciclo de vida automáticamente.

Componentes principales

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Transporte

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

Plataformas

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

Generador de código

sgcOpenAPI consume las especificaciones REST de Azure y emite clases cliente Pascal.

Wrappers de primera + SDKs generados

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 con autenticación por SAS-token o TLS mutuo X.509, device twin, métodos directos, mensajes cloud-to-device, subidas de archivos.

Azure Service Bus (AMQP 1.0)

El TsgcAMQPClient habla AMQP 1.0 con el handshake de autenticación CBS que requiere Service Bus — colas, topics, suscripciones, sesiones, mensajes programados y enrutado a dead-letter.

Azure Event Hubs

Mismo cliente AMQP 1.0 — streaming de eventos particionado para ingesta de telemetría de alto throughput, con gestión de offsets por consumer-group.

Azure Storage

Blob, Queue y Table storage vía HTTPS con autenticación Shared Key o Azure AD — subidas, descargas, URLs SAS y gestión de leases.

Azure OpenAI

TsgcHTTP_API_OpenAI habla con tu recurso Azure OpenAI — chat, embeddings, function calling y streaming, con deployment IDs en lugar de nombres de modelo.

Azure Functions

Invocaciones HTTPS POST / GET contra URLs de función, con autenticación function-key, system-key o Azure AD.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator y Document Intelligence — todos accesibles por HTTPS con autenticación Bearer o subscription-key.

SDKs Azure generados

sgcOpenAPI emite clases cliente Pascal para cualquier API REST de Azure que publique un documento OpenAPI — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps y compañía.

Azure AD OAuth2 + JWT, de extremo a extremo

El modelo de identidad moderno de Azure es uniforme: registra una aplicación en Azure AD, concédele los permisos de API que necesita (p. ej. Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) y autentícate con el flujo OAuth2 client-credentials (para servicio-a-servicio) o el flujo authorization-code (para datos de usuario final). TsgcOAuth2Client controla ambos; TsgcJWTClient firma la aserción de cliente cuando prefieres autenticación basada en certificado en vez de un secreto compartido. El bearer token resultante alimenta cada llamada HTTPS directamente, y el frame CBS de Service Bus / Event Hubs reutiliza el mismo JWT — sin gestión duplicada de credenciales.

Envía un mensaje a Azure Service Bus sobre AMQP 1.0

Un fragmento de 25 líneas que se autentica con una shared-access-signature, abre una conexión AMQP 1.0 con el handshake CBS y publica en una cola.

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;

Clientes de dispositivo MQTT con SAS tokens

Azure IoT Hub acepta MQTT 3.1.1 o 5 (con el esquema de topics específico de IoT Hub) sobre el puerto TCP 8883 o WebSocket 443. TsgcWSAPI_AzureIoT gestiona la conexión, la firma del SAS-token, la sincronización del device twin, el dispatch de métodos directos y el canal de mensajes cloud-to-device — con el mismo código fuente en Windows, Linux y los targets móviles.

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;

Tres pasos hasta tu primera llamada Azure

1. Instalar

Suelta sgcWebSockets en tu IDE de Delphi o C++Builder — un paquete por versión de Delphi 7 hasta 13. Descarga la prueba.

2. Registrar una app de Azure AD

Crea una app registration, genera un client secret o sube un certificado, y concede permisos de API para los servicios que vayas a llamar.

3. Arrastra un componente

Para IoT usa TsgcWSAPI_AzureIoT, para Service Bus / Event Hubs usa el cliente AMQP 1.0, para cualquier REST usa TsgcHTTPClient + TsgcOAuth2Client.

Entradas de blog relacionadas

Azure Service Bus + autenticación CBS sobre AMQP 1.0

Recorrido paso a paso del handshake AMQP CBS que requieren Azure Service Bus y Event Hubs.

Subidas de archivos en Azure IoT

Usa el flujo de subida blob-storage de IoT Hub para enviar payloads de telemetría más grandes que el límite del mensaje MQTT.

Azure OpenAI desde RAD Studio

Apunta TsgcHTTP_API_OpenAI a tu deployment de Azure OpenAI para chat, embeddings y function calling.

Lanza integraciones Azure en tu app Delphi hoy

Descarga la prueba — las demos de IoT Hub, Service Bus (AMQP 1.0) y Azure OpenAI se entregan listas para compilar.