Azure SDK dla Delphi — IoT Hub, Service Bus, OAuth2 i więcej

Natywny zestaw narzędzi Pascala dla Microsoft Azure: łącz urządzenia z Azure IoT Hub nad MQTT lub AMQP, wysyłaj / odbieraj wiadomości na Azure Service Bus nad AMQP 1.0 z uwierzytelnianiem CBS, podpisuj żądania z Azure AD OAuth2 i JWT, rozmawiaj z Azure OpenAI i generuj silnie typowanych klientów dla dowolnego REST API Azure z jego specyfikacji OpenAPI — wszystko ze spójnego zestawu komponentów sgcWebSockets.

Komponenty Pascala dla każdej powierzchni Azure

Bez runtime .NET, bez Azure CLI, bez mostu PowerShell — tylko komponenty Delphi, które mówią HTTPS, MQTT, AMQP i OAuth2 bezpośrednio do endpointów Azure.

Microsoft Azure udostępnia setki REST API i garść protokołów strumieniowych: HTTPS dla resource manager, Cognitive Services, Storage, Cosmos DB i Azure OpenAI; MQTT 3.1.1 / 5 dla komunikatów IoT Hub urządzenie-do-chmury; AMQP 1.0 z uwierzytelnianiem CBS (Claims-Based Security) dla kolejek Service Bus, tematów i Event Hubs. sgcWebSockets dostarcza natywne komponenty dla wszystkich trzech transportów — TsgcWSAPI_AzureIoT dla IoT Hub, klienta AMQP 1.0 dla Service Bus i TsgcHTTPClient z pomocnikami OAuth2 + JWT dla wszystkiego innego — plus generator kodu sgcOpenAPI, który emituje klasy Pascala dla dowolnego API Azure udokumentowanego w OpenAPI.

Uwierzytelnianie mapuje się czysto na Pascala: tenant ID, application (client) ID i albo client secret, albo klucz prywatny oparty na certyfikacie napędzają przepływ client-credentials Azure AD OAuth2; wynikowy token dostępu JWT niesie jeden lub więcej zakresów https://management.azure.com/.default (lub specyficznych dla usługi) i trafia do każdego nagłówka Authorization: Bearer. Dla Service Bus handshake CBS używa ponownie tego samego tokenu jako ramki AMQP na specjalnym linku $cbs, zanim otwarty zostanie jakikolwiek link danych. Biblioteka automatycznie obsługuje cykl życia.

Komponenty rdzenia

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Transport

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

Platformy

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

Generator kodu

sgcOpenAPI konsumuje specyfikacje REST Azure i emituje klasy klienta Pascala.

Wrappery pierwszej klasy + wygenerowane SDK

Azure IoT Hub

TsgcWSAPI_AzureIoT — MQTT 3.1.1 / 5 z uwierzytelnianiem tokenem SAS lub wzajemnym TLS X.509, device twin, direct methods, wiadomości cloud-to-device, uploady plików.

Azure Service Bus (AMQP 1.0)

TsgcAMQPClient mówi AMQP 1.0 z handshake uwierzytelniania CBS wymaganym przez Service Bus — kolejki, tematy, subskrypcje, sesje, zaplanowane wiadomości i routing dead-letter.

Azure Event Hubs

Ten sam klient AMQP 1.0 — partycjonowane strumieniowanie zdarzeń dla wysokoprzepustowej akwizycji telemetrii, z zarządzaniem offsetami consumer-group.

Azure Storage

Blob, Queue i Table storage przez HTTPS z uwierzytelnianiem Shared Key lub Azure AD — uploady, pobieranie, SAS URL i zarządzanie lease.

Azure OpenAI

TsgcHTTP_API_OpenAI rozmawia z Twoim zasobem Azure OpenAI — chat, embeddings, wywoływanie funkcji i strumieniowanie, z deployment ID w miejsce nazw modeli.

Azure Functions

Wywołania HTTPS POST / GET wobec URL funkcji, z uwierzytelnianiem function-key, system-key lub Azure AD.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator i Document Intelligence — wszystkie osiągalne przez HTTPS z uwierzytelnianiem Bearer lub subscription-key.

Wygenerowane SDK Azure

sgcOpenAPI emituje klasy klienta Pascala dla dowolnego REST API Azure, który publikuje dokument OpenAPI — Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps i pokrewne.

Azure AD OAuth2 + JWT, end to end

Nowoczesny model tożsamości Azure jest jednolity: zarejestruj aplikację w Azure AD, przyznaj jej uprawnienia API, których potrzebuje (np. Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) i uwierzytelnij przepływem OAuth2 client-credentials (dla service-to-service) lub przepływem authorisation-code (dla danych użytkownika końcowego). TsgcOAuth2Client napędza oba; TsgcJWTClient podpisuje asercję klienta, gdy wolisz uwierzytelnianie oparte na certyfikacie niż współdzielony sekret. Wynikowy token bearer zasila każde wywołanie HTTPS bezpośrednio, a ramka CBS na Service Bus / Event Hubs ponownie używa tego samego JWT — bez duplikowanego zarządzania poświadczeniami.

Wyślij wiadomość do Azure Service Bus nad AMQP 1.0

25-liniowy fragment, który uwierzytelnia podpisem shared-access, otwiera połączenie AMQP 1.0 z handshake CBS i publikuje do kolejki.

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;

Klienci urządzeń MQTT z tokenami SAS

Azure IoT Hub akceptuje MQTT 3.1.1 lub 5 (ze specyficznym dla IoT Hub schematem tematów) nad portem TCP 8883 lub portem WebSocket 443. TsgcWSAPI_AzureIoT obsługuje połączenie, podpisywanie tokenu SAS, synchronizację device twin, dispatch direct-method i kanał wiadomości cloud-to-device — z tym samym kodem źródłowym na Windows, Linux i celach mobilnych.

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;

Trzy kroki do pierwszego wywołania Azure

1. Zainstaluj

Wrzuć sgcWebSockets do swojego IDE Delphi lub C++Builder — jeden pakiet na wersję Delphi 7 do 13. Pobierz wersję próbną.

2. Zarejestruj aplikację Azure AD

Utwórz rejestrację aplikacji, wygeneruj client secret lub wgraj certyfikat i przyznaj uprawnienia API dla usług, które zamierzasz wywoływać.

3. Upuść komponent

Dla IoT użyj TsgcWSAPI_AzureIoT, dla Service Bus / Event Hubs użyj klienta AMQP 1.0, dla wszystkiego REST użyj TsgcHTTPClient + TsgcOAuth2Client.

Powiązane wpisy na blogu

Azure Service Bus + uwierzytelnianie CBS nad AMQP 1.0

Przewodnik krok po kroku po handshake CBS AMQP wymaganym przez Azure Service Bus i Event Hubs.

Uploady plików Azure IoT

Użyj przepływu uploadu blob-storage IoT Hub, aby wysłać ładunki telemetrii większe niż limit wiadomości MQTT.

Azure OpenAI z RAD Studio

Wskaż TsgcHTTP_API_OpenAI na swoje wdrożenie Azure OpenAI dla chat, embeddings i wywoływania funkcji.

Dostarcz integracje Azure w swojej aplikacji Delphi już dziś

Pobierz wersję próbną — dema IoT Hub, Service Bus (AMQP 1.0) i Azure OpenAI są dostarczane gotowe do kompilacji.