C++ ile Azure Dosyalar için geliştirme

İpucu

Microsoft Azure Depolama Gezgini’ni deneyin

Microsoft Azure Depolama Gezgini, Microsoft’un Windows, macOS ve Linux üzerinde Azure Depolama verileriyle görsel olarak çalışmanızı sağlayan ücretsiz ve tek başına uygulamasıdır.

Şunlara uygulanır

Dosya paylaşımı türü SMB NFS
Standart dosya paylaşımları (GPv2), LRS/ZRS Yes Hayır
Standart dosya paylaşımları (GPv2), GRS/GZRS Yes Hayır
Premium dosya paylaşımları (filestorage), LRS/ZRS Yes No

Bu öğretici hakkında

Bu öğreticide, C++ kullanarak Azure Dosyalar üzerinde temel işlemler yapmayı öğreneceksiniz. Azure Dosyalar yeniyseniz, aşağıdaki bölümlerde yer alan kavramları gözden geçirmeniz örnekleri anlamanıza yardımcı olacaktır. Kapsanan örneklerden bazıları şunlardır:

  • Azure dosya paylaşımlarını oluşturma ve silme
  • Dizin oluşturma ve silme
  • Dosyayı karşıya yükleme, indirme ve silme
  • Dosyanın meta verilerini ayarlama ve listeleme

Not

Azure Dosyalar SMB üzerinden erişilebileceği için standart C++ G/Ç sınıflarını ve işlevlerini kullanarak Azure dosya paylaşımına erişen basit uygulamalar yazmak mümkündür. Bu makalede, Azure Dosyalar konuşmak için Dosya REST API'sini kullanan Azure Depolama C++ SDK'sını kullanan uygulamaların nasıl yazılacağı açıklanır.

Ön koşullar

Ayarlama

Bu bölümde, C++ için Azure Blob Depolama istemci kitaplığı v12 ile çalışmak üzere bir proje hazırlama işleminde size yol gösterilir.

Paketleri yükleme

Komut, vcpkg install C++ için Azure Depolama Blobları SDK'sını ve gerekli bağımlılıkları yükler:

vcpkg.exe install azure-storage-files-shares-cpp:x64-windows

Daha fazla bilgi için GitHub'ı ziyaret ederek C++ için Azure SDK'yı edinin ve derleyin.

Proje oluşturma

Visual Studio'da, Windows için FilesShareQuickstartV12 adlı yeni bir C++ konsol uygulaması oluşturun.

Yeni bir C++ Windows konsol uygulaması yapılandırmak için Visual Studio iletişim kutusu

Azure portalından kimlik bilgilerinizi kopyalama

Örnek uygulama Azure Depolama'ya istekte bulunurken yetkilendirilmelidir. Bir isteği yetkilendirmek için depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Depolama hesabı kimlik bilgilerinizi görüntülemek için şu adımları izleyin:

  1. Azure Portal’ında oturum açın.

  2. Depolama hesabınızı bulun.

  3. Depolama hesabı menü bölmesindeki Güvenlik + ağ altında Erişim anahtarları'nı seçin. Burada hesap erişim anahtarlarını ve her anahtarın tam bağlantı dizesini görüntüleyebilirsiniz.

    Erişim anahtarı ayarlarının Azure portal nerede olduğunu gösteren ekran görüntüsü

  4. Erişim anahtarları bölmesinde Anahtarları göster'i seçin.

  5. key1 bölümünde Bağlantı dizesi değerini bulun. Bağlantı dizesini kopyalamak için Panoya kopyala simgesini seçin. Sonraki bölümde bağlantı dizesi değerini bir ortam değişkenine ekleyeceksiniz.

    Azure portalından bağlantı dizesinin kopyalanmasını gösteren ekran görüntüsü

Depolama bağlantı dizelerinizi yapılandırma

Bağlantı dizesini kopyaladıktan sonra uygulamayı çalıştıran yerel makinede yeni bir ortam değişkenine yazın. Ortam değişkenini ayarlamak için bir konsol penceresi açın ve işletim sisteminizin yönergelerini izleyin. değerini gerçek bağlantı dizenizle değiştirin <yourconnectionstring> .

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Windows'da ortam değişkenini ekledikten sonra komut penceresinin yeni bir örneğini başlatmanız gerekir.

Programları yeniden başlatma

Ortam değişkenini ekledikten sonra ortam değişkenini okuması gereken tüm çalışan programları yeniden başlatın. Örneğin, devam etmeden önce geliştirme ortamınızı veya düzenleyicinizi yeniden başlatın.

Kod örnekleri

Bu örnek kod parçacıkları, C++ için Azure Dosyalar İstemci kitaplığını paylaş ile aşağıdaki görevlerin nasıl yapılacağını gösterir:

Ekleme dosyaları ekleme

Proje dizininden:

  1. FilesShareQuickstartV12.sln çözüm dosyasını Visual Studio'da açın.
  2. Visual Studio'da FilesShareQuickstartV12.cpp kaynak dosyasını açın.
  3. İçinde main otomatik olarak oluşturulan tüm kodları kaldırın.
  4. Deyimleri ekleyin #include .
#include <iostream>
#include <stdlib.h>
#include <vector>

#include <azure/storage/files/shares.hpp>

Bağlantı dizesini alma

Aşağıdaki kod Depolama hesabınızın bağlantı dizesini Depolama bağlantı dizenizi yapılandırma bölümünde oluşturulan ortam değişkeninden alır.

Bu kodu içine main()ekleyin:

        // Retrieve the connection string for use with the application. The storage
        // connection string is stored in an environment variable on the machine
        // running the application called AZURE_STORAGE_CONNECTION_STRING.
        // Note that _MSC_VER is set when using MSVC compiler.
        static const char* AZURE_STORAGE_CONNECTION_STRING = "AZURE_STORAGE_CONNECTION_STRING";
