Hızlı Başlangıç: .NET için Azure Blob depolama istemci kitaplığı v11

Kullanmaya başlayın .NET için Azure Blob Depolama v11 istemci kitaplığıyla birlikte. Azure Blob Depolama, Microsoft'un bulut için nesne depolama çözümüdür. Paketi yüklemek ve temel görevler için örnek kodu denemek için adımları izleyin. Blob depolama, çok miktarda yapılandırılmamış veriyi depolamak için iyileştirilmiştir.

Not

Bu hızlı başlangıçta Azure Blob depolama istemci kitaplığının eski bir sürümü ekleyebilirsiniz. En son sürümüyle çalışmaya başlamanız için bkz. Hızlı Başlangıç: .NET için Azure Blob depolama istemci kitaplığı v12.

.NET için Azure Blob Depolama istemci kitaplığını kullanarak şunları yapmak için:

  • Kapsayıcı oluşturma
  • Kapsayıcı üzerinde izinleri ayarlama
  • Azure Depolama'de blob oluşturma
  • Blobu yerel bilgisayarınıza indirme
  • Kapsayıcıda yer alan tüm blobları listele
  • Kapsayıcı silme

Ek kaynaklar:

Önkoşullar

Ayarlama

Bu bölümde, .NET için Azure Blob Depolama istemci kitaplığıyla Depolama proje hazırlamada size yol göstermektedir.

Proje oluşturma

İlk olarak blob-quickstart adlı bir .NET Core uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi) komutunu kullanarak dotnet new blob-quickstart adıyla yeni bir konsol uygulaması oluşturun. Bu komut, tek bir kaynak Merhaba Dünya basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs.

    dotnet new console -n blob-quickstart
    
  2. Yeni oluşturulan blob-quickstart klasörüne geçiş yap ve her şey düzgün olduğunu doğrulamak için uygulamayı derle.

    cd blob-quickstart
    
    dotnet build
    

Derlemeden beklenen çıktı şuna benzer şekilde görünüyor:

C:\QuickStarts\blob-quickstart> dotnet build
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 44.31 ms for C:\QuickStarts\blob-quickstart\blob-quickstart.csproj.
  blob-quickstart -> C:\QuickStarts\blob-quickstart\bin\Debug\netcoreapp2.1\blob-quickstart.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.08

Paketi yükleme

Uygulama dizinindeyken, komutunu kullanarak Azure Blob Depolama .NET paketi için istemci kitaplığını dotnet add package yükleyin.

dotnet add package Microsoft.Azure.Storage.Blob

Uygulama çerçevesini ayarlama

Proje dizininden:

  1. Program.cs dosyasını düzenleyicide açın
  2. deyimini Console.WriteLine kaldırma
  3. Yönergeler using ekleme
  4. Örneğin ProcessAsync ana kodunun bulunduğu bir yöntem oluşturma
  5. yöntemine zaman uyumsuz olarak ProcessAsync çağrısı Main

Kod şu şekildedir:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

namespace blob_quickstart
{
    class Program
    {
        public static async Task Main()
        {
            Console.WriteLine("Azure Blob Storage - .NET quickstart sample\n");

            await ProcessAsync();

            Console.WriteLine("Press any key to exit the sample application.");
            Console.ReadLine();
        }

        private static async Task ProcessAsync()
        {
        }
    }
}

Azure portalından kimlik bilgilerinizi kopyalama

Örnek uygulama Azure Depolama isteği Depolama yetkilendirilmiş olması gerekir. Bir isteği yetkilendirmek için depolama hesabı kimlik bilgilerinizi bir bağlantı dizesi olarak uygulamaya ekleyin. Bu adımları izleyerek depolama hesabı kimlik bilgilerinizi görüntüleyin:

  1. Azure portal.

  2. Depolama hesabınızı bulun.

  3. Depolama hesabına genel bakışın Ayarlar bölümünde Erişim anahtarları’nı seçin. Burada, hesap erişim anahtarlarınızı ve her anahtar için tam bağlantı dizesini görüntüleyebilirsiniz.

  4. key1 bölümünde Bağlantı dizesi değerini bulun ve Kopyala düğmesini seçerek bağlantı dizesini kopyalayın. Sonraki adımda bir ortam değişkenine bağlantı dizesini 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ı dizenizi kopyaladıktan sonra uygulamayı çalıştıran yerel makine üzerindeki 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. yerine <yourconnectionstring> gerçek bağlantı dizenizi kullanın.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Ortam değişkenlerini uygulamanıza Windows, komut penceresinin yeni bir örneğini başlatmalısınız.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Ortam değişkenlerini ekledikten sonra, ortam değişkenlerini 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.

Nesne modeli

