Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
BodyStreamdie 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:
- Überprüfen von Ausnahmen
- Aktivieren der Protokollierung (siehe SDK-Protokollnachrichten)
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.
Zusätzliche hilfreiche Links für Mitwirkende
Viele Menschen auf der ganzen Welt haben dazu beigetragen, dieses Projekt besser zu machen. Sie sollten Folgendes auschecken:
- Was sind einige gute erste Probleme für neue Mitwirkende am Repository?
- So erstellen und testen Sie Ihre Änderung
- Wie Sie eine Änderung vornehmen können!
- Häufig gestellte Fragen (FAQ) und konzeptionelle Themen im detaillierten Azure SDK für C++-Wiki.
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.