#if !defined(_MSC_VER)
        const char* connectionString = std::getenv(AZURE_STORAGE_CONNECTION_STRING);
#else
        // Use getenv_s for MSVC
        size_t requiredSize;
        getenv_s(&requiredSize, NULL, NULL, AZURE_STORAGE_CONNECTION_STRING);
        if (requiredSize == 0) {
            throw std::runtime_error("missing connection string from env.");
        }
        std::vector<char> value(requiredSize);
        getenv_s(&requiredSize, value.data(), value.size(), AZURE_STORAGE_CONNECTION_STRING);
        std::string connectionStringStr = std::string(value.begin(), value.end());
        const char* connectionString = connectionStringStr.c_str();
#endif

Dosya Paylaşımı Oluşturma

CreateFromConnectionString işlevini çağırarak ShareClient sınıfının bir örneğini oluşturun. Ardından, depolama hesabınızda gerçek dosya paylaşımını oluşturmak için CreateIfNotExists'i çağırın.

Bu kodu sonuna main()ekleyin:

using namespace Azure::Storage::Files::Shares;

std::string shareName = "sample-share";

// Initialize a new instance of ShareClient
auto shareClient = ShareClient::CreateFromConnectionString(connectionString, shareName);

// Create the files share. This will do nothing if the files share already exists.
std::cout << "Creating files share: " << shareName << std::endl;
shareClient.CreateIfNotExists();

Dosyaları Dosya Paylaşımına yükleme

Aşağıdaki kod parçacığı:

  1. "Hello Azure!" içeren bir dize bildirir.
  2. Kök ShareDirectoryClient'ı alıp Dosya Paylaşımı Oluştur bölümünden dosya paylaşımında GetFileClient'ı çağırarak bir ShareFileClient nesnesine başvuru alır.
  3. UploadFrom işlevini çağırarak dizeyi dosyaya yükler. Bu işlev, henüz yoksa dosyayı oluşturur veya mevcutsa güncelleştirir.

Bu kodu sonuna main()ekleyin:

std::string fileName = "sample-file";
uint8_t fileContent[] = "Hello Azure!";

// Create the ShareFileClient
ShareFileClient fileClient = shareClient.GetRootDirectoryClient().GetFileClient(fileName);

// Upload the file
std::cout << "Uploading file: " << fileName << std::endl;
fileClient.UploadFrom(fileContent, sizeof(fileContent));

Dosyanın meta verilerini ayarlama

ShareFileClient.SetMetadata işlevini çağırarak dosyanın meta veri özelliklerini ayarlayın.

Bu kodu sonuna main()ekleyin:

Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);

Dosyanın meta verilerini listeleme

ShareFileClient.GetProperties işlevini çağırarak bir dosyanın meta veri özelliklerini alın. Meta veriler döndürülen Valuealanının altındadırMetadata. Meta veriler, Dosyanın meta verilerini ayarlama bölümündeki örneğe benzer bir anahtar-değer çifti olacaktır.

// Retrieve the file properties
auto properties = fileClient.GetProperties().Value;
std::cout << "Listing blob metadata..." << std::endl;
for (auto metadata : properties.Metadata)
{
    std::cout << metadata.first << ":" << metadata.second << std::endl;
}

Dosyaları indirme

Karşıya yüklenen dosyanın özelliklerini kullanarak Dosya meta verilerini yeni std::vector<uint8_t> bir nesne olarak listeleme bölümündeki dosyanın özelliklerini aldıktan sonra. ShareFileClient temel sınıfında DownloadTo işlevini çağırarak daha önce oluşturulan dosyayı yeni std::vector<uint8_t> nesneye indirin. Son olarak, indirilen dosya verilerini görüntüleyin.

Bu kodu sonuna main()ekleyin:

std::vector<uint8_t> fileDownloaded(properties.FileSize);
fileClient.DownloadTo(fileDownloaded.data(), fileDownloaded.size());

std::cout << "Downloaded file contents: " << std::string(fileDownloaded.begin(), fileDownloaded.end()) << std::endl;

Dosyayı silme

Aşağıdaki kod, ShareFileClient.Delete işlevini çağırarak blobu Azure Depolama Dosyaları Paylaşımı'ndan siler.

std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();

Dosya paylaşımını silme

Aşağıdaki kod, ShareClient kullanarak Dosya Paylaşımı'nın tamamını silerek uygulamanın oluşturduğu kaynakları temizler . Sil'i seçin.

Bu kodu sonuna main()ekleyin:

std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();

Kodu çalıştırma

Bu uygulama bir kapsayıcı oluşturur ve Azure Blob Depolama bir metin dosyası yükler. Örnek daha sonra kapsayıcıdaki blobları listeler, dosyayı indirir ve dosya içeriğini görüntüler. Son olarak, uygulama blobu ve kapsayıcıyı siler.

Uygulamanın çıkışı aşağıdaki örneğe benzer:

Azure Files Shares storage v12 - C++ quickstart sample
Creating files share: sample-share
Uploading file: sample-file
Listing file metadata...
key1:value1
key2:value2
Downloaded file contents: Hello Azure!
Deleting file: sample-file
Deleting files share: sample-share

Sonraki adımlar

Bu hızlı başlangıçta, C++ kullanarak dosyaları karşıya yüklemeyi, indirmeyi ve listelemeyi öğrendiniz. Ayrıca Azure Depolama Dosyaları Paylaşımı oluşturmayı ve silmeyi de öğrendinsiniz.

C++ Blob Depolama örneğini görmek için devam edin: