hızlı başlangıç: Xamarin ile Azure Blob Depolama istemci kitaplığı v12

Xamarin ile v12 istemci kitaplığı Depolama Azure Blob 'u kullanmaya başlayın. 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.

Xamarin ile Azure Blob Depolama istemci kitaplığı v12 kullanın:

  • Kapsayıcı oluşturma
  • Azure Depolama'ya blob yükleme
  • Bir kapsayıcıdaki tüm Blobları listeleme
  • Blob 'u cihazınıza indirin
  • Kapsayıcı silme

Başvuru bağlantıları:

Önkoşullar

Ayarlanıyor

bu bölüm, Xamarin ile bir projeyi Azure Blob Depolama istemci kitaplığı v12 ile çalışacak şekilde hazırlama konusunda size yol gösterir.

Proje oluşturma

  1. Visual Studio açın ve boş bir form uygulaması oluşturun.
  2. Adlandırın: BlobQuickstartV12

Paketi yükler

  1. Çözüm Gezgini bölmesinde çözümünüze sağ tıklayın ve çözüm için NuGet paketlerini yönet' i seçin.
  2. Azure. Depolama araması yapın. Blob 'ları ve en son kararlı sürümü çözümünüzdeki tüm projelere yükler.

Uygulama çerçevesini ayarlama

BlobQuickstartV12 dizininden:

  1. Düzenleyicinizde MainPage. xaml dosyasını açın
  2. Öğeler arasındaki her şeyi kaldırın <ContentPage></ContentPage> ve aşağıdaki kodla değiştirin:
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">

    <Button x:Name="uploadButton" Text="Upload Blob" Clicked="Upload_Clicked"  IsEnabled="False"/>
    <Button x:Name="listButton" Text="List Blobs" Clicked="List_Clicked"  IsEnabled="False" />
    <Button x:Name="downloadButton" Text="Download Blob" Clicked="Download_Clicked"  IsEnabled="False" />
    <Button x:Name="deleteButton" Text="Delete Container" Clicked="Delete_Clicked" IsEnabled="False" />

    <Label Text="" x:Name="resultsLabel" HorizontalTextAlignment="Center" Margin="0,20,0,0" TextColor="Red" />

</StackLayout>

Azure portalından kimlik bilgilerinizi kopyalama

Örnek uygulama, Azure depolama 'ya istek yaptığında yetkilendirilmiş olmalıdır. Bir isteği yetkilendirmek için, depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi olarak ekleyin. Bu adımları izleyerek depolama hesabı kimlik bilgilerinizi görüntüleyin:

  1. Azure portalında oturum açın.

  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, MainPage. xaml. cs dosyanızda bir sınıf düzeyi değişkenine ayarlayın. Mainpaage. xaml. cs dosyasını açın ve değişkenini bulun storageConnectionString . <yourconnectionstring>Gerçek bağlantı dizeniz ile değiştirin.

Kod şu şekildedir:

string storageConnectionString = "<yourconnectionstring>";

Nesne modeli

Azure Blob Depolama, büyük miktarlarda yapılandırılmamış verileri depolamak için iyileştirilmiş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ındaki bir kapsayıcı
  • Kapsayıcıda bir blob

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

BLOB depolama mimarisi diyagramı

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

  • BlobServiceClient: BlobServiceClient sınıfı, Azure Depolama kaynaklarını ve blob kapsayıcılarını değiştirmenize olanak sağlar.
  • blobcontainerclient: BlobContainerClient sınıfı, Azure Depolama kapsayıcıları ve bloblarını değiştirmenize olanak sağlar.
  • blobclient: BlobClient sınıfı, Azure Depolama bloblarını değiştirmenize olanak sağlar.
  • Blobdownloadınfo: BlobDownloadInfo sınıfı, blob indirilmeden döndürülen özellikleri ve içeriği temsil eder.

Kod örnekleri

bu örnek kod parçacıkları, bir Xamarin. Forms uygulamasında .net için Azure Blob Depolama istemci kitaplığı ile aşağıdaki görevlerin nasıl gerçekleştirileceğini gösterir:

Sınıf düzeyi değişkenleri oluştur

Aşağıdaki kod birkaç sınıf düzeyi değişkenini bildirir. bu örneğin geri kalanı boyunca Azure Blob Depolama iletişim kurması gerekir.

Bunlar, depolama bağlantı dizesini yapılandırma bölümünde ayarlanan depolama hesabı için bağlantı dizesine ek niteliğindedir.

Bu kodu MainPage. xaml. cs dosyasında sınıf düzeyi değişkenleri olarak ekleyin:

string storageConnectionString = "{set in the Configure your storage connection string section}";
string fileName = $"{Guid.NewGuid()}-temp.txt";

BlobServiceClient client;
BlobContainerClient containerClient;
BlobClient blobClient;

Kapsayıcı oluşturma

Yeni kapsayıcı için bir ad belirleyin. Aşağıdaki kod, benzersiz olduğundan emin olmak için kapsayıcı adına bir GUID değeri ekler.

Ö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.

BlobServiceClient sınıfının bir örneğini oluşturun. Ardından, depolama hesabınızda kapsayıcıyı oluşturmak için Createblobcontainsısync yöntemini çağırın.

Bu kodu MainPage. xaml. cs dosyasına ekleyin:

protected async override void OnAppearing()
{            
    string containerName = $"quickstartblobs{Guid.NewGuid()}";

    client = new BlobServiceClient(storageConnectionString);
    containerClient = await client.CreateBlobContainerAsync(containerName);

    resultsLabel.Text = "Container Created\n";

    blobClient = containerClient.GetBlobClient(fileName);

    uploadButton.IsEnabled = true;
}

blob 'ları bir kapsayıcıya Upload

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

  1. Bir MemoryStream metin oluşturur.
  2. Blobcontainerclient sınıfının uploadasync işlevini çağırarak metin dosyası adına ve metin Içine geçirerek metni bir bloba yükler MemoryStream . Bu yöntem, daha önce oluşturulmadıysa bir blob oluşturur, aksi takdirde üzerine yazar.

Bu kodu MainPage. xaml. cs dosyasına ekleyin:

async void Upload_Clicked(object sender, EventArgs e)
{                                    
    using MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello World!"));

    await containerClient.UploadBlobAsync(fileName, memoryStream);

    resultsLabel.Text += "Blob Uploaded\n";

    uploadButton.IsEnabled = false;
    listButton.IsEnabled = true;
}

Kapsayıcıdaki blobları listeleme

Getblobsasync yöntemini çağırarak kapsayıcıdaki Blobları listeleyin. Bu durumda, kapsayıcıya yalnızca bir blob eklenmiş, bu nedenle listeleme işlemi yalnızca bir BLOB döndürüyor.

Bu kodu MainPage. xaml. cs dosyasına ekleyin:

async void List_Clicked(object sender, EventArgs e)
{            
    await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
    {
        resultsLabel.Text += blobItem.Name + "\n";                
    }

    listButton.IsEnabled = false;
    downloadButton.IsEnabled = true;
}

Blob’ları indirme

Downloadtoasync yöntemini çağırarak önceden oluşturulmuş blobu indirin. Örnek kod, bir Stream Blobun ilk önce bir ' a, MemoryStream sonra da metnin görüntülenebilmesi için bir öğesine kopyalar StreamReader .

Bu kodu MainPage. xaml. cs dosyasına ekleyin:

async void Download_Clicked(object sender, EventArgs e)
{
    BlobDownloadInfo downloadInfo = await blobClient.DownloadAsync();

    using MemoryStream memoryStream = new MemoryStream();

    await downloadInfo.Content.CopyToAsync(memoryStream);
    memoryStream.Position = 0;

    using StreamReader streamReader = new StreamReader(memoryStream);

    resultsLabel.Text += "Blob Contents: \n";
    resultsLabel.Text += await streamReader.ReadToEndAsync();
    resultsLabel.Text += "\n";

    downloadButton.IsEnabled = false;
    deleteButton.IsEnabled = true;
}

Kapsayıcı silme

Aşağıdaki kod, DeleteAsynckullanarak tüm kapsayıcıyı silerek uygulamanın oluşturduğu kaynakları temizler.

Uygulama ilk olarak blobu ve kapsayıcıyı silmeden önce onaylamanızı ister. Bu, kaynakların silinmeden önce doğru bir şekilde oluşturulduğunu doğrulamak iyi bir şansınız olur.

Bu kodu MainPage. xaml. cs dosyasına ekleyin:

async void Delete_Clicked(object sender, EventArgs e)
{            
    var deleteContainer = await Application.Current.MainPage.DisplayAlert("Delete Container",
        "You are about to delete the container proceeed?", "OK", "Cancel");

    if (deleteContainer == false)
        return;

    await containerClient.DeleteAsync();

    resultsLabel.Text += "Container Deleted";

    deleteButton.IsEnabled = false;
}

Kodu çalıştırma

Uygulama başlatıldığında, önce kapsayıcıyı göründüğü şekilde oluşturur. Daha sonra, Blobları karşıya yüklemek, listelemek, indirmek ve kapsayıcıyı silmek için düğmelere tıklacaksınız.

uygulamayı çalıştırmak için Windows F5 tuşuna basın. Uygulamayı Mac üzerinde çalıştırmak için cmd + ENTER tuşlarına basın.

Uygulama her işlemden sonra ekrana yazar. Uygulamanın çıktısı aşağıdaki örneğe benzer:

Container Created
Blob Uploaded
98d9a472-8e98-4978-ba4f-081d69d2e6f8-temp.txt
Blob Contents:
Hello World!
Container Deleted

Temizleme işlemine başlamadan önce, Blob içeriğinin ekrandaki çıkışının karşıya yüklenen değerle eşleştiğini doğrulayın.

Değerleri doğruladıktan sonra, kapsayıcıyı silme ve tanıtımı bitiş uyarısını onaylayın.

Sonraki adımlar

bu hızlı başlangıçta, Xamarin ile Azure Blob Depolama istemci kitaplığı v12 kullanarak blobları karşıya yükleme, indirme ve listeleme hakkında daha fazla öğrendiniz.

Blob depolama örnek uygulamalarını görmek için devam edin: