SDK Azure para Delphi — IoT Hub, Service Bus, OAuth2 & mais

Um toolkit Pascal nativo para Microsoft Azure: conecte dispositivos ao Azure IoT Hub via MQTT ou AMQP, envie / receba mensagens no Azure Service Bus via AMQP 1.0 com autenticação CBS, assine requisições com Azure AD OAuth2 e JWT, fale com Azure OpenAI e gere clientes fortemente tipados para qualquer REST API do Azure a partir de sua especificação OpenAPI — tudo a partir de um conjunto coerente de componentes sgcWebSockets.

Componentes Pascal para cada superfície Azure

Sem runtime .NET, sem Azure CLI, sem bridge PowerShell — só componentes Delphi que falam HTTPS, MQTT, AMQP e OAuth2 direto com os endpoints do Azure.

O Microsoft Azure expõe centenas de REST APIs e um punhado de protocolos de streaming: HTTPS para Resource Manager, Cognitive Services, Storage, Cosmos DB e Azure OpenAI; MQTT 3.1.1 / 5 para a mensageria device-to-cloud do IoT Hub; AMQP 1.0 com autenticação CBS (Claims-Based Security) para filas, tópicos e Event Hubs do Service Bus. O sgcWebSockets entrega componentes nativos para os três transportes — TsgcWSAPI_AzureIoT para IoT Hub, o cliente AMQP 1.0 para Service Bus e TsgcHTTPClient com helpers OAuth2 + JWT para todo o resto — mais o gerador de código sgcOpenAPI, que emite classes Pascal para qualquer API Azure documentada em OpenAPI.

A autenticação se mapeia limpamente para Pascal: um tenant ID, um application (client) ID e um client secret ou uma chave privada apoiada em certificado dirigem o fluxo OAuth2 client-credentials do Azure AD; o JWT access token resultante carrega um ou mais escopos https://management.azure.com/.default (ou específicos do serviço) e vai em cada cabeçalho Authorization: Bearer. Para o Service Bus, o handshake CBS reutiliza o mesmo token como um frame AMQP em um link especial $cbs antes que qualquer data link seja aberto. A biblioteca cuida do ciclo de vida automaticamente.

Componentes principais

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.

Gerador de código

O sgcOpenAPI consome especificações REST do Azure e emite classes de cliente Pascal.

Wrappers de primeira classe + SDKs gerados

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 com autenticação por token SAS ou TLS mútuo X.509, device twin, direct methods, mensagens cloud-to-device, upload de arquivos.

Azure Service Bus (AMQP 1.0)

O TsgcAMQPClient fala AMQP 1.0 com o handshake de autenticação CBS exigido pelo Service Bus — filas, tópicos, subscriptions, sessions, mensagens agendadas e roteamento dead-letter.

Azure Event Hubs

O mesmo cliente AMQP 1.0 — streaming de eventos particionado para ingestão de telemetria de alto throughput, com gerenciamento de offset por consumer group.

Azure Storage

Storage Blob, Queue e Table via HTTPS com autenticação Shared Key ou Azure AD — uploads, downloads, URLs SAS e gerenciamento de lease.

Azure OpenAI

O TsgcHTTP_API_OpenAI conversa com seu recurso Azure OpenAI — chat, embeddings, function calling e streaming, com deployment IDs no lugar de nomes de modelo.

Azure Functions

Invocações HTTPS POST / GET contra URLs de function, com autenticação por function-key, system-key ou Azure AD.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator e Document Intelligence — todos acessíveis via HTTPS com autenticação Bearer ou subscription key.

SDKs Azure gerados

O sgcOpenAPI emite classes de cliente Pascal para qualquer REST API do Azure que publique um documento OpenAPI — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps e companhia.

Azure AD OAuth2 + JWT, de ponta a ponta

O modelo de identidade moderno do Azure é uniforme: registre uma aplicação no Azure AD, conceda as permissões de API que ela precisa (por exemplo, Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) e autentique com o fluxo OAuth2 client-credentials (para service-to-service) ou com o fluxo authorization-code (para dados do usuário final). TsgcOAuth2Client dirige ambos; TsgcJWTClient assina a assertion do cliente quando você prefere autenticação baseada em certificado em vez de um shared secret. O bearer token resultante alimenta cada chamada HTTPS direto, e o frame CBS em Service Bus / Event Hubs reutiliza o mesmo JWT — sem gestão duplicada de credenciais.

Envie uma mensagem ao Azure Service Bus via AMQP 1.0

Um snippet de 25 linhas que autentica com uma shared-access-signature, abre uma conexão AMQP 1.0 com o handshake CBS e publica em uma fila.

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 MQTT de dispositivo com tokens SAS

O Azure IoT Hub aceita MQTT 3.1.1 ou 5 (com o esquema de tópicos específico do IoT Hub) na porta TCP 8883 ou na porta WebSocket 443. O TsgcWSAPI_AzureIoT trata a conexão, a assinatura do token SAS, a sincronização de device twin, o despacho de direct methods e o canal de mensagens cloud-to-device — com o mesmo código-fonte em Windows, Linux e nos alvos mobile.

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;

Três passos para sua primeira chamada Azure

1. Instale

Coloque o sgcWebSockets na sua IDE Delphi ou C++Builder — um pacote por versão Delphi 7 a 13. Baixe o trial.

2. Registre um app no Azure AD

Crie um app registration, gere um client secret ou suba um certificado, e conceda permissões de API para os serviços que você pretende chamar.

3. Arraste um componente

Para IoT use TsgcWSAPI_AzureIoT, para Service Bus / Event Hubs use o cliente AMQP 1.0, para qualquer coisa REST use TsgcHTTPClient + TsgcOAuth2Client.

Posts de blog relacionados

Azure Service Bus + autenticação CBS sobre AMQP 1.0

Passo a passo do handshake CBS exigido pelo Azure Service Bus e Event Hubs.

Uploads de arquivos no Azure IoT

Use o fluxo de upload em blob storage do IoT Hub para enviar payloads de telemetria maiores que o limite de mensagem MQTT.

Azure OpenAI a partir do RAD Studio

Aponte o TsgcHTTP_API_OpenAI para seu deployment Azure OpenAI para chat, embeddings e function calling.

Entregue integrações Azure no seu app Delphi hoje

Baixe o trial — demos de IoT Hub, Service Bus (AMQP 1.0) e Azure OpenAI vêm prontas para compilar.