Aracılığıyla paylaş


Öğretici: ASP.NET Core uygulamasını .NET Aspire depolama tümleştirmelerine bağlama

Bulutta yerel uygulamalar genellikle blob depolama, kuyruklar veya yarı yapılandırılmış NoSQL veritabanları gibi özellikler sağlayan ölçeklenebilir depolama çözümleri gerektirir. .NET Aspire tümleştirmeleri, Azure Blob Storagegibi çeşitli depolama hizmetlerine bağlantıları basitleştirir. Bu öğreticide, ASP.NET Core tümleştirmeleri kullanarak .NET Aspire ve Azure Blob Storage Kuyruk Depolama'ya bağlanan ve destek biletleri gönderen bir Azure uygulaması oluşturacaksınız. Uygulama, biletleri işlenmek üzere bir kuyruğa gönderir ve bir eki depolama alanına yükler. Nasıl yapılacağını öğreneceksiniz:

  • .NET tümleştirmelerini kullanacak şekilde ayarlanmış temel bir .NET Aspire uygulaması oluşturma
  • Birden çok depolama hizmetlerine bağlanmak için .NET.NET Aspire tümleştirmeleri ekleme
  • Veri göndermek ve almak için .NET.NET Aspire Bileşeni özelliklerini yapılandırma ve kullanma

Önkoşullar

.NET .NET Aspireile çalışmak için aşağıdakilerin yerel olarak yüklenmesi gerekir:

Daha fazla bilgi için bkz. .NET.NET Aspire kurulum ve araçve .NET.NET Aspire SDK.

Tamamlanan örnek uygulamayı keşfetme

Bu öğreticideki örnek uygulamanın tamamlanmış bir sürümü GitHubüzerinde kullanılabilir. Proje aynı zamanda için bir şablon olarak yapılandırılmıştır; yani komutunu kullanarakaracı yüklediyseniz kaynak sağlamayı otomatikleştirebilirsiniz.

git clone https://github.com/Azure-Samples/dotnet-aspire-connect-storage.git

Azure Depolama kaynaklarını ayarlama

Bu makale için blob kapsayıcısı ve depolama kuyruğu olan bir Azure Depolama hesabında veri katkıcısı erişimine ihtiyacınız olacaktır. Aşağıdaki kaynaklara ve yapılandırmalara sahip olduğunuzdan emin olun:

Bu makale için, bir öykünücü kullanarak yerel geliştirme ortamınızda blob kapsayıcısı ve depolama kuyruğu kaynakları oluşturmanız gerekir. Bunu yapmak için Azurite kullanın. Azurite, Docker kapsayıcısında çalışan, ücretsiz, açık kaynak kodlu, platformlar arası, Azure depolama API’si ile uyumlu bir sunucu (öykünücü)dur.

Öykünücüyü kullanmak için Azuriteyüklemeniz gerekir.

  1. Azure Depolama hesabı - Depolama hesabı oluşturma.
  2. adlı bir Blob Depolama kapsayıcısında - dosyaları yükleyin.adlı bir blob depolama kapsayıcısı oluşturun.
  3. bilet adlı bir Depolama Kuyruğu oluşturma - .

Gerekli Azure Depolama kaynaklarını ayarlamak için Azure CLI veya CloudShell'de aşağıdaki komutları çalıştırın:

az group create --name aspirestorage --location eastus2
az storage account create -n aspirestorage -g aspirestorage -l eastus2
az storage container create -n fileuploads --account-name aspirestorage
az storage queue create -n tickets --account-name aspirestorage

Ayrıca, Visual Studio oturum açtığınız kullanıcı hesabına aşağıdaki rolleri atamanız gerekir:

Azure Developer CLI, şablon sistemi kullanarak Azure kaynakları sağlamanızı ve dağıtmanızı sağlar. Bu öğretici, gerekli kaynaklarını sağlayan ve tamamlanmış örnek uygulama kodunu içeren Azure sağlar. Şablonu başlatmak ve çalıştırmak için aşağıdaki komutları çalıştırın:

  1. azd auth login'e oturum açmak için Azure çalıştırın.

    azd auth login
    
  2. Örnek şablonu kopyalamak ve başlatmak için azd init çalıştırın:

    azd init --template dotnet-aspire-connect-storage
    
  3. azd up kaynaklarını sağlamak için Azure çalıştırın:

    azd up
    
  4. İstendiğinde, sağlanan kaynaklar için aboneliği ve Azure bölgeyi seçin. Şablon sizin için aşağıdaki görevleri çalıştırır ve tamamlar:

    • Blob ve kuyruk hizmetlerinin etkinleştirildiği bir Azure Depolama Hesabı oluşturur
    • fileUploads adlı bir blob depolama kapsayıcısı oluşturur
    • tickets adlı bir kuyruk oluşturur
    • Şablonu çalıştıran kullanıcı hesabına aşağıdaki rolleri atar.
      • Depolama Blob Verileri Katkı Sağlayan
      • Depolama Kuyruğu Veri Katkı Sağlayıcısı

İşlem başarıyla tamamlandıktan sonra, ileriye doğru iki seçeneğiniz vardır:

  • 1. Seçenek: Tamamlanan uygulamayla deneme yapmak için şablon .NET dizininde src örnek uygulamasını çalıştırın.
  • 2. Seçenek: İlerideki bölümleri kullanarak örnek uygulamayı adım adım oluşturun ve Azuretarafından sağlanan azd kaynaklarına bağlayın.

Örnek çözümü oluşturma

.NET Aspire veya Visual Studio CLI kullanarak bir .NET projesi oluşturun.

  1. Visual Studioüst kısmında Dosya>Yeni>Projeadresine gidin.
  2. İletişim kutusunda Aspire arayın ve .NET.NET Aspire başlangıç uygulamasıseçin. Sonrakiseçin.
  3. Yeni projenizi yapılandırma ekranında:
    • AspireStorage Çözüm Adı girin ve sonrakiseçin.
  4. Ek bilgiler ekranında:
    • Redis önbelleğe almak için kullan seçeneğinin işaretini kaldırın (bu öğretici için gerekli değildir).
    • oluştur'useçin.

Visual Studio, ASP.NET Corekullanacak şekilde yapılandırılmış yeni bir .NET Aspire çözümü oluşturur.

Çözüm aşağıdaki projelerden oluşur:

  • AspireStorage.ApiService - Varsayılan .NET.NET Aspire hizmet yapılandırmalarına sahip bir API projesi.
  • AspireStorage.AppHost - Uygulamanızın farklı projelerini ve hizmetlerini bağlamak ve yapılandırmak için tasarlanmış bir düzenleyici projesi. Orkestratör, başlangıç projesi olarak ayarlanmalıdır.
  • AspireStorage.ServiceDefaults - Çözümünüzdeki projeler arasında yeniden kullanılabilecek kodu tutmak için paylaşılan bir sınıf kitaplığı.
  • AspireStorage.Web - Uygulamanızın ön ucu olarak hizmet veren bir BlazorServer projesi.

Worker Service projesini ekleme

Ardından, Worker Service Depolama kuyruğuna eklenen iletileri almak ve işlemek için çözüme bir Azure projesi ekleyin.

  1. Çözüm gezgininde AspireStorage çözüm düğümü üst düzeye sağ tıklayın ve EkleYeni projeöğesini seçin.
  2. Worker Service şablonunu arayıp seçin ve İleriseçin.
  3. Proje adıiçin, AspireStorage.WorkerService değerini girin ve İleriseçeneğini seçin.
  4. Ek bilgiler ekranında:
    • .NET 9.0 seçildiğinden emin olun.
    • düzenleme Listele seçeneğinin işaretli olduğundan emin olun ve Oluşturöğesini seçin.

Visual Studio projeyi çözümünüze ekler ve Program.cs projesinin dosyasını yeni bir kod satırıyla güncelleştirir:

builder.AddProject<Projects.AspireStorage_WorkerService>(
    "aspirestorage-workerservice");

Visual Studio araçları, yeni projenizi düzenleme özelliklerini etkinleştiren IDistributedApplicationBuilder nesnesine kaydetmek için bu kod satırını ekledi. Daha fazla bilgi için bkz. .NET.NET Aspire düzenlemeye genel bakış.

Tamamlanan çözüm yapısı aşağıdakine benzemelidir:

.NET.NET Aspire depolama örneği çözümünün yapısını gösteren ekran görüntüsü.

.NET Aspire uygulamasına Blazor tümleştirmeleri ekleme

.NET Aspire projenize Azure Blob Storage ve Azure paketlerini ekleyin:

dotnet add package Aspire.Azure.Storage.Blobs
dotnet add package Aspire.Azure.Storage.Queues

AspireStorage.Web projeniz artık .NET.NET Aspire tümleştirmelerini kullanacak şekilde ayarlanmıştır. Güncelleştirilmiş AspireStorage.Web.csproj dosyası aşağıdadır:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\AspireStorage.ServiceDefaults\AspireStorage.ServiceDefaults.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.Azure.Storage.Blobs" Version="9.1.0" />
    <PackageReference Include="Aspire.Azure.Storage.Queues" Version="9.1.0" />
  </ItemGroup>

</Project>

Sonraki adım, tümleştirmeleri uygulamaya eklemektir.

Program.cs projesinin dosyasında, AddAzureBlobClient oluşturulduktan sonra ancak AddAzureQueueClientçağrısından önce builder ve AddServiceDefaults uzantı yöntemlerine çağrılar ekleyin. Daha fazla bilgi için bkz. .NET.NET Aspire hizmet varsayılanları. Bağlantı dizenizin adını parametre olarak belirtin.

using AspireStorage.Web;
using AspireStorage.Web.Components;

using Azure.Storage.Blobs;
using Azure.Storage.Queues;

var builder = WebApplication.CreateBuilder(args);

builder.AddAzureBlobClient("BlobConnection");
builder.AddAzureQueueClient("QueueConnection");

// Add service defaults & Aspire components.
builder.AddServiceDefaults();

// Add services to the container.
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();

builder.Services.AddOutputCache();

builder.Services.AddHttpClient<WeatherApiClient>(client =>
    {
        // This URL uses "https+http://" to indicate HTTPS is preferred over HTTP.
        // Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes.
        client.BaseAddress = new("https+http://apiservice");
    });

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error", createScopeForErrors: true);
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}
else
{
    // In development, create the blob container and queue if they don't exist.
    var blobService = app.Services.GetRequiredService<BlobServiceClient>();
    var docsContainer = blobService.GetBlobContainerClient("fileuploads");

    await docsContainer.CreateIfNotExistsAsync();

    var queueService = app.Services.GetRequiredService<QueueServiceClient>();
    var queueClient = queueService.GetQueueClient("tickets");

    await queueClient.CreateIfNotExistsAsync();
}

app.UseHttpsRedirection();

app.UseStaticFiles();
app.UseAntiforgery();

app.UseOutputCache();

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

app.MapDefaultEndpoints();

app.Run();
using AspireStorage.Web;
using AspireStorage.Web.Components;

using Azure.Storage.Blobs;
using Azure.Storage.Queues;

var builder = WebApplication.CreateBuilder(args);

builder.AddAzureBlobClient("BlobConnection");
builder.AddAzureQueueClient("QueueConnection");

// Add service defaults & Aspire components.
builder.AddServiceDefaults();

// Add services to the container.
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();

builder.Services.AddOutputCache();

builder.Services.AddHttpClient<WeatherApiClient>(client =>
    {
        // This URL uses "https+http://" to indicate HTTPS is preferred over HTTP.
        // Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes.
        client.BaseAddress = new("https+http://apiservice");
    });

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error", createScopeForErrors: true);
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();

app.UseStaticFiles();
app.UseAntiforgery();

app.UseOutputCache();

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

app.MapDefaultEndpoints();

app.Run();

Ek using deyimleriyle, bu yöntemler aşağıdaki görevleri gerçekleştirir:

AspireStorage.Web projesi başlatıldığında, Azurite Blob Depolama'da bir fileuploads kapsayıcı ve Azurite Kuyruk Depolama'da bir tickets kuyruk oluşturulacaktır. Uygulama bir geliştirme ortamında çalışırken bu koşulludur. Uygulama bir üretim ortamında çalışırken kapsayıcı ve kuyruğun önceden oluşturulmuş olduğu varsayılır.

.NET Aspire entegrasyonunu Worker Service'e ekle

İşçi hizmeti, işlenmek üzere Azure Depolama kuyruğundan mesajların çekilmesini yürütür. .NET Aspire Azure Kuyruk Depolama tümleştirmesi tümleştirme paketini AspireStorage.WorkerService uygulamanıza ekleyin:

dotnet add package Aspire.Azure.Storage.Queues

Program.cs projesinin dosyasında, AddAzureQueueClient oluşturulmasından sonra ve builderçağrılmadan önce AddServiceDefaults genişletme metodu için bir çağrı ekleyin.

using AspireStorage.WorkerService;

var builder = Host.CreateApplicationBuilder(args);

builder.AddAzureQueueClient("QueueConnection");

builder.AddServiceDefaults();
builder.Services.AddHostedService<WorkerService>();

var host = builder.Build();
host.Run();

Bu yöntem aşağıdaki görevleri işler:

  • QueueServiceClientbağlanmak için DI kapsayıcısına bir Azure Storage Queues kaydedin.
  • İlgili hizmetler için sağlık denetimlerini, günlüğe kaydetmeyi ve telemetriyi otomatik olarak etkinleştirin.

Formu oluşturma

Uygulama, kullanıcının destek bileti bilgilerini gönderebilmesi ve ek yükleyebilmesi için bir form gerektirir. Uygulama, eklenen Documentkullanarak IFormFile (Azure Blob Storage) özelliğindeki ekli dosyayı BlobServiceClient yükler. QueueServiceClient Title Depolama Kuyruğuna Description ve Azure oluşan bir ileti gönderir.

AspireStorage.Web/Components/Pages dizinindeki Home.razor dosyasının içeriğini değiştirerek temel bir form oluşturmak için aşağıdaki Razor işaretlemesini kullanın:

@page "/"

@using System.ComponentModel.DataAnnotations
@using Azure.Storage.Blobs
@using Azure.Storage.Queues

@inject BlobServiceClient BlobClient
@inject QueueServiceClient QueueServiceClient

<PageTitle>Home</PageTitle>

<div class="text-center">
    <h1 class="display-4">Request Support</h1>
</div>

<EditForm Model="@Ticket" FormName="Tickets" method="post"
          OnValidSubmit="@HandleValidSubmit" enctype="multipart/form-data">
    <DataAnnotationsValidator />
    <ValidationSummary />

    <div class="mb-4">
        <label>Issue Title</label>
        <InputText class="form-control" @bind-Value="@Ticket.Title" />
        <ValidationMessage For="() => Ticket.Title" />
    </div>
    <div class="mb-4">
        <label>Issue Description</label>
        <InputText class="form-control" @bind-Value="@Ticket.Description" />
        <ValidationMessage For="() => Ticket.Description" />
    </div>
    <div class="mb-4">
        <label>Attachment</label>
        <InputFile class="form-control" name="Ticket.Document" />
        <ValidationMessage For="() => Ticket.Document" />
    </div>
    <button class="btn btn-primary" type="submit">Submit</button>
    <button class="btn btn-danger mx-2" type="reset" @onclick=@ClearForm>Clear</button>
</EditForm>

@code {
    [SupplyParameterFromForm(FormName = "Tickets")]
    private SupportTicket Ticket { get; set; } = new();

    private async Task HandleValidSubmit()
    {
        var docsContainer = BlobClient.GetBlobContainerClient("fileuploads");

        // Upload file to blob storage
        await docsContainer.UploadBlobAsync(
            Ticket.Document.FileName,
            Ticket.Document.OpenReadStream());

        // Send message to queue
        var queueClient = QueueServiceClient.GetQueueClient("tickets");

        await queueClient.SendMessageAsync(
             $"{Ticket.Title} - {Ticket.Description}");

        ClearForm();
    }

    private void ClearForm() => Ticket = new();

    private class SupportTicket()
    {
        [Required] public string Title { get; set; } = default!;
        [Required] public string Description { get; set; } = default!;
        [Required] public IFormFile Document { get; set; } = default!;
    }
}

'da form oluşturma hakkında daha fazla bilgi için bkz.formlara genel bakış .

AppHost'u güncelleştir

AspireStorage.AppHost projesi, uygulamanız için düzenleyicidir. Uygulamanızın farklı proje ve hizmetlerini bağlamak ve yapılandırmak sizin sorumluluğunuzdadır. Orkestratör, başlangıç projesi olarak ayarlanmalıdır.

