Freigeben über


Azure SDK Core Library für C++

Azure::Core (azure-core) stellt gemeinsam genutzte Grundtypen, Abstraktionen und Hilfsprogramme für moderne Azure SDK-Clientbibliotheken bereit, die in C++ geschrieben wurden. Diese Bibliotheken folgen den Azure SDK-Entwurfsrichtlinien für C++.

Mit der Bibliothek können Clientbibliotheken allgemeine Funktionen einheitlich verfügbar machen. Sobald Sie erfahren, wie Sie diese APIs in einer Clientbibliothek verwenden, wissen Sie, wie Sie sie in anderen Clientbibliotheken verwenden.

Erste Schritte

In der Regel müssen Sie nicht herunterladen azure-core. Es wird für Sie als Abhängigkeit der Clientbibliotheken heruntergeladen. Falls Sie sie explizit herunterladen möchten (z. B. um Ihre eigene Clientbibliothek zu implementieren), finden Sie die Quelle hier, oder verwenden Sie vcpkg, um das Paket azure-core-cppzu installieren.

Einschließen des Pakets

Am einfachsten können Sie das C++-SDK erwerben, indem Sie den vcpkg-Paket-Manager nutzen. Siehe den entsprechenden Abschnitt "Azure SDK für C++-Info".

So installieren Sie das Azure Core-Paket über vcpkg:

> vcpkg install azure-core-cpp

Verwenden Sie dann in Ihrer CMake-Datei:

find_package(azure-core-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core)

Wichtige Begriffe

Zu den wichtigsten gemeinsamen Konzepten Azure::Core gehören:

  • Verarbeiten von Streamingdaten und Eingabe/Ausgabe (E/A) über BodyStream die abgeleiteten Typen.
  • Zugreifen auf HTTP-Antwortdetails für das zurückgegebene Modell eines SDK-Clientvorgangs über Response<T>.
  • Abfragen von lang andauernden Vorgängen (LROs) über Operation<T>.
  • Ausnahmen für das Melden von Fehlern von Dienstanforderungen auf einheitliche Weise über den Basis-Ausnahmetyp RequestFailedException.
  • Abstraktionen für Azure SDK-Anmeldeinformationen (TokenCredential).
  • Austauschbare HTTP-Transportschicht zum Senden von Anforderungen und Empfangen von Antworten über das Netzwerk.
  • HTTP-Pipeline- und HTTP-Richtlinien wie Wiederholungs- und Protokollierungsrichtlinien, die über dienstclientspezifische Optionen konfiguriert werden können.

Zeitintensive Vorgänge

Einige Vorgänge benötigen eine lange Zeit, um den Status abzufragen. Methoden, die lange ausgeführte Vorgänge zurückgeben Operation<T> .

Sie können zeitweise abfragen, ob der Vorgang beendet wurde, indem Sie die Poll() Methode für den zurückgegebenen Operation<T> Vorgang verwenden und den Fortschritt des Vorgangs mithilfe Value()der Methode nachverfolgen. Alternativ können PollUntilDone()Sie verwenden, wenn Sie nur warten möchten, bis der Vorgang abgeschlossen ist.

SomeServiceClient client;

auto operation = *client.StartSomeLongRunningOperation();

while (!operation.IsDone())
{
  std::unique_ptr<Http::RawResponse> response = operation.Poll();

  auto partialResult = operation.Value();

  // Your per-polling custom logic goes here, such as logging progress.

  // You can also try to abort the operation if it doesn't complete in time.

  std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}

auto finalResult = operation.Value();

HTTP-Transportadapter

Standardmäßig unterstützt das Azure SDK für C++ die libcurl- und WinHTTP-Bibliotheken als HTTP-Stapel für die Kommunikation mit Azure-Diensten über das Netzwerk. Das SDK stellt außerdem einen Mechanismus für customer-implementedden HTTP-Transportadapter bereit. Weitere Informationen zum Transportadapter finden Sie in diesem Dokument.

Problembehandlung

Drei Hauptmethoden für die Problembehandlung sind:

SDK-Protokollnachrichten

