Chuyển tới nội dung chính

15.11 — 10. .NET Aspire (.NET 8+)

Mục tiêu bài học

  • Nắm được ý chính của bài và mối liên hệ với module.
  • Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
  • Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.

Nội dung bài học

15.11.1 — Aspire là gì?

.NET Aspire là opinionated framework cho cloud-native local development — thay thế cho việc viết docker-compose.yml phức tạp khi develop.

15.11.2 — AppHost Project

// AppHost/Program.cs
var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddRedis("redis");
var sqlServer = builder.AddSqlServer("sqlserver")
.AddDatabase("CrmDb");

builder.AddProject<Projects.CrmApi>("crm-api")
.WithReference(redis)
.WithReference(sqlServer);

builder.Build().Run();

Khi chạy AppHost, Aspire tự động:

  • Start Redis, SQL Server container
  • Inject connection string vào API project
  • Mở Dashboard tại http://localhost:15888 với logs, traces, metrics

15.11.3 — Service Discovery

Aspire inject biến môi trường theo format services__{name}__http__0:

// Trong API, dùng tên service thay IP
builder.Services.AddHttpClient("payment-service",
c => c.BaseAddress = new Uri("http://payment-service"));

15.11.4 — Khi nào Aspire so với Docker Compose

.NET AspireDocker Compose
Mục đíchLocal dev orchestrationDev + CI + Prod
LanguageC#YAML
DashboardBuilt-inCần thêm (Portainer...)
ProductionKhông (phụ thuộc manifest)Có thể dùng
Học curveThấp nếu biết C#Thấp

Khuyến nghị: dùng Aspire cho local dev, giữ docker-compose.yml cho CI và staging/production đơn giản.


Bài tập áp dụng

  1. Tóm tắt bài học bằng ngôn ngữ của bạn.
  2. Liên hệ nội dung với một tình huống thực tế trong dự án.
  3. Đề xuất một cải tiến cụ thể sau khi học bài này.

Tự kiểm tra

  • Bạn có thể giải thích lại nội dung chính trong 2 phút không?
  • Bạn có ví dụ áp dụng thực tế chưa?
  • Bạn biết bước tiếp theo cần học/triển khai là gì không?

Kết luận

Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.

Điều hướng