Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Azure::Core (azure-core) fornece primitivas partilhadas, abstrações e auxiliares para bibliotecas clientes modernas do SDK do Azure escritas em C++. Estas bibliotecas seguem as Diretrizes de Design do SDK do Azure para C++.
A biblioteca permite que as bibliotecas clientes exponham funcionalidades comuns de forma consistente. Depois de aprender a usar estas APIs numa biblioteca cliente, vai saber como usá-las noutras bibliotecas clientes.
Como Começar
Normalmente, não precisará de descarregar azure-core; será descarregado para si como uma dependência das bibliotecas clientes. Caso queira descarregá-lo explicitamente (para implementar a sua própria biblioteca cliente, por exemplo), pode encontrar o código-fonte aqui, ou usar vcpkg para instalar o pacote azure-core-cpp.
Inclua o pacote
A forma mais fácil de adquirir o SDK C++ é aproveitar o gestor de pacotes vcpkg. Consulte a secção correspondente do SDK do Azure para readme em C++.
Para instalar o pacote Azure Core via vcpkg:
> vcpkg install azure-core-cpp
Depois, use no seu ficheiro CMake:
find_package(azure-core-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core)
Conceitos-chave
Os principais conceitos partilhados de Azure::Core incluem:
- Gestão de dados em streaming e entrada/saída (I/O) juntamente
BodyStreamcom os seus tipos derivados. - Aceder aos detalhes de resposta HTTP para o modelo devolvido de qualquer operação de cliente SDK, via
Response<T>. - Sondagem de operações de longa duração (LROs), via
Operation<T>. - Exceções para reportar erros de pedidos de serviço de forma consistente através do tipo
RequestFailedExceptionbase de exceção . - Abstrações para credenciais SDK do Azure (
TokenCredential). - Camada de transporte HTTP substituível para enviar pedidos e receber respostas através da rede.
- HTTP pipeline e políticas HTTP como retentativa e registo, que são configuráveis através de opções específicas do cliente de serviço.
Operações de longa duração
Algumas operações demoram muito tempo a concluir e exigem sondagens para saber o seu estado. Os métodos que iniciam operações de longa duração devolvem Operation<T> tipos.
Pode-se interrogar intermitentemente se a operação terminou usando o Poll() método no retorno Operation<T> e acompanhar o progresso da operação usando Value(). Alternativamente, se quiser apenas esperar até a operação terminar, pode 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
De fábrica, o SDK do Azure para C++ suporta as bibliotecas libcurl e WinHTTP como pilhas HTTP para comunicar com os serviços Azure através da rede. O SDK também fornece um mecanismo para customer-implementedadaptador de transporte HTTP.
Podes saber mais sobre o adaptador de transporte neste documento.
Solução de problemas
Três formas principais de resolver falhas são:
- Inspecção de exceções
- Ativar o registo (ver Mensagens de Registo do SDK)
Mensagens de Registo do SDK
A forma mais simples de ativar logs é definir AZURE_LOG_LEVEL variável de ambiente para um dos valores: |AZURE_LOG_LEVEL|Azure::Core::Diagnostics::Logger::Level|Log message level| |-|-|-| |4, ou error, ou err|Error|Nível de registo para falhas das quais a aplicação dificilmente recuperará.| |3, ou warning, ou warn|Warning|Nível de registo quando uma função falha em executar a sua tarefa pretendida.| |2, ou informational, ou information, ou info|Informational|Nível de registo quando uma função funciona normalmente.| |1, ou verbose, ou debug|Verbose|Nível de registo para cenários detalhados de resolução de problemas.|
Depois, as mensagens de registo serão impressas na consola (stderr).
Note que stderr as mensagens podem ser redirecionadas para um ficheiro de registo como este:
No Windows:
myprogram.exe 2> log.txt
No Linux ou macOS:
./myprogram 2> log.txt
Além disso, as mensagens de registo podem ser processadas programaticamente através de uma função de callback, que pode guardá-las num ficheiro ou exibi-las de forma 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 */ });
}
Note-se que o callback do ouvinte é executado na mesma thread da operação que desencadeou a mensagem de log. É uma implementação recomendada devido à quantidade mínima de processamento de mensagens de registo no thread de callback. Quando for necessário processamento de mensagens, considere implementar de forma a que o callback empurre a cadeia de mensagens para uma fila thread-safe, para que outro thread escolha as mensagens dessa fila e as trate.
Próximos passos
Explore e instale as bibliotecas disponíveis do SDK do Azure.
Contributing
Para mais detalhes sobre como contribuir para este repositório, consulte o guia de contribuições.
Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito de, e realmente concede, os direitos de usar sua contribuição. Para mais detalhes, visite o Acordo de Licença de Contribuidor.
Quando você envia uma solicitação pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar o 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 Open Source da Microsoft.
Para obter mais informações, consulte o de perguntas frequentes sobre o Código de Conduta
Links Adicionais Úteis para Colaboradores
Muitas pessoas em todo o mundo ajudaram a tornar este projeto melhor. Vai querer espreitar:
- Quais são algumas boas primeiras edições para novos colaboradores do repositório?
- Como construir e testar a sua mudança
- Como pode fazer uma mudança acontecer!
- Perguntas Frequentes (FAQ) e Tópicos Conceptuais na wiki detalhada do SDK do Azure for C++.
Reportar problemas de segurança e bugs de segurança
Problemas de segurança e bugs devem ser reportados de forma privada, por email, ao Centro de Resposta de Segurança da Microsoft (MSRC secure@microsoft.com). Deverá receber uma resposta no prazo de 24 horas. Se, por algum motivo, não o fizer, por favor contacte-nos por e-mail para garantir que recebemos a sua mensagem original. Mais informações, incluindo a chave MSRC PGP, podem ser encontradas no Security TechCenter.
Licença
O SDK do Azure para C++ está licenciado sob a licença MIT .