Azure'inize IDistributedApplicationBuilder Depolama barındırma desteği eklemek için 📦Aspire.Hosting.Azure.Storage NuGet paketini yükleyin.

dotnet add package Aspire.Hosting.Azure.Storage

Program.cs projesindeki dosyasının içeriğini aşağıdaki kodla değiştirin:

using Microsoft.Extensions.Hosting;

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("Storage");

if (builder.Environment.IsDevelopment())
{
    storage.RunAsEmulator();
}

var blobs = storage.AddBlobs("BlobConnection");
var queues = storage.AddQueues("QueueConnection");

var apiService = builder.AddProject<Projects.AspireStorage_ApiService>("apiservice");

builder.AddProject<Projects.AspireStorage_Web>("webfrontend")
    .WithExternalHttpEndpoints()
    .WithReference(apiService)
    .WithReference(blobs)
    .WithReference(queues); 

builder.AddProject<Projects.AspireStorage_WorkerService>("aspirestorage-workerservice")
    .WithReference(queues);

builder.Build().Run();

Önceki kod, Azure depolama, bloblar ve kuyruklar ekler ve geliştirme modundayken öykünücüyü kullanır. Her proje, bağımlı oldukları bu kaynaklar için başvurular tanımlar.

using Microsoft.Extensions.Hosting;

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("Storage");

var blobs = storage.AddBlobs("BlobConnection");
var queues = storage.AddQueues("QueueConnection");

var apiService = builder.AddProject<Projects.AspireStorage_ApiService>("apiservice");

builder.AddProject<Projects.AspireStorage_Web>("webfrontend")
    .WithExternalHttpEndpoints()
    .WithReference(apiService)
    .WithReference(blobs)
    .WithReference(queues); 

builder.AddProject<Projects.AspireStorage_WorkerService>("aspirestorage-workerservice")
    .WithReference(queues);

builder.Build().Run();

Yukarıdaki kod Azure depolama, blob ve kuyruk ekler ve bunlara bağımlı olan her projede bu kaynaklar için başvurular tanımlar.

Kuyruktaki öğeleri işleme

tickets kuyruğuna yeni bir mesaj yerleştirildiğinde, işçi hizmeti bu mesajı almalı, işlemeli ve silmelidir. Worker.cs sınıfını güncelleştirin ve içeriğini aşağıdaki kodla değiştirin:

using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;

namespace AspireStorage.WorkerService;

public sealed class WorkerService(
    QueueServiceClient client,
    ILogger<WorkerService> logger) : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        var queueClient = client.GetQueueClient("tickets");
        await queueClient.CreateIfNotExistsAsync(cancellationToken: stoppingToken);

        while (!stoppingToken.IsCancellationRequested)
        {
            QueueMessage[] messages =
                await queueClient.ReceiveMessagesAsync(
                    maxMessages: 25, cancellationToken: stoppingToken);

            foreach (var message in messages)
            {
                logger.LogInformation(
                    "Message from queue: {Message}", message.MessageText);

                await queueClient.DeleteMessageAsync(
                    message.MessageId,
                    message.PopReceipt,
                    cancellationToken: stoppingToken);
            }

            // TODO: Determine an appropriate time to wait 
            // before checking for more messages.
            await Task.Delay(TimeSpan.FromSeconds(15), stoppingToken);
        }
    }
}

Çalışan hizmetinin iletileri işleyebilmesi için önce Azure Depolama kuyruğuna bağlanabilmesi gerekir. Azurite ile, çalışan hizmetin mesaj kuyruğu işlemeye başlamadan önce kuyruğun kullanılabilir olduğundan emin olmanız gerekir.

using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;

namespace AspireStorage.WorkerService;

public sealed class WorkerService(
    QueueServiceClient client,
    ILogger<WorkerService> logger) : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        var queueClient = client.GetQueueClient("tickets");
        while (!stoppingToken.IsCancellationRequested)
        {
            QueueMessage[] messages =
                await queueClient.ReceiveMessagesAsync(
                    maxMessages: 25, cancellationToken: stoppingToken);

            foreach (var message in messages)
            {
                logger.LogInformation(
                    "Message from queue: {Message}", message.MessageText);

                await queueClient.DeleteMessageAsync(
                    message.MessageId,
                    message.PopReceipt,
                    cancellationToken: stoppingToken);
            }

            // TODO: Determine an appropriate time to wait 
            // before checking for more messages.
            await Task.Delay(TimeSpan.FromSeconds(15), stoppingToken);
        }
    }
}

