5️⃣سادهسازی توسعهی لوکال با Aspire 🚀
راهاندازی محیط توسعهی لوکال معمولاً آزاردهنده است. توسعهدهندهها ساعتها زمان صرف نصب دیتابیسها، تنظیم connection stringها و هماهنگ کردن وابستگیها با هم میکنند. 😵💫
حتی با وجود Docker، باز هم مقدار زیادی تنظیمات دستی وجود دارد؛ از جمله volumeها و کانفیگ هر کانتینر.
ءNET Aspire. این مشکل را با ارائهی یک روش یکپارچه برای مدیریت وابستگیها، پیکربندی و استقرار (deployment) حل میکند.
ءAspire یک application framework برای ساخت اپلیکیشنهای cloud-native، قابل مشاهده (observable) و آمادهی production با NET. است. این فریمورک بهصورت پیشفرض موارد زیر را هندل میکند:
• Service discovery
• Configuration
• Health checks
• Telemetry 📊
از نسخهی 13 به بعد، NET Aspire. به Aspire تغییر برند داد و حالا یک پلتفرم چندزبانه (multi-language) برای ساخت اپلیکیشن است.
ءAspire دو نوع پروژهی جدید به solution شما اضافه میکند:
🔸️ءAppHost: ارکستریتوری که معماری اپلیکیشن و وابستگیها را تعریف میکند.
🔹️ءServiceDefaults: تنظیمات مشترک و observability که روی همهی سرویسها اعمال میشود.
نحوهی اضافه کردن Aspire به پروژهی جدید
مرحله 1️⃣: نصب templateهای Aspire
dotnet new install Aspire.ProjectTemplates
مرحله 2️⃣: نصب Aspire CLI
dotnet tool install --global aspire.cli
مرحله 3️⃣: اضافه کردن Aspire به solution از طریق Visual Studio یا Rider، یا استفاده از CLI برای ساخت یک پروژهی جدید Aspire.
مرحله 4️⃣: تعریف وابستگیها در پروژهی AppHost
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var postgres = builder.AddPostgres("postgres");
builder
.AddProject<Projects.Products_Api>("products-api");
.WithReference(cache)
.WithReference(postgres);
builder.Build().Run();
مرحله 5️⃣: استفاده از connection stringها در پروژهی API
var postgresConnection = configuration.GetConnectionString("postgres");
var redisConnection = configuration.GetConnectionString("cache");ءAspire بهصورت خودکار connection stringها را از طریق environment variableها تزریق میکند. نیازی نیست آنها را دستی داخل appsettings.json تعریف کنید. ⚡️
با یکپارچگی Docker، وقتی پروژهی AppHost را اجرا میکنید، Aspire تمام وابستگیها را بهصورت خودکار بالا میآورد. PostgreSQL، Redis و هر سرویس دیگری داخل کانتینر اجرا میشوند و Aspire چرخهی عمر آنها را مدیریت میکند. 🐳
داشبورد Aspire در مرورگر باز میشود و همهی سرویسهای در حال اجرا، وضعیت سلامت، لاگها و distributed traceها را نمایش میدهد. 📈
مزایای کلیدی استفاده از Aspire
🔸️Simplified local development:
اجرای تمام سرویسها و دیتابیسها با یک دستور واحد.
🔹️Built-in observability:
یکپارچگی آماده با OpenTelemetry برای لاگ، متریک و تریس.
🔸️Service discovery:
سرویسها بدون URLهای هاردکد شده همدیگر را پیدا میکنند.
🔹️Configuration management:
پیکربندی متمرکز برای لوکال و کلاود.
🔸️Easy deployment:
استقرار کل سیستم روی Docker، Azure یا AWS با کمترین تنظیمات.
🔹️Consistent developer experience:
اعضای جدید تیم میتوانند کل سیستم را در چند دقیقه اجرا کنند. 🎯