Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
π’ .NET Aspire 9.0 adalah rilis utama dengan ketersediaan umum (GA) berikutnya dari .NET Aspire; yang mendukung dan:
Catatan
Anda dapat menggunakan .NET Aspire 9.0 dengan .NET 8 atau .NET 9!
Rilis ini mengatasi fitur yang paling banyak diminta dan masalah utama dari komunitas. Fitur terbaik digerakkan oleh komunitas! Untuk bergabung dengan komunitas, kunjungi kami di Discord untuk mengobrol dengan anggota tim dan berkolaborasi dengan kami di
GitHub.
Untuk informasi selengkapnya tentang versi .NET resmi dan dukungan versi .NET Aspire, lihat:
Untuk meningkatkan dari versi .NET Aspire yang lebih lama ke .NET Aspire 9, ikuti instruksi dalam panduan resmi peningkatan ke .NET.NET Aspire 9. Panduan ini memberikan instruksi terperinci tentang cara meningkatkan solusi .NET Aspire yang ada ke .NET Aspire 9. Apakah Anda melakukannya secara manual atau menggunakan Asisten Peningkatan, panduan ini membuat prosesnya menjadi lebih mudah.
.NET Aspire 9 mempermudah konfigurasi lingkungan Anda untuk mengembangkan aplikasi .NET Aspire. Anda tidak lagi memerlukan beban kerja .NET. Sebagai gantinya, Anda menginstal .NET.NET Aspire SDK baru ke dalam proyek host aplikasi solusi .NET.NET Aspire Anda. Untuk informasi selengkapnya, lihat penyiapan dan alat .NET.NET Aspire.
".NET.NET Aspire 9 memindahkan konten yang sebelumnya diinstal melalui beban kerja ke dalam paket NuGet terpisah." Ini termasuk templat untuk membuat proyek dan solusi .NET.NET Aspire baru. Templat ini diinstal menggunakan perintah dotnet new install
. Ini dapat diinstal dengan menjalankan perintah berikut:
dotnet new install Aspire.ProjectTemplates::9.0.0
Tip
Jika Anda sudah memiliki workload .NET.NET Aspire terpasang, Anda perlu menggunakan flag --force
untuk menimpa templat yang ada. Silakan uninstall beban kerja .NET.NET Aspire.
Untuk informasi selengkapnya, lihat templat .NET.NET Aspire.
Dasbor .NET.NET Aspire terus mengalami peningkatan dengan setiap rilis.
Fitur yang paling banyak diminta untuk dasbor adalah mengelola daur hidup sumber daya yang telah diorkestrasi dan diberi nama. Secara khusus, kemampuan untuk menghentikan, memulai, dan memulai ulang sumber daya. Fitur ini berfungsi untuk proyek, kontainer, dan executable. Ini memungkinkan menghidupkan ulang sumber daya individual tanpa harus menghidupkan ulang seluruh host aplikasi. Untuk sumber daya proyek, ketika debugger terhubung, itu akan dipasang kembali saat dimulai ulang. Untuk informasi selengkapnya, lihat dasbor .NET.NET Aspire: Menghentikan atau Memulai sumber daya.
Dasbor .NET Aspire sekarang dapat digunakan di perangkat seluler, dapat beradaptasi secara responsif dengan berbagai ukuran layar dan memungkinkan manajemen aplikasi .NET Aspire yang disebarkan secara mobile. Peningkatan aksesibilitas lainnya dilakukan, termasuk tampilan pengaturan dan konten yang meluap di perangkat seluler.
Tampilan detail sumber daya berisi beberapa peningkatan:
Properti dapat ditandai sebagai sensitif, secara otomatis menyembunyikannya di antarmuka pengguna dasbor. Fitur keamanan ini membantu menghindari pengungkapan kunci atau kata sandi secara tidak sengaja saat layar berbagi dasbor dengan orang lain. Misalnya, argumen kontainer dapat meneruskan informasi sensitif dan sebagainya diselubungi secara default.
Volume kontainer yang dikonfigurasi tercantum dalam detail sumber daya.
.NET .NET Aspire 9 menambahkan dukungan untuk pemeriksaan kesehatan. Informasi terperinci tentang pemeriksaan ini sekarang dapat dilihat di panel detail sumber daya, memperlihatkan mengapa sumber daya mungkin ditandai sebagai tidak sehat atau terdegradasi. Cari tahu lebih lanjut tentang pemeriksaan kesehatan di sini.
kode escape ANSI mengatur teks di terminal dengan mengontrol warna teks, warna latar, serta gaya seperti teks tebal, garis bawah, dan huruf miring. Sebelumnya, halaman log konsol dasbor hanya dapat merender satu kode escape ANSI pada satu waktu dan akan gagal ketika beberapa kode digabungkan bersamaan. Misalnya, teks tersebut dapat menampilkan teks berwarna merah, tetapi tidak dapat menampilkan teks yang berwarna merah dan bergaya tebal secara bersamaan.
Kontribusi komunitas dari @mangeg meningkatkan dukungan untuk kode escape ANSI dan menghapus batasan ini.
Peningkatan lain pada log konsol adalah menyembunyikan kode escape yang tidak didukung. Kode yang tidak terkait dengan menampilkan teks, seperti memosisikan kursor atau berkomunikasi dengan sistem operasi tidak masuk akal dalam UI ini, dan disembunyikan.
Telemetri tetap menjadi aspek penting dari .NET.NET Aspire. Di .NET.NET Aspire 9, banyak fitur baru diperkenalkan ke layanan Telemetri.
Jejak dapat disaring berdasarkan nilai atribut. Misalnya, jika Anda hanya ingin melihat jejak untuk satu titik akhir di aplikasi Anda, atribut http.route
pada permintaan HTTP dapat difilter ke nilai tertentu.
Pemfilteran telemetri juga mendukung pelengkapan otomatis nilai yang ada. Kotak dialog Tambahkan filter menyediakan kotak kombo untuk memilih dari nilai yang dapat dipilih yang tersedia di dasbor. Fitur ini membuatnya jauh lebih mudah untuk memfilter ke data nyata dan membantu menghindari kesalahan ketik dengan memasukkan nilai sendiri.
Untuk informasi selengkapnya, lihat dasbor .NET.NET Aspire: Memfilter jejak.
Saat sumber daya memiliki beberapa replika, Anda sekarang dapat memfilter telemetri untuk melihat data dari semua instans sekaligus. Pilih sumber daya induk, berlabel (application)
. Untuk informasi selengkapnya, lihat dasbor .NET.NET Aspire: Menggabungkan telemetri dari beberapa sumber daya.
Dasbor mendukung protokol OpenTelemetry (OTLP) melalui HTTP dan berbagi sumber daya lintas asal (CORS). Fitur-fitur ini membuka kunci kemampuan untuk mengirim OpenTelemetry dari aplikasi browser ke dasbor .NET Aspire.
Misalnya, aplikasi halaman tunggal (SPA) berbasis browser dapat mengonfigurasi JavaScript OpenTelemetry SDK untuk mengirim log, jejak, dan metrik terstruktur yang dibuat di browser ke dasbor. Telemetri browser ditampilkan bersama telemetri server.
halaman detail Trace dengan telemetri browser
Untuk informasi selengkapnya tentang mengonfigurasi telemetri browser, lihat dokumentasi Mengaktifkan telemetri browser.
host aplikasi
Jika Anda telah mengikuti .NET.NET Aspire, Anda sudah tahu bahwa proyek host aplikasi adalah tempat Anda menentukan model aplikasi. Anda membuat penyusun aplikasi terdistribusi, menambahkan dan mengonfigurasi sumber daya, dan mengekspresikan dependensinya. Sekarang, Anda dapat menentukan bahwa sumber daya harus menunggu untuk sumber daya lain sebelum memulai. Ini dapat membantu menghindari kesalahan koneksi selama startup dengan hanya memulai sumber daya ketika dependensinya "siap."
var builder = DistributedApplication.CreateBuilder(args);
var rabbit = builder.AddRabbitMQ("rabbit");
builder.AddProject<Projects.WebApplication1>("api")
.WithReference(rabbit)
.WaitFor(rabbit); // Don't start "api" until "rabbit" is ready...
builder.Build().Run();
Ketika host aplikasi mulai, host menunggu hingga sumber daya rabbit
siap sebelum mulai sumber daya api
.
Ada dua metode yang diekspos untuk menunggu sumber daya:
Untuk informasi selengkapnya, lihat host aplikasi .NET.NET Aspire: Menunggu sumber daya.
API WaitFor
menggunakan pemeriksaan kesehatan standar .NET untuk menentukan apakah sumber daya siap. Tetapi apa arti "sumber daya yang siap"? Bagian terbaiknya adalah, yang dapat dikonfigurasi oleh konsumen di luar nilai default mereka.
Ketika sumber daya tidak mengekspos pemeriksaan kesehatan apa pun (tidak ada pemeriksaan kesehatan yang terdaftar di aplikasi), host aplikasi menunggu sumber daya berada dalam status Running sebelum memulai sumber daya dependen.
Untuk sumber daya yang mengekspos endpoint HTTP, Anda dapat dengan mudah menambahkan pemeriksaan kesehatan yang memeriksa jalur spesifik untuk respons HTTP 200.
var builder = DistributedApplication.CreateBuilder(args);
var catalogApi = builder.AddContainer("catalog-api", "catalog-api")
.WithHttpEndpoint(targetPort: 8080)
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.WebApplication1>("store")
.WithReference(catalogApi.GetEndpoint("http"))
.WaitFor(catalogApi);
builder.Build().Run();
Contoh sebelumnya menambahkan pemeriksaan kesehatan ke sumber daya catalog-api
. Host aplikasi menunggu hingga pemeriksaan kesehatan menunjukkan status sehat sebelum memulai sumber daya store
. Ini menentukan bahwa sumber daya siap ketika titik akhir /health
mengembalikan kode status HTTP 200.
Saat store
menunggu catalog-api
menjadi sehat, sumber daya di dasbor muncul sebagai:
Mekanisme pemeriksaan kesehatan host aplikasi dibangun berdasarkan implementasi IHealthChecksBuilder dari namespace Microsoft.Extensions.Diagnostics.HealthChecks.
Pemeriksaan kesehatan sistem melaporkan hasil data, yang ditampilkan di dasbor.
Membuat pemeriksaan kesehatan kustom sangat mudah. Mulailah dengan menentukan pemeriksaan kesehatan, lalu kaitkan namanya dengan sumber daya apa pun yang berlaku untuknya.
var builder = DistributedApplication.CreateBuilder(args);
var healthyAfter = DateTime.Now.AddSeconds(20);
builder.Services.AddHealthChecks().AddCheck(
"delay20secs",
() => DateTime.Now > healthyAfter
? HealthCheckResult.Healthy()
: HealthCheckResult.Unhealthy()
);
var cache = builder.AddRedis("cache")
.WithHealthCheck("delay20secs");
builder.AddProject<Projects.MyApp>("myapp")
.WithReference(cache)
.WaitFor(cache);
Contoh sebelumnya menambahkan pemeriksaan status kesehatan ke sumber daya cache
, yang melaporkan status tidak sehat selama 20 detik pertama setelah host aplikasi dimulai. Jadi, sumber daya myapp
menunggu selama 20 detik sebelum memulai, memastikan sumber daya cache
sehat.
Metode AddCheck dan WithHealthCheck menyediakan mekanisme sederhana untuk membuat pemeriksaan kesehatan dan mengaitkannya dengan sumber daya tertentu.
Host aplikasi sekarang mendukung kontainer persisten. Kontainer persisten menyimpang dari siklus hidup kontainer khas aplikasi .NET.NET Aspire yang diorkestrasi. Meskipun dibuat dan dimulai (ketika belum tersedia) oleh orkestrator .NET Aspire, mereka tidak dihancurkan oleh .NET Aspire.
Ini berguna ketika Anda ingin menjaga kontainer tetap berjalan bahkan setelah host aplikasi berhenti.
Penting
Untuk menghapus kontainer ini, Anda harus menghentikannya secara manual menggunakan runtime kontainer.
Untuk menentukan IResourceBuilder<ContainerResource>
dengan masa pakai persisten, panggil metode WithLifetime dan teruskan ContainerLifetime.Persistent:
var builder = DistributedApplication.CreateBuilder(args);
var queue = builder.AddRabbitMQ("rabbit")
.WithLifetime(ContainerLifetime.Persistent);
builder.AddProject<Projects.WebApplication1>("api")
.WithReference(queue)
.WaitFor(queue);
builder.Build().Run();
Dasbor memperlihatkan kontainer persisten dengan ikon pin:
Setelah host aplikasi dihentikan, kontainer akan terus berjalan:
Mekanisme persistensi kontainer mencoba mengidentifikasi kapan Anda mungkin ingin membuat ulang kontainer. Misalnya, jika lingkungan untuk kontainer berubah, maka kontainer dimulai ulang sehingga Anda tidak perlu menghentikan kontainer secara manual jika konfigurasi input untuk sumber daya telah berubah.
Host aplikasi mendukung penambahan perintah kustom ke sumber daya. Ini berguna ketika Anda ingin menambahkan fungsionalitas kustom yang tidak didukung secara asli oleh host aplikasi. Kemungkinan ada banyak peluang di mana mengekspos metode ekstensi kustom pada sumber daya akan berguna. .NET .NET Aspire Community Toolkit mungkin merupakan tempat yang baik untuk berbagi ekstensi ini.
Saat Anda menentukan perintah kustom, perintah tersebut tersedia di dasbor sebagai fitur pengalaman pengguna.
Penting
Perintah dasbor .NET.NET Aspire ini hanya tersedia saat menjalankan dasbor secara lokal. Mereka tidak bisa digunakan saat menjalankan dasbor di Azure Container Apps.
Untuk informasi selengkapnya tentang membuat perintah sumber daya kustom, lihat Cara: Membuat perintah sumber daya kustom di .NET.NET Aspire.
Host aplikasi sekarang menambahkan semua kontainer ke jaringan umum bernama default-aspire-network
. Ini berguna ketika Anda ingin berkomunikasi antara kontainer tanpa melalui jaringan host. Ini juga memudahkan migrasi dari docker compose ke host aplikasi, karena kontainer dapat berkomunikasi satu sama lain menggunakan nama kontainer.
Model peristiwa memungkinkan pengembang untuk terhubung ke siklus hidup aplikasi dan sumber daya. Ini berguna untuk menjalankan kode kustom pada titik tertentu dalam siklus hidup aplikasi. Ada berbagai cara untuk berlangganan peristiwa, termasuk peristiwa global dan peristiwa per sumber daya.
Peristiwa Global :
Peristiwa global dianalogikan dengan peristiwa siklus hidup host aplikasi. Untuk informasi selengkapnya, lihat siklus hidup host aplikasi .
Peristiwa per sumber daya:
Untuk informasi selengkapnya, lihat peristiwa di .NET.NET Aspire.
.NET .NET Aspire terus menambahkan integrasi yang memudahkan Anda memulai layanan dan alat favorit Anda. Untuk informasi selengkapnya, lihat gambaran umum integrasi .NET.NET Aspire.
Dukungan untuk Redis Insights tersedia di sumber daya Redis:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddRedis("redis")
.WithRedisInsight(); // Starts a Redis Insight container image
// that is pre-configured to work with the
// Redis instance.
Metode ekstensi WithRedisInsight dapat diterapkan ke beberapa sumber daya Redis dan masing-masing akan terlihat di dasbor Redis Insight.
Untuk informasi selengkapnya, lihat Tambah sumber daya Redis menggunakan Redis Insights.
Dimulai dengan .NET Aspire 9, integrasi OpenAI tambahan tersedia yang memungkinkan untuk menggunakan pustaka resmi OpenAI dotnet terbaru secara langsung. Integrasi klien mendaftarkan OpenAIClient sebagai layanan tunggal dalam kumpulan layanan. Klien dapat digunakan untuk berinteraksi dengan API OpenAIREST.
Selain itu, integrasi .NET AspireAzureOpenAI yang sudah tersedia ditingkatkan untuk menyediakan cara yang fleksibel untuk mengonfigurasi OpenAIClient
untuk layanan Azure AI OpenAI atau API OpenAIREST khusus dengan metode penyusun AddOpenAIClientFromConfiguration(IHostApplicationBuilder, String) baru. Contoh berikut mendeteksi apakah string koneksi adalah untuk layanan AzureAzure AI OpenAI dan mendaftarkan instans OpenAIClient
yang paling tepat secara otomatis.
builder.AddOpenAIClientFromConfiguration("openai");
Misalnya, jika koneksi openai
terlihat seperti Endpoint=https://{account}.azure.com;Key={key};
, maka bisa jadi dapat mendaftarkan klien AzureAzure AI OpenAI karena nama domain. Jika tidak, akan digunakan OpenAIClient
yang umum.
Baca resolusi klien Azure-agnostik untuk detail selengkapnya.
Menambahkan dukungan untuk menentukan nama pengguna dan kata sandi MongoDB saat menggunakan metode ekstensi AddMongoDB(IDistributedApplicationBuilder, String, Nullable<Int32>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>). Jika tidak ditentukan, nama pengguna dan kata sandi acak dihasilkan tetapi dapat ditentukan secara manual menggunakan sumber daya parameter.
var builder = DistributedApplication.CreateBuilder(args);
var username = builder.AddParameter("mongousername");
var password = builder.AddParameter("mongopassword", secret: true);
var db = builder.AddMongo("db", username, password);
Bagian berikut ini menjelaskan penyempurnaan Azure yang ditambahkan dalam .NET Aspire 9. Untuk daftar lengkap semua perubahan signifikan, lihat Perubahan signifikan di .NET.NET Aspire 9.
Di .NET Aspire 8, menyesuaikan sumber daya Azure ditandai sebagai eksperimental karena pustaka Azure.Provisioning
yang mendasarinya baru guna mengumpulkan umpan balik sebelum dapat ditetapkan sebagai stabil. Dalam .NET.NET Aspire 9 API ini diperbarui dan menghapus atribut eksperimental.
Azure perubahan penamaan sumber daya
Sebagai bagian dari pembaruan ke pustaka Azure.Provisioning, skema penamaan default untuk sumber daya Azure diperbarui dengan dukungan yang lebih baik untuk berbagai kebijakan penamaan. Namun, pembaruan ini menghasilkan perubahan pada bagaimana sumber daya diberi nama. Kebijakan penamaan baru dapat mengakibatkan sumber daya Azure yang ada ditinggalkan dan sumber daya Azure baru dibuat, setelah memperbarui aplikasi .NET Aspire Anda dari 8 menjadi 9. Untuk tetap menggunakan kebijakan penamaan yang sama dari .NET.NET Aspire 8, Anda dapat menambahkan kode berikut ke AppHost Anda Program.cs:
var builder = DistributedApplication.CreateBuilder(args);
builder.Services.Configure<AzureProvisioningOptions>(options =>
{
options.ProvisioningBuildOptions.InfrastructureResolvers.Insert(0, new AspireV8ResourceNamePropertyResolver());
});
Azure sumber daya SQL, PostgreSQL, dan Redis berbeda dari sumber daya Azure lainnya karena ada sumber daya kontainer lokal untuk teknologi ini. Di .NET Aspire 8, untuk membuat sumber daya Azure ini, Anda perlu memulai dengan sumber daya kontainer lokal dan kemudian "Sebagai" atau "PublishAs" ke sumber daya Azure. Desain ini memperkenalkan masalah dan tidak sesuai dengan API lain.
Misalnya, Anda mungkin memiliki kode ini di .NET.NET Aspire 8:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.PublishAsAzureSqlDatabase();
var pgsql = builder.AddPostgres("pgsql")
.PublishAsAzurePostgresFlexibleServer();
var cache = builder.AddRedis("cache")
.PublishAsAzureSqlDatabase();
Dalam .NET.NET Aspire 9 API ini ditandai sebagai usang dan pola API baru diterapkan:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddAzureSqlServer("sql")
.RunAsContainer();
var pgsql = builder.AddAzurePostgresFlexibleServer("pgsql")
.RunAsContainer();
var cache = builder.AddAzureRedis("cache")
.RunAsContainer();
Untuk membuat aplikasi .NET Aspire lebih aman, Azure Database untuk sumber daya PostgreSQL dan Azure Cache for Redis diperbarui untuk menggunakan ID Microsoft Entra secara default. Ini memerlukan perubahan pada aplikasi yang perlu terhubung ke sumber daya ini. Lihat berikut ini untuk memperbarui aplikasi untuk menggunakan ID Microsoft Entra untuk menyambungkan ke sumber daya ini:
Contoh berikut menunjukkan cara mengonfigurasi aplikasi Anda untuk menyambungkan ke sumber daya Azure menggunakan ID Microsoft Entra:
Jika Anda perlu menggunakan kata sandi atau mengakses autentikasi kunci (tidak disarankan), Anda dapat ikut serta dengan kode berikut:
var builder = DistributedApplication.CreateBuilder(args);
var pgsql = builder.AddAzurePostgresFlexibleServer("pgsql")
.WithPasswordAuthentication();
var cache = builder.AddAzureRedis("cache")
.WithAccessKeyAuthentication();
Dukungan untuk Azure Functions adalah salah satu fitur yang paling banyak diminta pada issue tracker .NET.NET Aspire dan kami senang memperkenalkan dukungan pratinjau untuk fitur ini pada rilis ini. Untuk menunjukkan dukungan ini, mari kita gunakan .NET.NET Aspire untuk membuat dan menyebarkan webhook.
Untuk memulai, buat proyek baru AzureVisual Studio Functions menggunakan dialog. Saat diminta, pilih kotak centang Daftar dalam orkestrasi Aspire saat membuat proyek.
Dalam proyek host aplikasi, amati bahwa terdapat PackageReference
pada paket NuGet baru π¦Aspire.Hosting.Azure.Functions:
<ItemGroup>
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.0.0" />
<PackageReference Include="Aspire.Hosting.Azure.Functions" Version="9.0.0" />
</ItemGroup>
Paket ini menyediakan API AddAzureFunctionsProject<TProject>(IDistributedApplicationBuilder, String) yang dapat dipanggil di host aplikasi untuk mengonfigurasi proyek Azure Functions dalam host .NET Aspire:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureFunctionsProject<Projects.PigLatinApp>("piglatinapp");
builder.Build().Run();
Dalam contoh ini, webhook bertanggung jawab untuk menerjemahkan string input ke dalam Pig Latin. Perbarui konten pemicu kami dengan kode berikut:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using System.Text;
using FromBodyAttribute = Microsoft.Azure.Functions.Worker.Http.FromBodyAttribute;
namespace PigLatinApp;
public class Function1(ILogger<Function1> logger)
{
public record InputText(string Value);
public record PigLatinText(string Value);
[Function("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
[FromBody] InputText inputText)
{
logger.LogInformation("C# HTTP trigger function processed a request.");
var result = TranslateToPigLatin(inputText.Value);
return new OkObjectResult(new PigLatinText(result));
}
private static string TranslateToPigLatin(string input)
{
if (string.IsNullOrEmpty(input))
{
return input;
}
var words = input.Split(' ');
StringBuilder pigLatin = new();
foreach (string word in words)
{
if (IsVowel(word[0]))
{
pigLatin.Append(word + "yay ");
}
else
{
int vowelIndex = FindFirstVowelIndex(word);
if (vowelIndex is -1)
{
pigLatin.Append(word + "ay ");
}
else
{
pigLatin.Append(
word.Substring(vowelIndex) + word.Substring(0, vowelIndex) + "ay ");
}
}
}
return pigLatin.ToString().Trim();
}
private static int FindFirstVowelIndex(string word)
{
for (var i = 0; i < word.Length; i++)
{
if (IsVowel(word[i]))
{
return i;
}
}
return -1;
}
private static bool IsVowel(char c) =>
char.ToLower(c) is 'a' or 'e' or 'i' or 'o' or 'u';
}
Atur titik henti pada baris logger.LogInformation
pertama dari metode Run
dan tekan F5 untuk memulai host Functions. Setelah dasbor .NET.NET Aspire diluncurkan, Anda mengamati hal berikut:
.NET .NET Aspire memiliki:
Gunakan klien HTTP pilihan favorit Anda untuk mengirim permintaan ke pemicu dan mengamati input yang terikat dari isi permintaan di debugger.
curl --request POST \
--url http://localhost:7282/api/Function1 \
--header 'Content-Type: application/json' \
--data '{
"value": "Welcome to Azure Functions"
}'
Sekarang Anda siap untuk menyebarkan aplikasi kami ke Azure Container Apps (ACA). Penyebaran saat ini bergantung pada build pratinjau paket SDK Azure Functions Worker dan Worker. Jika perlu, tingkatkan versi yang dirujuk dalam proyek Functions:
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.0.0-preview2" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.0-preview2" />
</ItemGroup>
Anda juga perlu mengekspos titik akhir publik untuk proyek Azure Functions kami sehingga permintaan dapat dikirim ke pemicu HTTP kami:
builder.AddAzureFunctionsProject<Projects.PigLatinApp>("piglatinapp")
.WithExternalHttpEndpoints();
Untuk menyebarkan aplikasi dengan azd
CLI, Anda harus mendapatkan versi terbaru terlebih dahulu. Untuk menginstal versi terbaru, Anda akan melihat peringatan jika versi Anda sudah kedaluarsa. Ikuti instruksi untuk memperbarui ke versi terbaru.
Setelah diinstal, navigasikan ke folder yang berisi proyek host aplikasi dan jalankan azd init
:
$ azd init
Initializing an app to run on Azure (azd init)
? How do you want to initialize your app? Use code in the current directory
(β) Done: Scanning app code in current directory
Detected services:
.NET (Aspire)
Detected in: ./PigLatinApp/PigLatinApp.AppHost/PigLatinApp.AppHost.csproj
azd will generate the files necessary to host your app on Azure using Azure Container Apps.
? Select an option Confirm and continue initializing my app
? Enter a new environment name: azfunc-piglatin
Generating files to run your app on Azure:
(β) Done: Generating ./azure.yaml
(β) Done: Generating ./next-steps.md
SUCCESS: Your app is ready for the cloud!
Kemudian, sebarkan aplikasi dengan menjalankan azd up
:
$ azd up
? Select an Azure Subscription to use: 130. [redacted]
? Select an Azure location to use: 50. (US) West US 2 (westus2)
Packaging services (azd package)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: [redacted]
Location: West US 2
You can view detailed progress in the Azure Portal:
[redacted]
(β) Done: Resource group: rg-azfunc-piglatin (967ms)
(β) Done: Container Registry: [redacted] (13.316s)
(β) Done: Log Analytics workspace: [redacted] (16.467s)
(β) Done: Container Apps Environment: [redacted] (1m35.531s)
(β) Done: Storage account: [redacted] (21.37s)
Deploying services (azd deploy)
(β) Done: Deploying service piglatinapp
- Endpoint: {{endpoint-url}}
Aspire Dashboard: {{dashboard-url}}
Terakhir, uji aplikasi Functions yang Anda sebarkan menggunakan klien HTTP favorit Anda:
curl --request POST \
--url {{endpoint-url}}/api/Function1 \
--header 'Content-Type: application/json' \
--data '{
"value": "Welcome to Azure Functions"
}'
Dukungan untuk Azure Functions di .NET Aspire masih dalam pratinjau, dengan dukungan hanya untuk sejumlah terbatas pemicu, termasuk:
Untuk informasi selengkapnya, lihat integrasi resmi .NET AspireAzure Functions (Pratinjau).
Salah satu fitur yang paling banyak diminta adalah kemampuan untuk menyesuaikan Azure Container Apps yang dibuat host aplikasi tanpa menyentuh Bicep. Ini dimungkinkan dengan menggunakan API PublishAsAzureContainerApp<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure,ContainerApp>) dan PublishAsAzureContainerApp<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure,ContainerApp>) di namespace Aspire.Hosting.Azure.AppContainers
. Metode ini menyesuaikan definisi Aplikasi Kontainer Azure yang dibuat host aplikasi.
Tambahkan referensi paket ke file proyek Anda:
<ItemGroup>
<PackageReference Include="Aspire.Hosting.Azure.AppContainers"
Version="9.0.0" />
</ItemGroup>
Contoh berikut menunjukkan cara menskalakan Azure Container App ke replika nol (0
):
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddAzurePostgresFlexibleServer("pg")
.RunAsContainer()
.AddDatabase("db");
// Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
#pragma warning disable AZPROVISION001
builder.AddProject<Projects.WebApplication1>("api")
.WithReference(db)
.PublishAsAzureContainerApp((module, containerApp) =>
{
// Scale to 0
containerApp.Template.Value!.Scale.Value!.MinReplicas = 0;
});
#pragma warning restore AZPROVISION001
builder.Build().Run();
Contoh kode sebelumnya menuguhkan pembuatan definisi Aplikasi Kontainer Azure ke host aplikasi. Ini memungkinkan Anda untuk menyesuaikan definisi Aplikasi Kontainer Azure tanpa perlu menjalankan azd infra synth
dan memodifikasi file bicep yang dihasilkan secara tidak aman.
Umpan balik .NET Aspire
.NET Aspire adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Modul
Mengkustomisasi aplikasi .NET Aspire untuk menggunakan sumber daya Azure yang ada - Training
Dalam modul ini, Anda akan mempelajari cara memindahkan layanan pendukung untuk aplikasi .NET Aspire yang dihosting Azure dari kontainer ke layanan Azure asli.
Sertifikasi
Bersertifikat Microsoft: Azure Developer Associate - Certifications
Bangun solusi end-to-end di Microsoft Azure untuk membuat Azure Functions, menerapkan dan mengelola aplikasi web, mengembangkan solusi yang menggunakan penyimpanan Azure, dan banyak lagi.