Azure Blob depolama, çok büyük miktarlarda yapılandırılmamış verilerin depolanması için en iyi duruma getirilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanıma bağlı olmayan verilerdir. Blob depolama üç tür kaynak sunar:

  • Depolama hesabı.
  • Depolama hesabı içinde bir kapsayıcı
  • Kapsayıcıda blob

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.

Blob depolama mimarisi diyagramı

Bu kaynaklarla etkileşim kurmak için aşağıdaki .NET sınıflarını kullanın:

  • CloudStorageAccount:sınıfı CloudStorageAccount Azure depolama hesabınızdır. Hesap erişim anahtarlarınızı kullanarak Blob depolamaya erişimi yetkilendirmek için bu sınıfı kullanın.
  • CloudBlobClient: CloudBlobClient sınıfı, kodundaki Blob hizmetine bir erişim noktası sağlar.
  • CloudBlobContainer: CloudBlobContainer sınıfı, kodunuzda bir blob kapsayıcısı temsil eder.
  • CloudBlockBlob: CloudBlockBlob Nesnesi, kodundaki bir blok blobu temsil eder. Blok blobları, ayrı ayrı yönetilebilen veri bloklarından oluşur.

Kod örnekleri

Bu örnek kod parçacıkları. .NET için Azure Blob depolama istemci kitaplığıyla aşağıdaki işlemleri nasıl gerçekleştirebilirsiniz:

İstemcinin kimliğini doğrulama

Aşağıdaki kod, ortam değişkeninin depolama hesabını işaret alan bir CloudStorageAccount nesnesi oluşturmak için ayrıştırılana bir bağlantı dizesi içerdiğini denetler. Bağlantı dizesinin geçerli olup olmadığını denetlemek için TryParse yöntemini kullanın. Başarılı TryParse olursa, değişkeni başlatılır ve storageAccount true döndürür.

Yöntemin içine şu kodu ProcessAsync 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. If the 
// environment variable is created after the application is launched in a 
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
string storageConnectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");

// Check whether the connection string can be parsed.
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
    // If the connection string is valid, proceed with operations against Blob
    // storage here.
    // ADD OTHER OPERATIONS HERE
}
else
{
    // Otherwise, let the user know that they need to define the environment variable.
    Console.WriteLine(
        "A connection string has not been defined in the system environment variables. " +
        "Add an environment variable named 'AZURE_STORAGE_CONNECTION_STRING' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the application.");
    Console.ReadLine();
}

Not

Bu makaledeki işlemlerin geri kalanını gerçekleştirmek için yukarıdaki kodda yer alan yerine // ADD OTHER OPERATIONS HERE aşağıdaki bölümlerde yer alan kod parçacıklarını girin.

Kapsayıcı oluşturma

Kapsayıcıyı oluşturmak için öncelikle CloudBlobClient nesnesinin depolama hesabınızdaki Blob depolama alanına işaret eden bir örneğini oluşturun. Ardından, CloudBlobContainer nesnesinin bir örneğini ve sonra kapsayıcıyı oluşturun.

Bu durumda kod, kapsayıcıyı oluşturmak için CreateAsync yöntemini çağırır. Kapsayıcı adının benzersiz olduğundan emin olmak için kapsayıcı adına bir GUID değeri eklenir. Bir üretim ortamında, kapsayıcı oluşturmak için CreateIfNotExistsAsync yönteminin yalnızca henüz mevcut olmayan bir şekilde kullanımı tercih edilir.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir. Kapsayıcıları ve blobları adlandırma hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.

// Create the CloudBlobClient that represents the 
// Blob storage endpoint for the storage account.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Create a container called 'quickstartblobs' and 
// append a GUID value to it to make the name unique.
CloudBlobContainer cloudBlobContainer = 
    cloudBlobClient.GetContainerReference("quickstartblobs" + 
        Guid.NewGuid().ToString());
await cloudBlobContainer.CreateAsync();

Kapsayıcı üzerinde izinleri ayarlama

Kapsayıcıda tüm blobların genel olacak şekilde kapsayıcı izinlerini ayarlayın. Bir blob herkese açık ise, herhangi bir istemci tarafından anonim olarak erişilebilir.

// Set the permissions so the blobs are public.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);

Upload kapsayıcıya blobları depolama

Aşağıdaki kod parçacığı, önceki bölümde oluşturulan CloudBlockBlob kapsayıcıda GetBlockBlobReference yöntemini çağırarak bir nesneye başvuru alır. Ardından UploadFromFileAsync yöntemini çağırarak seçilen yerel dosyayı bloba yükler. Bu yöntem, daha önce oluşturulmadıysa bir blob oluşturur, aksi takdirde üzerine yazar.

// Create a file in your local MyDocuments folder to upload to a blob.
string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFileName = "QuickStart_" + Guid.NewGuid().ToString() + ".txt";
string sourceFile = Path.Combine(localPath, localFileName);
// Write text to the file.
File.WriteAllText(sourceFile, "Hello, World!");

Console.WriteLine("Temp file = {0}", sourceFile);
Console.WriteLine("Uploading to Blob storage as blob '{0}'", localFileName);

// Get a reference to the blob address, then upload the file to the blob.
// Use the value of localFileName for the blob name.
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(localFileName);
await cloudBlockBlob.UploadFromFileAsync(sourceFile);

Kapsayıcıdaki blobları listeleme

ListBlobsSegmentedAsync yöntemini kullanarak kapsayıcıda blobları listele. Bu durumda, kapsayıcıya yalnızca bir blob eklenmiştir, bu nedenle listeleme işlemi yalnızca bir blob döndürür.

Bir çağrıda (varsayılan olarak 5000'den fazla) döndüren çok fazla blob varsa yöntem, toplam sonuç kümesi segmentini ve devamlılık ListBlobsSegmentedAsync belirteci döndürür. Blobların sonraki segmentini almak için, devamlılık belirteci null olana kadar önceki çağrı tarafından döndürülen devamlılık belirtecini art arda sağlayın. Null devamlılık belirteci tüm blobların alındığını gösterir. Kod, en iyi yöntemler için devamlılık belirteci kullanmayı gösterir.

// List the blobs in the container.
Console.WriteLine("List blobs in container.");
BlobContinuationToken blobContinuationToken = null;
do
{
    var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);
    // Get the value of the continuation token returned by the listing call.
    blobContinuationToken = results.ContinuationToken;
    foreach (IListBlobItem item in results.Results)
    {
        Console.WriteLine(item.Uri);
    }
} while (blobContinuationToken != null); // Loop while the continuation token is not null.

Blob’ları indirme

DownloadToFileAsync yöntemini kullanarak daha önce oluşturulan blobu yerel dosya sisteminize indirin. Örnek kod, blob adına "_DOWNLOADED" soneki ekler, böylece her iki dosyayı da yerel dosya sisteminde görebilirsiniz.

// Download the blob to a local file, using the reference created earlier.
// Append the string "_DOWNLOADED" before the .txt extension so that you 
// can see both files in MyDocuments.
string destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);

Kapsayıcı silme

Aşağıdaki kod, CloudBlobContainer.DeleteAsynckullanarak kapsayıcının tamamını silerek uygulamanın oluşturduğu kaynakları temizler. Ayrıca isterseniz yerel dosyaları silebilirsiniz.

Console.WriteLine("Press the 'Enter' key to delete the example files, " +
    "example container, and exit the application.");
Console.ReadLine();
// Clean up resources. This includes the container and the two temp files.
Console.WriteLine("Deleting the container");
if (cloudBlobContainer != null)
{
    await cloudBlobContainer.DeleteIfExistsAsync();
}
Console.WriteLine("Deleting the source, and downloaded files");
File.Delete(sourceFile);
File.Delete(destinationFile);

Kodu çalıştırma

Bu uygulama, yerel MyDocuments klasörünüzde bir test dosyası oluşturur ve blob depolamaya yükler. Örnek daha sonra kapsayıcıda blobları listeler ve eski ve yeni dosyaları karşılaştırarak dosyayı yeni bir adla indirir.

Uygulama dizininize gidin, sonra uygulamayı derleme ve çalıştırma.

dotnet build
dotnet run

Uygulamanın çıktısı aşağıdaki örnektekine benzer:

Azure Blob storage - .NET Quickstart example

Created container 'quickstartblobs33c90d2a-eabd-4236-958b-5cc5949e731f'

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-96
97c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f
4db.txt'

Listing blobs in container.
https://storagesamples.blob.core.windows.net/quickstartblobs33c90d2a-eabd-4236-
958b-5cc5949e731f/QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt

Downloading blob to C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926
-a9da-9697c748f4db_DOWNLOADED.txt

Press any key to delete the example files and example container.

Devam etmek için Enter tuşuna bastığınızda uygulama, depolama kapsayıcısını ve dosyaları siler. Silmeden önce, MyDocuments klasörünüzde iki dosyayı denetleyin. Dosyaları açarak aynı olduklarını görebilirsiniz. Konsol penceresinden blob URL’sini kopyalayıp tarayıcıya yapıştırarak blobun içeriğini görüntüleyin.

Dosyaları doğruladıktan sonra, tanıtımı tamamlamak ve test dosyalarını silmek için herhangi bir tuşa basın.

Sonraki adımlar

Bu hızlı başlangıçta .NET kullanarak blobları karşıya yükleme, indirme ve listeleme hakkında bilgi edindiniz.

Blob depolamaya görüntü yük eden bir web uygulaması oluşturma hakkında bilgi edinmek için devam edin: