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

Microsoft Azure için yerel bir Pascal araç takımı: cihazları MQTT veya AMQP üzerinden Azure IoT Hub'a bağlayın, CBS kimlik doğrulamasıyla AMQP 1.0 üzerinden Azure Service Bus'ta mesaj gönderin / alın, istekleri Azure AD OAuth2 ve JWT ile imzalayın, Azure OpenAI ile konuşun ve herhangi bir Azure REST API'si için OpenAPI spesifikasyonundan güçlü tipli istemciler oluşturun. Tümü tutarlı bir sgcWebSockets bileşen kümesinden.

Her Azure yüzeyi için Pascal bileşenleri

.NET çalışma zamanı yok, Azure CLI yok, PowerShell köprüsü yok. Yalnızca Azure uç noktalarıyla doğrudan HTTPS, MQTT, AMQP ve OAuth2 konuşan Delphi bileşenleri.

Microsoft Azure yüzlerce REST API'si ve bir avuç akış protokolü sunar: kaynak yöneticisi, Cognitive Services, Storage, Cosmos DB ve Azure OpenAI için HTTPS; IoT Hub cihazdan buluta mesajlaşma için MQTT 3.1.1 / 5; Service Bus kuyrukları, konuları ve Event Hubs için CBS (Claims-Based Security) kimlik doğrulamalı AMQP 1.0. sgcWebSockets üç taşımanın tümü için yerel bileşenler sunar: IoT Hub için TsgcWSAPI_AzureIoT, Service Bus için AMQP 1.0 istemcisi ve diğer her şey için OAuth2 + JWT yardımcıları içeren TsgcHTTPClient. Ayrıca OpenAPI'de belgelenmiş herhangi bir Azure API'si için Pascal sınıfları üreten sgcOpenAPI kod üreteci.

Kimlik doğrulama Pascal'a temiz bir şekilde eşlenir: bir kiracı kimliği, bir uygulama (istemci) kimliği ve bir istemci gizli anahtarı veya sertifika destekli özel anahtar, Azure AD OAuth2 istemci kimlik bilgileri akışını yönetir; sonuçtaki JWT erişim belirteci bir veya daha fazla https://management.azure.com/.default (veya hizmete özgü) kapsam taşır ve her Authorization: Bearer başlığına girer. Service Bus için, CBS el sıkışması herhangi bir veri bağlantısı açılmadan önce aynı belirteci özel bir $cbs bağlantısında bir AMQP çerçevesi olarak yeniden kullanır. Kütüphane yaşam döngüsünü otomatik olarak yönetir.

Çekirdek bileşenler

TsgcWSAPI_AzureIoT, TsgcAMQPClient, TsgcHTTPClient, TsgcOAuth2Client, TsgcJWTClient.

Taşıma

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

Platformlar

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

Kod üreteci

sgcOpenAPI consumes Azure REST specifications and emits Pascal client classes.

Birinci sınıf sarmalayıcılar + oluşturulan SDK'lar

Azure IoT Hub

TsgcWSAPI_AzureIoT — SAS belirteci veya X.509 karşılıklı TLS kimlik doğrulamalı MQTT 3.1.1 / 5, cihaz twin, direct method'lar, buluttan cihaza mesajlar, dosya yüklemeleri.

Azure Service Bus (AMQP 1.0)

TsgcAMQPClient, Service Bus tarafından gereken CBS kimlik doğrulama el sıkışmasıyla AMQP 1.0 konuşur: kuyruklar, konular, abonelikler, oturumlar, zamanlanmış mesajlar ve dead-letter yönlendirme.

Azure Event Hubs

Aynı AMQP 1.0 istemcisi. Tüketici grubu offset yönetimiyle yüksek aktarım hızlı telemetri alımı için bölümlenmiş olay akışı.

Azure Storage

Shared Key veya Azure AD kimlik doğrulamasıyla HTTPS üzerinden Blob, Queue ve Table depolama: yüklemeler, indirmeler, SAS URL'leri ve kira yönetimi.

Azure OpenAI

TsgcHTTP_API_OpenAI, Azure OpenAI kaynağınızla konuşur: model adları yerine dağıtım kimlikleriyle sohbet, embeddings, işlev çağrısı ve akış.

