Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
BodyStreamwraz 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:
- Inspekcja wyjątków
- Włączanie rejestrowania (zobacz Komunikaty dziennika zestawu SDK)
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.
Dodatkowe przydatne linki dla współautorów
Wiele osób na całym świecie pomogło ulepszyć ten projekt. Warto wyewidencjonować:
- Jakie są dobre pierwsze problemy dla nowych współautorów w repozytorium?
- Jak skompilować i przetestować zmianę
- Jak można wprowadzić zmianę!
- Często zadawane pytania i tematy koncepcyjne w szczegółowej witrynie typu wiki zestawu Azure SDK dla języka C++.
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 .