Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure::Core (azure-core) biedt gedeelde primitieven, abstracties en helpers voor moderne Azure SDK-clientbibliotheken die zijn geschreven in C++. Deze bibliotheken volgen de Ontwerprichtlijnen voor Azure SDK voor C++.
Met de bibliotheek kunnen clientbibliotheken algemene functionaliteit op een consistente manier beschikbaar maken. Zodra u hebt geleerd hoe u deze API's gebruikt in één clientbibliotheek, weet u hoe u deze kunt gebruiken in andere clientbibliotheken.
Aan de slag
Normaal gesproken hoeft u dit niet te downloaden azure-core. Deze wordt voor u gedownload als een afhankelijkheid van de clientbibliotheken. Als u deze expliciet wilt downloaden (bijvoorbeeld om uw eigen clientbibliotheek te implementeren), kunt u hier de bron vinden of vcpkg gebruiken om het pakket azure-core-cppte installeren.
Het pakket opnemen
De eenvoudigste manier om de C++ SDK te verkrijgen, maakt gebruik van vcpkg-pakketbeheer. Zie de bijbehorende leesmij-sectie voor Azure SDK voor C++ .
Azure Core-pakket installeren via vcpkg:
> vcpkg install azure-core-cpp
Gebruik vervolgens het CMake-bestand:
find_package(azure-core-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core)
Belangrijke concepten
De belangrijkste gedeelde concepten Azure::Core zijn:
- Het verwerken van streaminggegevens en input/output (I/O) via
BodyStreamde afgeleide typen. - Toegang tot HTTP-antwoorddetails voor het geretourneerde model van een SDK-clientbewerking, via
Response<T>. - Langlopende bewerkingen (LRO's) peilen via
Operation<T>. - Uitzonderingen voor het rapporteren van fouten van serviceaanvragen op een consistente manier via het basisuitzonderingstype
RequestFailedException. - Abstracties voor Azure SDK-referenties (
TokenCredential). - Vervangbare HTTP-transportlaag voor het verzenden van aanvragen en het ontvangen van antwoorden via het netwerk.
- HTTP-pijplijn en HTTP-beleid, zoals opnieuw proberen en logboekregistratie, die kunnen worden geconfigureerd via specifieke opties voor de serviceclient.
Langdurige bewerkingen
Het duurt lang voordat sommige bewerkingen zijn voltooid en vereisen polling voor hun status. Methoden voor het starten van langlopende bewerkingen retourneren Operation<T> typen.
U kunt af en toe peilen of de bewerking is voltooid met behulp van de Poll() methode op de geretourneerde Operation<T> bewerking en de voortgang van de bewerking bijhouden met behulp Value()van . Als u alleen wilt wachten totdat de bewerking is voltooid, kunt u ook gebruiken PollUntilDone().
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
Standaard ondersteunt de Azure SDK voor C++ de libcurl- en WinHTTP-bibliotheken als HTTP-stacks voor communicatie met Azure-services via het netwerk. De SDK biedt ook een mechanisme voor customer-implementedHTTP-transportadapters.
In dit document vindt u meer informatie over de transportadapter.
Probleemoplossingsproces
Drie belangrijke manieren om fouten op te lossen zijn:
- Uitzonderingen inspecteren
- Logboekregistratie inschakelen (zie SDK-logboekberichten)
SDK-logboekberichten
De eenvoudigste manier om logboeken in te schakelen, is door AZURE_LOG_LEVEL omgevingsvariabele in te stellen op een van de waarden: |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level|Niveau van logboekbericht| |-|-|-| |4 of error of err|Error|Logboekregistratieniveau voor fouten waaruit de toepassing waarschijnlijk niet kan worden hersteld.| |3 of warning of warn|Warning|Niveau van logboekregistratie wanneer een functie de beoogde taak niet kan uitvoeren.| |2 of informational, of information of info|Informational|Niveau van logboekregistratie wanneer een functie normaal werkt.| |1 of verbose of debug|Verbose|Logboekregistratieniveau voor gedetailleerde scenario's voor probleemoplossing.|
Vervolgens worden logboekberichten afgedrukt naar de console (stderr).
Houd er rekening mee dat stderr berichten als volgt kunnen worden omgeleid naar een logboekbestand:
In Windows:
myprogram.exe 2> log.txt
In Linux of macOS:
./myprogram 2> log.txt
Bovendien kunnen logboekberichten programmatisch worden verwerkt door een callback-functie op te geven, waarmee ze in een bestand kunnen worden opgeslagen of op een gewenste aangepaste manier kunnen worden weergegeven.
#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 */ });
}
Opmerking: de callback van de listener wordt uitgevoerd op dezelfde thread als de bewerking die het logboekbericht heeft geactiveerd. Het wordt aanbevolen de implementatie te wijten aan de minimale hoeveelheid verwerking van logboekberichten op de callback-thread. Waar berichtverwerking is vereist, kunt u overwegen om de callback op een manier te implementeren die de berichtenreeks naar een threadveilige wachtrij pusht, zodat een andere thread de berichten uit die wachtrij zou kiezen en afhandelen.
Volgende stappen
Beschikbare Azure SDK-bibliotheken verkennen en installeren.
Contributing
Zie de gids voor bijdragen voor meer informatie over het bijdragen aan deze opslagplaats.
Dit project verwelkomt bijdragen en suggesties. Voor de meeste bijdragen moet u akkoord gaan met een Licentieovereenkomst voor inzenders (CLA) waarin wordt aangegeven dat u het recht hebt om, en daadwerkelijk, ons de rechten te verlenen om uw bijdrage te gebruiken. Ga naar de gebruiksrechtovereenkomst voor inzenders voor meer informatie.
Wanneer u een pull-aanvraag indient, bepaalt een CLA-bot automatisch of u een CLA moet opgeven en de pull-aanvraag op de juiste wijze moet inrichten (bijvoorbeeld label, opmerking). Volg gewoon de instructies van de bot. U hoeft dit slechts eenmaal te doen voor alle opslagplaatsen met behulp van onze CLA.
Dit project onderschrijft de Microsoft Open Source gedragscode. Zie de Veelgestelde vragen over gedragscodes voor meer informatie of neem contact op met opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.
Aanvullende nuttige koppelingen voor inzenders
Veel mensen over de hele wereld hebben geholpen dit project beter te maken. U kunt het volgende uitchecken:
- Wat zijn enkele goede eerste problemen voor nieuwe inzenders in de opslagplaats?
- Uw wijziging bouwen en testen
- Hoe u een wijziging kunt aanbrengen!
- Veelgestelde vragen (FAQ) en conceptuele onderwerpen in de gedetailleerde Azure SDK voor C++-wiki.
Beveiligingsproblemen en beveiligingsfouten rapporteren
Beveiligingsproblemen en fouten moeten privé worden gerapporteerd via e-mail naar het Microsoft Security Response Center (MSRC). secure@microsoft.com U zou binnen 24 uur een reactie moeten krijgen. Als u dit om een of andere reden niet doet, neemt u contact op via e-mail om ervoor te zorgen dat we uw oorspronkelijke bericht hebben ontvangen. Meer informatie, waaronder de MSRC PGP-sleutel, vindt u in het Security TechCenter.
Licentie
Azure SDK voor C++ is gelicentieerd onder de MIT-licentie .