Azure Functions

İşlev anahtarı, sistem anahtarı veya Azure AD kimlik doğrulamasıyla işlev URL'lerine karşı HTTPS POST / GET çağrıları.

Azure Cognitive Services

Speech (STT / TTS), Vision, Language, Translator ve Document Intelligence. Tümü Bearer veya abonelik anahtarı kimlik doğrulamasıyla HTTPS üzerinden erişilebilir.

Oluşturulan Azure SDK'ları

sgcOpenAPI, bir OpenAPI belgesi yayımlayan herhangi bir Azure REST API'si için Pascal istemci sınıfları üretir: Resource Manager, Key Vault, Cosmos DB, App Service, Logic Apps ve benzerleri.

Azure AD OAuth2 + JWT, uçtan uca

Azure'un modern kimlik modeli tek tiptir: Azure AD'de bir uygulama kaydedin, ihtiyaç duyduğu API izinlerini verin (örneğin Service Bus Data Owner, IoT Hub Data Contributor, Cognitive Services User) ve OAuth2 istemci kimlik bilgileri akışıyla (hizmetten hizmete) veya yetkilendirme kodu akışıyla (son kullanıcı verileri için) kimlik doğrulaması yapın. TsgcOAuth2Client her ikisini de yönetir; paylaşılan bir gizli anahtar yerine sertifika tabanlı kimlik doğrulamayı tercih ettiğinizde TsgcJWTClient istemci onaylamasını imzalar. Sonuçtaki bearer belirteci her HTTPS çağrısını doğrudan besler ve Service Bus / Event Hubs üzerindeki CBS çerçevesi aynı JWT'yi yeniden kullanır. Yinelenen kimlik bilgisi yönetimi yoktur.

AMQP 1.0 üzerinden Azure Service Bus'a mesaj gönderin

Bir paylaşılan erişim imzasıyla kimlik doğrulayan, CBS el sıkışmasıyla bir AMQP 1.0 bağlantısı açan ve bir kuyruğa yayınlayan 25 satırlık bir kod parçası.

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;

SAS belirteçleriyle MQTT cihaz istemcileri

Azure IoT Hub, TCP 8883 bağlantı noktası veya WebSocket 443 bağlantı noktası üzerinden MQTT 3.1.1 veya 5 (IoT Hub'a özgü konu şemasıyla) kabul eder. TsgcWSAPI_AzureIoT bağlantıyı, SAS belirteci imzalamayı, cihaz twin senkronizasyonunu, direct-method gönderimini ve buluttan cihaza mesaj kanalını ele alır. Windows, Linux ve mobil hedeflerde aynı kaynak kodla.

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;

İlk Azure çağrınıza üç adım

1. Kurun

sgcWebSockets'i Delphi veya C++Builder IDE'nize bırakın. Delphi 7'den 13'e her sürüm için bir paket. Denemeyi indirin.

2. Bir Azure AD uygulaması kaydedin

Bir uygulama kaydı oluşturun, bir istemci gizli anahtarı üretin veya bir sertifika yükleyin ve çağırmayı düşündüğünüz hizmetler için API izinleri verin.

3. Bir bileşen bırakın

IoT için TsgcWSAPI_AzureIoT, Service Bus / Event Hubs için AMQP 1.0 istemcisini, REST olan her şey için TsgcHTTPClient + TsgcOAuth2Client kullanın.

İlgili blog yazıları

AMQP 1.0 üzerinden Azure Service Bus + CBS kimlik doğrulama

Azure Service Bus ve Event Hubs tarafından gereken AMQP CBS el sıkışmasının adım adım anlatımı.

Azure IoT dosya yüklemeleri

MQTT mesaj sınırından daha büyük telemetri yüklerini göndermek için IoT Hub'ın blob depolama yükleme akışını kullanın.

RAD Studio'dan Azure OpenAI

Sohbet, embeddings ve işlev çağrısı için TsgcHTTP_API_OpenAI'yi Azure OpenAI dağıtımınıza yönlendirin.

Azure entegrasyonlarını bugün Delphi uygulamanızda yayınlayın

Denemeyi indirin. IoT Hub, Service Bus (AMQP 1.0) ve Azure OpenAI demoları derlemeye hazır gelir.