Aracılığıyla paylaş


C++ için Azure SDK Çekirdek Kitaplığı

Azure::Core (azure-core), C++ dilinde yazılmış modern Azure SDK istemci kitaplıkları için paylaşılan temel öğeler, soyutlamalar ve yardımcılar sağlar. Bu kitaplıklar C++ için Azure SDK Tasarım Yönergeleri'ni izler.

Kitaplık, istemci kitaplıklarının ortak işlevleri tutarlı bir şekilde kullanıma sunmasına olanak tanır. Bu API'lerin bir istemci kitaplığında nasıl kullanılacağını öğrendikte, bunları diğer istemci kitaplıklarında nasıl kullanacağınızı öğreneceksiniz.

Başlangıç Yapmak

Genellikle indirmeniz azure-coregerekmez; istemci kitaplıklarının bağımlılığı olarak indirilir. Açıkça indirmek istiyorsanız (örneğin, kendi istemci kitaplığınızı uygulamak için) kaynağı burada bulabilir veya vcpkg kullanarak paketini azure-core-cppyükleyebilirsiniz.

Paketi dahil et

C++ SDK'sını edinmenin en kolay yolu vcpkg paket yöneticisinden kullanmaktır. C ++ benioku için ilgili Azure SDK bölümüne bakın.

Azure Core paketini vcpkg aracılığıyla yüklemek için:

> vcpkg install azure-core-cpp

Ardından CMake dosyanızda kullanın:

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

Temel kavramlar

Ana paylaşılan kavramları Azure::Core şunlardır:

  • Türetilmiş türleriyle birlikte akış BodyStream verilerini ve giriş/çıkışını (G/Ç) işleme.
  • aracılığıyla Response<T>herhangi bir SDK istemci işleminin döndürülen modeli için HTTP yanıt ayrıntılarına erişme.
  • aracılığıyla Operation<T>uzun süre çalışan işlemleri (LLO' lar) yoklama.
  • Temel özel durum türü RequestFailedExceptionaracılığıyla hizmet isteklerinden gelen hataları tutarlı bir şekilde raporlamaya yönelik özel durumlar.
  • Azure SDK kimlik bilgileri () için özetlerTokenCredential.
  • İstek göndermek ve ağ üzerinden yanıt almak için değiştirilebilir HTTP aktarım katmanı.
  • Hizmet istemcisine özgü seçenekler aracılığıyla yapılandırılabilen HTTP işlem hattı ve yeniden deneme ve günlüğe kaydetme gibi HTTP ilkeleri.

Uzun Süreli İşlemler

Bazı işlemlerin tamamlanması uzun sürer ve durumlarının yoklanmasını gerektirir. Uzun süre çalışan işlemleri başlatan yöntemler türleri döndürür Operation<T> .

döndürülen Operation<T> yöntemi kullanarak Poll() işlemin tamamlanıp tamamlanmadığını aralıklı olarak yoklayabilir ve kullanarak Value()işlemin ilerleme durumunu izleyebilirsiniz. Alternatif olarak, yalnızca işlem tamamlanana kadar beklemek istiyorsanız kullanabilirsiniz 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 Aktarım bağdaştırıcısı

C++ için Azure SDK'sı, ağ üzerinden Azure hizmetleriyle iletişim kurmak için HTTP yığınları olarak libcurl ve WinHTTP kitaplıklarını destekler. SDK ayrıca HTTP aktarım bağdaştırıcısı için customer-implemented bir mekanizma sağlar. Bu belgede aktarım bağdaştırıcısı hakkında daha fazla bilgi edinebilirsiniz.

Sorun giderme

Hata gidermenin üç ana yolu şunlardır:

SDK Günlük İletileri

Günlükleri etkinleştirmenin en basit yolu ortam değişkenini değerlerden birine ayarlamaktırAZURE_LOG_LEVEL: ||AZURE_LOG_LEVELAzure::Core::Diagnostics::Logger::Level|Günlük iletisi düzeyi |-|-|-| |4, veya errorveya|errError |Uygulamanın kurtarılma olasılığının düşük olduğu hatalar için günlüğe kaydetme düzeyi.| |3, veya warningveya|warnWarning |İşlev hedeflenen görevini gerçekleştiremediğinde günlüğe kaydetme düzeyi.| |2, veya informational, veya informationveya info|Informational|İşlev normal çalıştığında günlüğe kaydetme düzeyi.| |1, veya verboseveya|debugVerbose |Ayrıntılı sorun giderme senaryoları için günlük düzeyi.|

Ardından günlük iletileri konsola (stderr ) yazdırılır. İletilerin stderr aşağıdaki gibi bir günlük dosyasına yeniden yönlendirilebileceğini unutmayın:

Windows'da:

myprogram.exe 2> log.txt

Linux veya macOS'ta:

./myprogram 2> log.txt

Ayrıca günlük iletileri, bir dosyaya kaydedebilen veya istenen özel bir şekilde görüntüleyebilen bir geri çağırma işlevi sağlayarak program aracılığıyla işlenebilir.

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

Dinleyici geri çağırmasının günlük iletisini tetikleyen işlemle aynı iş parçacığında yürütüldüğünü unutmayın. Geri çağırma iş parçacığında en az miktarda günlük iletisi işleme nedeniyle uygulanması önerilir. İleti işlemenin gerekli olduğu durumlarda, geri çağırmanın ileti dizesini iş parçacığı güvenli bir kuyruğa göndererek başka bir iş parçacığının bu kuyruktan iletileri seçmesini ve bunları işlemesini sağlamayı göz önünde bulundurun.

Sonraki Adımlar

Kullanılabilir Azure SDK kitaplıklarını keşfedin ve yükleyin.

Contributing

Bu depoya katkıda bulunma hakkında ayrıntılı bilgi için katkıda bulunma kılavuzuna bakın.

Bu proje katkıları ve önerileri memnuniyetle karşılar. Çoğu katkı, Katkıda Bulunan Lisans Sözleşmesi'ni (CLA) kabul ederek bize katkınızı kullanma hakları verme hakkına sahip olduğunuzu bildirmenizi gerektirir. Ayrıntılar için Katkıda Bulunan Lisans Sözleşmesi'ni ziyaret edin.

Çekme isteği gönderdiğinizde, CLA botu otomatik olarak CLA sağlamanız gerekip gerekmediğini belirler ve çekme isteğini uygun şekilde süsler (örneğin, etiket, açıklama). Bot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Cla'mızı kullanarak bunu tüm depolarda yalnızca bir kez yapmanız gerekir.

Bu projede Microsoft Açık Kaynak Kullanım Şartları kabul edilmiştir. Daha fazla bilgi için bkz. Davranış Kuralları SSS veya ek sorularınız veya yorumlarınızla opencode@microsoft.com iletişime geçin.

Dünyanın her yerinden birçok kişi bu projenin daha iyi hale getirmesine yardımcı oldu. Aşağıdakileri kullanıma almak istersiniz:

Güvenlik sorunlarını ve güvenlik hatalarını bildirme

Güvenlik sorunları ve hataları özel olarak, e-posta yoluyla Microsoft Güvenlik Yanıt Merkezi'ne (MSRC) secure@microsoft.combildirilmelidir. Size 24 saat içerisinde yanıt verilecektir. Bazı nedenlerden dolayı bunu yapmazsanız, özgün iletinizi aldığımızdan emin olmak için lütfen e-posta yoluyla takip edin. MSRC PGP anahtarı da dahil olmak üzere daha fazla bilgi Security TechCenter'nde bulunabilir.

Lisans

C++ için Azure SDK , MIT lisansı kapsamında lisanslanır.