Azure::Core(azure-core)는 C++로 작성된 최신 Azure SDK 클라이언트 라이브러리에 대한 공유 기본 형식, 추상화 및 도우미를 제공합니다. 이러한 라이브러리는 C++에 대한 Azure SDK 디자인 지침을 따릅니다.
라이브러리를 사용하면 클라이언트 라이브러리가 일관된 방식으로 공통 기능을 노출할 수 있습니다. 한 클라이언트 라이브러리에서 이러한 API를 사용하는 방법을 알아보면 다른 클라이언트 라이브러리에서 API를 사용하는 방법을 알게 됩니다.
시작하기
일반적으로 다운로드 azure-core할 필요가 없습니다. 클라이언트 라이브러리의 종속성으로 다운로드됩니다. 사용자 고유의 클라이언트 라이브러리를 구현하기 위해 명시적으로 다운로드하려는 경우 여기에서 원본을 찾거나 vcpkg를 사용하여 패키지를 azure-core-cpp설치할 수 있습니다.
패키지를 포함하세요
C++ SDK를 획득하는 가장 쉬운 방법은 vcpkg 패키지 관리자를 활용하는 것입니다. C++ 추가 정보 섹션에 해당하는 Azure SDK를 참조하세요.
vcpkg를 통해 Azure Core 패키지를 설치하려면 다음을 수행합니다.
> vcpkg install azure-core-cpp
그런 다음, CMake 파일에서 사용합니다.
find_package(azure-core-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core)
주요 개념
주요 공유 개념은 다음과 같습니다.Azure::Core
- 파생 형식과 함께 스트리밍 데이터 및 I/O(입력/출력)
BodyStream를 처리합니다. - 를 통해
Response<T>모든 SDK 클라이언트 작업의 반환된 모델에 대한 HTTP 응답 세부 정보에 액세스합니다. - 를 통해
Operation<T>LLO(장기 실행 작업) 폴링 - 기본 예외 유형을
RequestFailedException통해 일관된 방식으로 서비스 요청의 오류를 보고하는 예외입니다. - Azure SDK 자격 증명에 대한 추상화(
TokenCredential). - 네트워크를 통해 요청을 보내고 응답을 수신하는 대체 가능한 HTTP 전송 계층입니다.
- 서비스 클라이언트 특정 옵션을 통해 구성할 수 있는 재시도 및 로깅과 같은 HTTP 파이프라인 및 HTTP 정책
장기 실행 작업
일부 작업을 완료하는 데 시간이 오래 걸리고 상태에 대한 폴링이 필요합니다. 장기 실행 작업을 시작하는 메서드는 형식을 반환 Operation<T> 합니다.
반환 Poll() 된 메서드를 사용하여 작업이 완료되었는지 여부를 간헐적으로 폴링하고 다음을 사용하여 Operation<T> 작업의 진행률을 추적할 수 있습니다Value(). 또는 작업이 완료 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 전송 어댑터
C++용 Azure SDK는 네트워크를 통해 Azure 서비스와 통신하기 위한 HTTP 스택으로 libcurl 및 WinHTTP 라이브러리를 지원합니다. 또한 SDK는 customer-implemented에 대한 메커니즘을 제공합니다.
이 문서에서 전송 어댑터에 대해 자세히 알아볼 수 있습니다.
Troubleshooting
실패 문제를 해결하는 세 가지 주요 방법은 다음과 같습니다.
- 예외 검사
- 로깅 사용( SDK 로그 메시지 참조)
SDK 로그 메시지
로그를 사용하도록 설정하는 가장 간단한 방법은 AZURE_LOG_LEVEL 환경 변수를 |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level| 값 중 하나로 설정하는 것입니다.로그 메시지 수준| |-|-|-| |4 또는 error 또는 err|Error|애플리케이션이 복구할 가능성이 없는 오류에 대한 로깅 수준입니다.| |3 또는 warning 또는 warn|Warning|함수가 의도한 작업을 수행하지 못하는 경우의 로깅 수준입니다.| |2 또는 informational 또는 information 또는 info|Informational|함수가 정상적으로 작동하는 경우의 로깅 수준입니다.| |1 또는 verbose 또는 debug|Verbose|자세한 문제 해결 시나리오에 대한 로깅 수준입니다.|
그런 다음 로그 메시지가 콘솔(stderr)에 인쇄됩니다.
stderr 다음과 같이 메시지를 로그 파일로 리디렉션할 수 있습니다.
Windows에서:
myprogram.exe 2> log.txt
Linux 또는 macOS에서:
./myprogram 2> log.txt
또한 로그 메시지를 파일에 저장하거나 원하는 사용자 지정 방식으로 표시할 수 있는 콜백 함수를 제공하여 프로그래밍 방식으로 처리할 수 있습니다.
#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 */ });
}
수신기 콜백은 로그 메시지를 트리거한 작업과 동일한 스레드에서 실행됩니다. 콜백 스레드에서 최소한의 로그 메시지 처리로 인해 구현하는 것이 좋습니다. 메시지 처리가 필요한 경우 콜백이 메시지 문자열을 스레드로부터 안전한 큐로 푸시하여 다른 스레드가 해당 큐에서 메시지를 선택하고 처리하도록 구현하는 것이 좋습니다.
다음 단계
사용 가능한 Azure SDK 라이브러리를 탐색하고 설치합니다.
Contributing
이 리포지토리에 기여하는 방법은 기여 가이드를 참조하세요.
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리를 부여할 권리가 있음을 선언하는 CLA(기여자 사용권 계약)에 동의해야 합니다. 자세한 내용은 기여자 사용권 계약을 방문하세요.
끌어오기 요청을 제출하면 CLA 봇은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 주석). 봇에서 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 리포지토리에서 한 번만 이 작업을 수행해야 합니다.
이 프로젝트는 Microsoft 오픈 소스 준수 사항을 채택했습니다. 자세한 내용은 행동 강령 FAQ 참조하거나 추가 질문이나 의견을 opencode@microsoft.com 문의하세요.
참가자를 위한 추가 유용한 링크
전 세계의 많은 사람들이 이 프로젝트를 더 잘 만드는 데 도움을 주었습니다. 다음을 확인해 보세요.
- 리포지토리에 대한 새 참가자에게 좋은 첫 번째 문제는 무엇인가요?
- 변경 내용을 빌드하고 테스트하는 방법
- 변경 작업을 수행하려면 어떻게 해야 합니까?
- C++ Wiki에 대한 자세한 Azure SDK의 FAQ(질문과 대답) 및 개념 항목입니다.
보안 문제 및 보안 버그 보고
보안 문제 및 버그는 이메일을 통해 MSRC(Microsoft 보안 대응 센터) secure@microsoft.com에 비공개로 보고되어야 합니다. 24시간 이내에 응답을 받게 됩니다. 어떤 이유로도 그렇지 않은 경우 전자 메일을 통해 후속 조치를 수행하여 원본 메시지를 받았는지 확인하세요. MSRC PGP 키를 포함한 추가 정보는 Security TechCenter에서 찾을 수 있습니다.
License
C++용 Azure SDK는 MIT 라이선스에 따라 라이선스가 부여됩니다.