
ASP.NET Aspire چیست؟ راهنمای کامل استفاده از Aspire در .NET برای ساخت و مدیریت Microservice ها
ASP.NET Aspire چیست؟ راهنمای کامل استفاده از Aspire در دات نت
مقدمه
با رشد معماری Microservice و Distributed Systems، مدیریت سرویسهای متعدد، ارتباط میان آنها، لاگگیری، مانیتورینگ و پیکربندی به یکی از چالشهای اصلی توسعهدهندگان تبدیل شده است.
مایکروسافت برای حل این مشکل، در .NET 8 فناوری جدیدی به نام ASP.NET Aspire را معرفی کرد.
Aspire مجموعهای از ابزارها، کتابخانهها و قابلیتهای آماده است که توسعه و مدیریت برنامههای توزیعشده را سادهتر میکند.
به زبان ساده:
اگر قبلاً برای اجرای چندین سرویس مجبور بودید Docker Compose، OpenTelemetry، Service Discovery و Monitoring را به صورت جداگانه تنظیم کنید، Aspire بسیاری از این کارها را به شکل آماده در اختیار شما قرار میدهد.
ASP.NET Aspire دقیقا چیست؟
Aspire یک Framework برای توسعه برنامههای توزیعشده (Distributed Applications) در اکوسیستم .NET است.
این فریمورک امکانات زیر را فراهم میکند:
Service Discovery
Service Orchestration
Telemetry
Logging
Monitoring
Health Checks
Dashboard
Container Integration
Cloud Native Development
چرا Aspire ایجاد شد؟
قبل از Aspire توسعهدهندگان معمولاً با مشکلات زیر مواجه بودند:
پیچیدگی اجرای چند سرویس
سخت بودن مانیتورینگ
تنظیمات متعدد OpenTelemetry
مدیریت Connection String ها
Service Discovery
پیکربندی Docker Compose
مایکروسافت Aspire را معرفی کرد تا این مشکلات را برطرف کند.
مزایای استفاده از Aspire
1. راهاندازی سریع Microservice ها
به جای اجرای دستی چندین پروژه:
Auth Service
User Service
Order Service
Notification Service
Gateway
همه سرویسها توسط یک AppHost اجرا میشوند.
2. داشبورد داخلی
Aspire دارای داشبورد داخلی است که اطلاعات زیر را نمایش میدهد:
سرویسهای فعال
Log ها
Trace ها
Metrics
Health Status
3. مانیتورینگ خودکار
بدون نیاز به تنظیم دستی:
OpenTelemetry
Tracing
Metrics
همه چیز به صورت خودکار فعال میشود.
4. Service Discovery
به جای:
https://localhost:5001
میتوانید از نام سرویس استفاده کنید:
builder.Services.AddHttpClient("user-service");
5. آماده برای Cloud
Aspire برای استقرار روی:
Azure
Docker
Kubernetes
Linux Servers
طراحی شده است.
اجزای اصلی Aspire
AppHost
مغز اصلی سیستم است.
تمام سرویسها در این پروژه ثبت میشوند.
مثال:
var builder = DistributedApplication.CreateBuilder(args);
var api = builder.AddProject<Projects.Api>("api");
builder.Build().Run();
Service Defaults
تنظیمات مشترک بین تمام سرویسها را نگهداری میکند.
مانند:
Logging
Telemetry
Health Checks
Dashboard
داشبورد مدیریتی برای مشاهده:
Metrics
Logs
Requests
Performance
چه زمانی باید از Aspire استفاده کنیم؟
استفاده از Aspire مناسب است اگر:
چند API دارید.
معماری Microservice دارید.
از Message Broker استفاده میکنید.
نیاز به مانیتورینگ دارید.
قصد استقرار در Cloud دارید.
چه زمانی Aspire مناسب نیست؟
اگر فقط یک پروژه کوچک دارید:
MVC
Web API
WinForms
Console
معمولاً نیازی به Aspire ندارید.
مزایای اصلی Aspire در پروژههای چند سرویسه دیده میشود.
ابزارهای مشابه Aspire
Docker Compose
مزایا:
سبک
ساده
معایب:
فاقد Dashboard
فاقد Telemetry داخلی
Kubernetes
مزایا:
بسیار قدرتمند
مقیاسپذیری بالا
معایب:
پیچیدگی زیاد
نیاز به دانش DevOps
Dapr
مزایا:
Service Discovery
Pub/Sub
معایب:
نیاز به یادگیری جداگانه
مقایسه Aspire با Docker Compose
ویژگی | Aspire | Docker Compose |
|---|---|---|
Dashboard | دارد | ندارد |
Telemetry | دارد | ندارد |
Logging | دارد | محدود |
Service Discovery | دارد | محدود |
Integration with .NET | عالی | متوسط |
ساخت اولین پروژه Aspire
ابتدا SDK مربوطه را نصب کنید:
dotnet workload install aspire
سپس:
dotnet new aspire
ساختار پروژه:
MyApplication
├── AppHost
├── ServiceDefaults
├── ApiService
└── WebApp
اتصال پروژههای موجود به Aspire
فرض کنید پروژه زیر را دارید:
MySolution
├── UserApi
├── ProductApi
└── OrderApi
یک پروژه Aspire AppHost ایجاد کنید.
سپس:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.UserApi>("user-api");
builder.AddProject<Projects.ProductApi>("product-api");
builder.AddProject<Projects.OrderApi>("order-api");
builder.Build().Run();
اضافه کردن Service Defaults
در Program.cs هر سرویس:
builder.AddServiceDefaults();
سپس:
app.MapDefaultEndpoints();
استفاده از Service Discovery
فرض کنید User Service داریم:
builder.AddProject<Projects.UserApi>("user-api");
در سرویس دیگر:
builder.Services.AddHttpClient(
"user-api");
Aspire آدرس سرویس را پیدا میکند.
نیازی به Connection String یا URL دستی نیست.
اضافه کردن SQL Server
var sql = builder.AddSqlServer("sql");
ساخت دیتابیس:
var db = sql.AddDatabase("MainDb");
اتصال API:
builder.AddProject<Projects.Api>("api")
.WithReference(db);
اضافه کردن Redis
var redis = builder.AddRedis("redis");
سپس:
.WithReference(redis)
اضافه کردن RabbitMQ
var rabbit = builder.AddRabbitMQ("rabbit");
اتصال:
.WithReference(rabbit)
مانیتورینگ با Aspire Dashboard
پس از اجرای AppHost:
dotnet run
داشبورد Aspire باز میشود و میتوانید مشاهده کنید:
درخواستها
خطاها
زمان پاسخگویی
مصرف منابع
وضعیت سرویسها
Aspire در پروژههای DDD
اگر پروژه شما دارای لایههای زیر است:
Domain
Application
Infrastructure
Presentation
Aspire فقط در سطح Host و Infrastructure قرار میگیرد و هیچ وابستگی به Domain ایجاد نمیکند.
بنابراین کاملاً با:
DDD
Clean Architecture
CQRS
Mediator
سازگار است.
جمعبندی
ASP.NET Aspire نسل جدید ابزارهای مایکروسافت برای توسعه برنامههای توزیعشده است. این فناوری بسیاری از قابلیتهایی که قبلاً نیازمند ابزارهای متعدد بودند، مانند Service Discovery، Logging، Monitoring و Telemetry را به صورت یکپارچه در اختیار توسعهدهندگان قرار میدهد.
اگر پروژه شما شامل چندین API، سرویسهای مستقل، Redis، RabbitMQ یا معماری Microservice است، استفاده از Aspire میتواند توسعه، تست و نگهداری سیستم را به شکل قابل توجهی سادهتر کند.
آیا این مقاله مفید بود؟
نظرات
پرسشها و دیدگاههای خود را درباره این مقاله ثبت کنید.
در حال دریافت دیدگاهها...