Çalışan hizmeti, Azure Depolama kuyruğuna bağlanarak iletileri kuyruktan çekip işler.

Çalışan hizmeti, kuyruktaki iletileri işler ve işlendiğinde siler.

Bağlantı dizelerini yapılandırma

AspireStorage ve AspireStorage.Worker projeleri daha önce oluşturduğunuz doğru Azure Depolama Hesabına bağlanacak şekilde yapılandırılmalıdır. Her projedeki appsettings.json dosyasını kullanarak depolama hesabındaki blob ve kuyruk hizmetlerinin uç noktalarını belirtebilirsiniz.

  1. AspireStorage projesinde, appsettings.Development.json dosyasına aşağıdaki yapılandırmayı ekleyin:

      "ConnectionStrings": {
        "BlobConnection": "https://<your-storage-account-name>.blob.core.windows.net/",
        "QueueConnection": "https://<your-storage-account-name>.queue.core.windows.net/"
      }
    
  2. AspireStorage.Worker projesinde, appsettings.Development.json dosyasına aşağıdaki yapılandırmayı ekleyin:

      "ConnectionStrings": {
        "QueueConnection": "https://<your-storage-account-name>.queue.core.windows.net/"
      }
    

Uygulamayı yerel olarak çalıştırma ve test edin

Örnek uygulama artık test için hazırdır. Aşağıdaki adımları tamamlayarak gönderilen form verilerinin Azure Blob Storage ve Azure Kuyruk Depolama'ya gönderildiğini doğrulayın:

  1. Visual Studio proje panonuzu tarayıcıda başlatmak için .NET Aspire üst kısmındaki çalıştır düğmesine basın.

  2. Kaynaklar sayfasındaki aspirestorage.web satırında, uygulamanızın kullanıcı arabirimini açmak için Uç Noktalar sütunundaki bağlantıya tıklayın.

    .NET.NET Aspire destek uygulamasının giriş sayfasını gösteren ekran görüntüsü.

  3. Title ve Description form alanlarına örnek veriler girin ve karşıya yüklenecek basit bir dosya seçin.

  4. Gönder düğmesini seçtiğinizde form işlenmek üzere destek biletini gönderir ve formu temizler.

  5. Ayrı bir tarayıcı sekmesinde Azure portalını kullanarak Depolama Hesabınızdaki Azure'ye gidin.

  6. Kapsayıcılar'yi seçin ve karşıya yüklenen dosyayı görmek için Belgeler kapsayıcısına gidin.

  7. panosunun Project günlüklerine bakarak ve açılan listeden aspirestorage.workerservice seçerek kuyrukta iletinin işlendiğini doğrulayabilirsiniz.

    Çalışan uygulamasının konsol çıkışını gösteren ekran görüntüsü.

Özet

Oluşturduğunuz örnek uygulama, bir ASP.NET CoreBlazor Web Uygulamasından kalıcı blobları ve .NET Worker Serviceiçindeki kuyrukları işlemeyi gösterir. Uygulamanız Azure tümleştirmeleri kullanarak .NET Aspire Depolama'ya bağlanır. Uygulama, işlenmek üzere destek biletlerini bir kuyruğa gönderir ve bir eki depolama alanına yükler.

Çünkü Azurite kullanmayı seçtiniz, öykünücü bağlamında kaynakları yerel olarak oluşturduğunuz için testleri bitirdiğinizde bu kaynakları temizlemeniz gerekmez. Öykünücü, herhangi bir Azure kaynağı sağlanmadığından veya oluşturulmadığından, herhangi bir ücret ödemeden uygulamanızı yerel olarak test etmenizi sağlamaktaydı.

Kaynakları temizleme

Oluşturduğunuz Azure kaynaklarına artık ihtiyacınız kalmadığında kaynak grubunu silmek için aşağıdaki Azure CLI komutunu çalıştırın. Kaynak grubunun silinmesi, içinde yer alan kaynakları da siler.

az group delete --name <your-resource-group-name>

Daha fazla bilgi için 'da kaynakları temizleme bölümüne bakın Azure.