Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure::Core (azure-core) fornece primitivos compartilhados, abstrações e auxiliares para bibliotecas de clientes modernas do SDK do Azure escritas no C++. Essas bibliotecas seguem as Diretrizes de Design do SDK do Azure para C++.
A biblioteca permite que as bibliotecas de clientes exponham a funcionalidade comum de forma consistente. Depois de aprender a usar essas APIs em uma biblioteca de clientes, você saberá como usá-las em outras bibliotecas de clientes.
Como começar
Normalmente, você não precisará baixar azure-core; ele será baixado para você como uma dependência das bibliotecas de cliente. Caso deseje baixá-la explicitamente (para implementar sua própria biblioteca de clientes, por exemplo), você pode encontrar a origem aqui ou usar vcpkg para instalar o pacote azure-core-cpp.
Incluir o pacote
A maneira mais fácil de adquirir o SDK do C++ é aproveitando o gerenciador de pacotes vcpkg. Consulte a seção de leiame do SDK do Azure para C++correspondente.
Para instalar o pacote do Azure Core via vcpkg:
> vcpkg install azure-core-cpp
Em seguida, use em seu arquivo CMake:
find_package(azure-core-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core)
Conceitos principais
Os principais conceitos compartilhados de Azure::Core incluir:
- Manipulação de dados de streaming e E/S (entrada/saída) junto
BodyStreamcom seus tipos derivados. - Acessando detalhes de resposta HTTP para o modelo retornado de qualquer operação de cliente do SDK, via
Response<T>. - Operações de longa execução de sondagem (LROs), via
Operation<T>. - Exceções para relatar erros de solicitações de serviço de forma consistente por meio do tipo
RequestFailedExceptionde exceção base. - Abstrações para credenciais do SDK do Azure (
TokenCredential). - Camada de transporte HTTP substituível para enviar solicitações e receber respostas pela rede.
- Pipeline HTTP e políticas HTTP, como repetição e registro em log, que são configuráveis por meio de opções específicas do cliente de serviço.
Operações de longa duração
Algumas operações levam muito tempo para serem concluídas e exigem sondagem para seu status. Métodos que iniciam operações de execução prolongada retornam Operation<T> tipos.
Você pode sondar intermitentemente se a operação foi concluída usando o Poll() método no retorno Operation<T> e acompanhar o progresso da operação usando Value(). Como alternativa, se você quiser apenas aguardar até a conclusão da operação, poderá usar 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();
Adaptador de transporte HTTP
Pronto para uso, o SDK do Azure para C++ dá suporte às bibliotecas libcurl e WinHTTP como pilhas HTTP para se comunicar com os serviços do Azure pela rede. O SDK também fornece um mecanismo para customer-implementedo adaptador de transporte HTTP.
Você pode saber mais sobre o adaptador de transporte neste documento.
Resolução de problemas
Três maneiras principais de solucionar problemas de falhas são:
- Inspecionando exceções
- Habilitando o registro em log (consulte mensagens de log do SDK)
Mensagens de log do SDK
A maneira mais simples de habilitar logs é definir AZURE_LOG_LEVEL variável de ambiente para um dos valores: |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level|Nível da mensagem de log| |-|-|-| |4 ou error ou err|Error|Nível de registro em log para falhas das quais é improvável que o aplicativo se recupere.| |3 ou warning ou warn|Warning|Nível de registro em log quando uma função falha ao executar sua tarefa pretendida.| |2 ou informational ou information ou info|Informational|Nível de registro em log quando uma função opera normalmente.| |1 ou verbose ou debug|Verbose|Nível de log para cenários detalhados de solução de problemas.|
Em seguida, as mensagens de log serão impressas no console (stderr).
Observe que stderr as mensagens podem ser redirecionadas para um arquivo de log como este:
No Windows:
myprogram.exe 2> log.txt
No Linux ou macOS:
./myprogram 2> log.txt
Além disso, as mensagens de log podem ser processadas programaticamente fornecendo uma função de retorno de chamada, que pode salvá-las em um arquivo ou exibi-las de maneira personalizada desejada.
#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 */ });
}
Observe que o retorno de chamada do ouvinte é executado no mesmo thread que a operação que disparou a mensagem de log. É recomendável a implementação devido à quantidade mínima de processamento de mensagens de log no thread de retorno de chamada. Quando o processamento de mensagens for necessário, considere implementar de uma maneira que o retorno de chamada efetue push da cadeia de caracteres de mensagem para uma fila thread-safe, para que outro thread escolha as mensagens dessa fila e as manipule.
Próximas etapas
Explore e instale as bibliotecas disponíveis do SDK do Azure.
Contributing
Para obter detalhes sobre como contribuir para esse repositório, consulte o guia de contribuição.
Este projeto recebe contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença de Colaborador) declarando que você tem o direito de, e realmente fazer, conceder-nos os direitos de usar sua contribuição. Para obter detalhes, visite o Contrato de Licença de Colaborador.
Ao enviar uma solicitação de pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar a PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, consulte as perguntas frequentes sobre o Código de Conduta ou entre em contato com opencode@microsoft.com com perguntas ou comentários adicionais.
Links úteis adicionais para colaboradores
Muitas pessoas em todo o mundo ajudaram a melhorar este projeto. Você desejará fazer check-out:
- Quais são alguns dos primeiros problemas bons para novos colaboradores para o repositório?
- Como criar e testar sua alteração
- Como você pode fazer uma alteração acontecer!
- Perguntas frequentes (perguntas frequentes) e tópicos conceituais no SDK detalhado do Azure para c++wiki.
Relatar problemas de segurança e bugs de segurança
Problemas de segurança e bugs devem ser relatados em particular, por email, para o MSRC (Centro de Resposta de Segurança da Microsoft). secure@microsoft.com Deverá receber uma resposta dentro de 24 horas. Se por algum motivo você não fizer isso, siga por email para garantir que recebemos sua mensagem original. Mais informações, incluindo a chave PGP do MSRC, podem ser encontradas no TechCenter de Segurança.
Licença
O SDK do Azure para C++ é licenciado sob a licença do MIT .