Bibliothèque principale du Kit de développement logiciel (SDK) Azure pour C++

Azure ::Core (azure-core) fournit des primitives partagées, des abstractions et des assistances pour les bibliothèques clientes du SDK Azure modernes écrites dans C++. Ces bibliothèques suivent les instructions de conception du Kit de développement logiciel (SDK) Azure pour C++.

La bibliothèque permet aux bibliothèques clientes d’exposer les fonctionnalités courantes de manière cohérente. Une fois que vous avez appris à utiliser ces API dans une bibliothèque cliente, vous savez comment les utiliser dans d’autres bibliothèques clientes.

Mise en route

En règle générale, vous n’aurez pas besoin de télécharger azure-core; il sera téléchargé pour vous en tant que dépendance des bibliothèques clientes. Si vous souhaitez le télécharger explicitement (pour implémenter votre propre bibliothèque cliente, par exemple), vous pouvez trouver la source ici ou utiliser vcpkg pour installer le package azure-core-cpp.

Inclure le package

Le moyen le plus simple d’acquérir le Kit de développement logiciel (SDK) C++ tire parti du gestionnaire de package vcpkg. Consultez la section lisez-moi correspondante du Kit de développement logiciel (SDK) Azure pour C++.

Pour installer le package Azure Core via vcpkg :

> vcpkg install azure-core-cpp

Ensuite, utilisez votre fichier CMake :

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

Concepts clés

Les principaux concepts partagés sont Azure::Core les suivants :

  • Gestion des données de streaming et des entrées/sorties (E/S) avec BodyStream ses types dérivés.
  • Accès aux détails de la réponse HTTP pour le modèle retourné d’une opération cliente du SDK, via Response<T>.
  • Interrogation d’opérations longues (LRO), via Operation<T>.
  • Exceptions pour la création de rapports d’erreurs à partir de requêtes de service de manière cohérente via le type d’exception de RequestFailedExceptionbase.
  • Abstractions pour les informations d’identification du Kit de développement logiciel (SDK) Azure (TokenCredential).
  • Couche de transport HTTP remplaçable pour envoyer des demandes et recevoir des réponses sur le réseau.
  • Pipeline HTTP et stratégies HTTP telles que les nouvelles tentatives et la journalisation, qui sont configurables via des options spécifiques au client de service.

Opérations de longue durée

Certaines opérations prennent beaucoup de temps et nécessitent l’interrogation de leur état. Méthodes de démarrage des types de retour Operation<T> d’opérations de longue durée.

Vous pouvez interroger par intermittence si l’opération s’est terminée à l’aide de la Poll() méthode sur la progression retournée Operation<T> et suivre la progression de l’opération à l’aide Value()de . Sinon, si vous souhaitez simplement attendre la fin de l’opération, vous pouvez utiliser 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();

Adaptateur de transport HTTP

Prête à l’emploi, le Kit de développement logiciel (SDK) Azure pour C++ prend en charge les bibliothèques libcurl et WinHTTP en tant que piles HTTP pour communiquer avec les services Azure sur le réseau. Le Kit de développement logiciel (SDK) fournit également un mécanisme pour customer-implementedl’adaptateur de transport HTTP. Vous pouvez en savoir plus sur l’adaptateur de transport dans ce document.

Résolution des problèmes

Trois méthodes principales de résolution des problèmes sont les suivantes :

Messages de journal du Kit de développement logiciel (SDK)

La façon la plus simple d’activer les journaux consiste à définir AZURE_LOG_LEVEL variable d’environnement sur l’une des valeurs suivantes : |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level|Niveau du message de journal | |-|-|-| |4, ou error ou err|Error|Niveau de journalisation pour les défaillances auxquelles l’application est peu susceptible de récupérer.| |3, ou warning ou warn|Warning|Niveau de journalisation lorsqu’une fonction ne parvient pas à effectuer sa tâche prévue.| |2, ou informational, ou information, ou info|Informational|Niveau de journalisation lorsqu’une fonction fonctionne normalement.| |1, ou verbose, ou debug|Verbose|Niveau de journalisation pour les scénarios de résolution des problèmes détaillés.|

Ensuite, les messages de journal sont imprimés dans la console (stderr). Notez que les stderr messages peuvent être redirigés vers un fichier journal comme suit :

Sur Windows :

myprogram.exe 2> log.txt

Sur Linux ou macOS :

./myprogram 2> log.txt

En outre, les messages de journal peuvent être traités par programmation en fournissant une fonction de rappel, qui peut les enregistrer dans un fichier ou les afficher de manière personnalisée souhaitée.

#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 */ });
}

Notez que le rappel de l’écouteur est exécuté sur le même thread que l’opération qui a déclenché le message de journal. Il est recommandé d’implémenter en raison de la quantité minimale de traitement des messages de journal sur le thread de rappel. Lorsque le traitement des messages est requis, envisagez d’implémenter de manière à ce que le rappel envoie la chaîne de message dans une file d’attente thread-safe, afin qu’un autre thread sélectionne les messages de cette file d’attente et les gère.

Étapes suivantes

Explorez et installez les bibliothèques du Kit de développement logiciel (SDK) Azure disponibles.

Contribution

Pour plus d’informations sur la contribution à ce référentiel, consultez le guide de contribution.

Ce projet accueille les contributions et suggestions. La plupart des contributions vous obligent à accepter un contrat de licence contributeur (CLA) déclarant que vous avez le droit, et en fait, de nous accorder les droits d’utilisation de votre contribution. Pour plus d’informations, consultez le Contrat de licence contributeur.

Lorsque vous envoyez une demande de tirage( pull request), un bot CLA détermine automatiquement si vous devez fournir un CLA et décorer correctement la demande de tirage (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois sur tous les dépôts à l’aide de notre CLA.

Ce projet a adopté le Code de conduite Open Source Microsoft. Pour plus d’informations, consultez le forum aux questions du Code de conduite ou contactez avec des questions ou commentaires supplémentaires.

Beaucoup de gens du monde entier ont contribué à améliorer ce projet. Vous voudrez consulter :

Signaler des problèmes de sécurité et des bogues de sécurité

Les problèmes de sécurité et les bogues doivent être signalés en privé, par e-mail, au Centre d'intervention en matière de sécurité Microsoft (MSRC). secure@microsoft.com Vous devez recevoir une réponse dans les 24 heures. Si pour une raison quelconque vous ne le faites pas, veuillez suivre par e-mail pour vous assurer que nous avons reçu votre message d’origine. Vous trouverez plus d’informations, notamment la clé PGP MSRC, dans Security TechCenter.

Licence

Le Kit de développement logiciel (SDK) Azure pour C++ est concédé sous licence MIT .