Podstawowa biblioteka zestawu Azure SDK dla języka C++

Azure::Core (azure-core) udostępnia udostępnione elementy pierwotne, abstrakcji i pomocników dla nowoczesnych bibliotek klienckich zestawu Azure SDK napisanych w języku C++. Te biblioteki są zgodne z wytycznymi dotyczącymi projektowania zestawu Azure SDK dla języka C++.

Biblioteka umożliwia bibliotekom klienckim uwidacznianie typowych funkcji w spójny sposób. Gdy dowiesz się, jak używać tych interfejsów API w jednej bibliotece klienta, będziesz wiedzieć, jak używać ich w innych bibliotekach klienckich.

Wprowadzenie

Zazwyczaj nie trzeba go pobierać azure-core. Zostanie on pobrany jako zależność bibliotek klienckich. Jeśli chcesz go jawnie pobrać (aby zaimplementować własną bibliotekę klienta, na przykład), możesz znaleźć źródło w tym miejscu lub użyć narzędzia vcpkg do zainstalowania pakietu azure-core-cpp.

Uwzględnij pakiet

Najprostszym sposobem uzyskania zestawu SDK języka C++ jest wykorzystanie menedżera pakietów vcpkg. Zapoznaj się z odpowiednią sekcją zestawu Azure SDK dla języka C++ readme.

Aby zainstalować pakiet Azure Core za pośrednictwem narzędzia vcpkg:

> vcpkg install azure-core-cpp

Następnie użyj polecenia w pliku CMake:

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

Najważniejsze pojęcia

Główne wspólne pojęcia obejmują Azure::Core :

  • Obsługa danych przesyłanych strumieniowo i danych wejściowych/wyjściowych (We/Wy) za pośrednictwem BodyStream wraz z ich typami pochodnymi.
  • Uzyskiwanie dostępu do szczegółów odpowiedzi HTTP dla zwróconego modelu dowolnej operacji klienta zestawu SDK za pośrednictwem polecenia Response<T>.
  • Sondowanie długotrwałych operacji (LROs) za pośrednictwem metody Operation<T>.
  • Wyjątki dotyczące raportowania błędów z żądań obsługi w spójny sposób za pośrednictwem podstawowego typu RequestFailedExceptionwyjątku .
  • Abstrakcje poświadczeń zestawu Azure SDK (TokenCredential).
  • Zastępowana warstwa transportu HTTP do wysyłania żądań i odbierania odpowiedzi za pośrednictwem sieci.
  • Potok HTTP i zasady HTTP, takie jak ponawianie i rejestrowanie, które można skonfigurować za pośrednictwem opcji specyficznych dla klienta usługi.

Długotrwałe operacje

Wykonanie niektórych operacji trwa długo i wymaga sondowania stanu. Metody rozpoczynające długotrwałe operacje zwracają Operation<T> typy.

Możesz sporadycznie sondować, czy operacja została zakończona, używając metody zwróconej Poll() i śledzenia postępu operacji przy użyciu Operation<T> metody .Value() Alternatywnie, jeśli chcesz poczekać na zakończenie operacji, możesz użyć polecenia 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();

Karta transportowa HTTP

Poza tym zestaw Azure SDK dla języka C++ obsługuje biblioteki libcurl i WinHTTP jako stosy HTTP do komunikowania się z usługami platformy Azure za pośrednictwem sieci. Zestaw SDK udostępnia również mechanizm customer-implementedkarty transportowej HTTP. Więcej informacji na temat adaptera transportowego można dowiedzieć się w tym dokumentie.

Rozwiązywanie problemów

Istnieją trzy główne sposoby rozwiązywania problemów:

Komunikaty dziennika zestawu SDK

Najprostszym sposobem włączenia dzienników jest ustawienie zmiennej środowiskowej AZURE_LOG_LEVEL na jedną z wartości: |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level|Poziom komunikatu dziennika| |-|-|-| |4 lub error lub err|Error|Poziom rejestrowania dla błędów, z których aplikacja jest mało prawdopodobne, aby odzyskać dane.| |3 lub warning lub warn|Warning|Poziom rejestrowania, gdy funkcja nie może wykonać zamierzonego zadania.| |2 lub informational lub information lub info|Informational|Poziom rejestrowania, gdy funkcja działa normalnie.| |1 lub verbose lub debug|Verbose|Poziom rejestrowania dla szczegółowych scenariuszy rozwiązywania problemów.|

Następnie komunikaty dziennika zostaną wydrukowane w konsoli (stderr). Należy pamiętać, że stderr komunikaty mogą być przekierowywane do pliku dziennika w następujący sposób:

W systemie Windows:

myprogram.exe 2> log.txt

W systemie Linux lub macOS:

./myprogram 2> log.txt

Ponadto komunikaty dziennika mogą być przetwarzane programowo przez udostępnienie funkcji wywołania zwrotnego, która może je zapisać w pliku lub wyświetlić je w żądany sposób niestandardowy.

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

Należy pamiętać, że wywołanie zwrotne odbiornika jest wykonywane w tym samym wątku co operacja, która wyzwoliła komunikat dziennika. Zalecana jest implementacja ze względu na minimalną ilość przetwarzania komunikatów dziennika w wątku wywołania zwrotnego. Jeśli przetwarzanie komunikatów jest wymagane, rozważ zaimplementowanie w taki sposób, że wywołanie zwrotne wypycha ciąg komunikatu do kolejki bezpiecznej wątku, aby inny wątek wybrał komunikaty z tej kolejki i obsłużył je.

Dalsze kroki

Eksplorowanie i instalowanie dostępnych bibliotek zestawu Azure SDK.

Contributing

Aby uzyskać szczegółowe informacje na temat współtworzenia tego repozytorium, zobacz przewodnik współtworzenia.

Ten projekt z zadowoleniem przyjmuje wkład i sugestie. Większość kontrybucja wymaga zgody na umowę licencyjną współautora (CLA), deklarując, że masz prawo, a w rzeczywistości przyznaj nam prawa do korzystania z twojego wkładu. Aby uzyskać szczegółowe informacje, odwiedź stronę Umowy licencyjnej współautora.

Po przesłaniu żądania ściągnięcia bot CLA automatycznie określi, czy musisz podać cla i odpowiednio ozdobić żądanie ściągnięcia (np. etykieta, komentarz). Po prostu postępuj zgodnie z instrukcjami dostarczonymi przez bota. Należy to zrobić tylko raz we wszystkich repozytoriach przy użyciu naszego CLA.

W tym projekcie jest używany Kodeks postępowania firmy Microsoft dla oprogramowania typu open source. Aby uzyskać więcej informacji, zobacz Kodeks postępowania — często zadawane pytania lub skontaktuj się z opencode@microsoft.com z dodatkowymi pytaniami lub komentarzami.

Wiele osób na całym świecie pomogło ulepszyć ten projekt. Warto wyewidencjonować:

Raportowanie problemów z zabezpieczeniami i usterek zabezpieczeń

Problemy z zabezpieczeniami i błędy powinny być zgłaszane prywatnie za pośrednictwem poczty e-mail do Centrum zabezpieczeń firmy Microsoft (MSRC). secure@microsoft.com Odpowiedź wysyłamy zazwyczaj w ciągu 24 godzin. Jeśli z jakiegoś powodu tego nie zrobisz, postępuj zgodnie z instrukcjami za pośrednictwem poczty e-mail, aby upewnić się, że otrzymaliśmy oryginalną wiadomość. Więcej informacji, w tym klucza PGP MSRC, można znaleźć w centrum zabezpieczeń TechCenter.

Licencja

Zestaw Azure SDK dla języka C++ jest licencjonowany w ramach licencji MIT .