Die einfachste Möglichkeit zum Aktivieren von Protokollen besteht darin, die Umgebungsvariable auf einen der Werte festzulegenAZURE_LOG_LEVEL: ||AZURE_LOG_LEVELAzure::Core::Diagnostics::Logger::Level|Protokollnachrichtenebene |-|-|-| |4, oder errorerr|Error|Protokollierungsebene für Fehler, von denen die Anwendung nicht wiederhergestellt werden kann.| |3, oder warning|warn|WarningProtokollierungsebene, wenn eine Funktion die beabsichtigte Aufgabe nicht ausführen kann.| |2, oder informational, oder information, oder info|Informational|Protokollierungsebene, wenn eine Funktion normal funktioniert.| |1, oder verbose|debug|VerboseProtokollierungsebene für detaillierte Problembehandlungsszenarien.|

Anschließend werden Protokollmeldungen in die Konsole (stderr) gedruckt. Beachten Sie, dass stderr Nachrichten wie folgt in eine Protokolldatei umgeleitet werden können:

Unter Windows:

myprogram.exe 2> log.txt

Unter Linux oder macOS:

./myprogram 2> log.txt

Darüber hinaus können Protokollmeldungen programmgesteuert verarbeitet werden, indem eine Rückruffunktion bereitgestellt wird, die sie in einer Datei speichern oder auf gewünschte benutzerdefinierte Weise anzeigen kann.

#include <azure/core/diagnostics/logger.hpp>

int main()
{
    using namespace Azure::Core::Diagnostics;

    // See above for the level descriptions.
    Logger::SetLevel(Logger::Level::Verbose);

    // SetListener accepts std::function<>, which can be either lambda or a function pointer.
    Logger::SetListener([&](auto lvl, auto msg){ /* handle Logger::Level lvl and std::string msg */ });
}

Beachten Sie, dass der Listenerrückruf im selben Thread wie der Vorgang ausgeführt wird, der die Protokollnachricht ausgelöst hat. Es wird empfohlen, die Implementierung aufgrund der minimalen Menge der Protokollnachrichtenverarbeitung im Rückrufthread durchzuführen. Wenn die Nachrichtenverarbeitung erforderlich ist, sollten Sie in Betracht ziehen, die Nachrichtenzeichenfolge so zu implementieren, dass der Rückruf die Nachrichtenzeichenfolge in eine threadsichere Warteschlange überträgt, sodass ein anderer Thread die Nachrichten aus dieser Warteschlange auswählt und behandelt.

Nächste Schritte

Erkunden und installieren Sie verfügbare Azure SDK-Bibliotheken.

Contributing

Ausführliche Informationen zum Beitragen zu diesem Repository finden Sie im Leitfaden für Beiträge.

Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einem Mitwirkenden-Lizenzvertrag (CLA) zustimmen, der erklärt, dass Sie das Recht haben, uns tatsächlich die Rechte zur Nutzung Ihres Beitrags zu gewähren. Ausführliche Informationen finden Sie im Lizenzvertrag für Mitwirkende.

Wenn Sie eine Pullanfrage einreichen, bestimmt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen und die PR entsprechend dekorieren müssen (z. B. Bezeichnung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal über alle Reposs hinweg tun, indem Sie unsereN CLA verwenden.

Dieses Projekt hat den Microsoft Open Source Code of Conductübernommen. Weitere Informationen finden Sie im Code of Conduct FAQ oder wenden Sie sich an opencode@microsoft.com mit weiteren Fragen oder Kommentaren.

Viele Menschen auf der ganzen Welt haben dazu beigetragen, dieses Projekt besser zu machen. Sie sollten Folgendes auschecken:

Melden von Sicherheitsproblemen und Sicherheitsfehlern

Sicherheitsprobleme und Fehler sollten privat per E-Mail an das Microsoft Security Response Center (MSRC) secure@microsoft.comgemeldet werden. Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Wenn Sie dies aus irgendeinem Grund nicht tun, folgen Sie bitte per E-Mail, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen, einschließlich des MSRC PGP-Schlüssels, finden Sie im Security TechCenter.

Lizenz

Das Azure SDK für C++ wird unter der MIT-Lizenz lizenziert.