Browse Source

Merge pull request #24483 from abpframework/auto-merge/rel-10-0/4218

Merge branch dev with rel-10.0
pull/24484/head
Ma Liming 1 month ago
committed by GitHub
parent
commit
b360988a62
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 173
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/POST.md
  2. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-apphost-topology.png
  3. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-configuration.png
  4. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-console.png
  5. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-metrics.png
  6. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-resources.png
  7. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-structured-logs.png
  8. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-traces.png
  9. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-database-postgre-pgadmin.png
  10. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-grafana-dashboard.png
  11. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-jaeger-traces.png
  12. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-kibana-dashboard.png
  13. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-prometheus-dashboard.png
  14. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-rabbitmq-management.png
  15. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-redis-insight.png
  16. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-solution-structure.png
  17. BIN
      docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/solution-runner-aspire-profile.png
  18. 10
      docs/en/solution-templates/microservice/aspire-integration.md
  19. BIN
      docs/en/solution-templates/microservice/images/aspire-configuration.png
  20. BIN
      docs/en/solution-templates/microservice/images/aspire-solution-structure.png
  21. BIN
      docs/en/solution-templates/microservice/images/solution-runner-aspire-profile.png
  22. BIN
      docs/en/solution-templates/microservice/images/solution-runner-default-profile.png

173
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/POST.md

@ -0,0 +1,173 @@
# Announcing .NET Aspire Integration for ABP Microservice Template
We are excited to announce the integration of **.NET Aspire** into the ABP microservice solution, available starting with **ABP Studio v2.0.0**. This integration brings a unified development experience for building, running, debugging, and deploying distributed applications. With Aspire, you can now orchestrate your entire microservice ecosystem with a single command, eliminating complex configurations and making local development effortless.
## What is .NET Aspire?
[Aspire](https://aspire.dev/get-started/what-is-aspire/) is a cloud-ready stack designed to streamline the development of distributed applications. It provides:
- **Orchestration**: A code-first approach to defining and running distributed applications, managing dependencies, and launch order.
- **Integrations**: Pre-built components for common services (databases, caches, message brokers) with automatic configuration.
- **Tooling**: A developer dashboard for real-time monitoring of logs, traces, metrics, and resource health.
- **Service Discovery**: Automatic service-to-service communication without hardcoded endpoints.
- **Observability**: Built-in OpenTelemetry support for distributed tracing, metrics, and structured logging.
## How Does It Work with ABP?
When you enable .NET Aspire in an ABP microservice solution, you get a fully integrated development experience where:
- All microservices, gateways, and applications are orchestrated through a single entry point (AppHost).
- Infrastructure containers (databases, Redis, RabbitMQ, Elasticsearch, etc.) are managed as code.
- OpenTelemetry, health checks, and service discovery are automatically configured for all projects via the shared ServiceDefaults project.
## Enabling Aspire in Your Solution
When creating a new microservice solution via ABP Studio:
1. In the solution creation wizard, look for the **".NET Aspire Integration"** step.
2. Toggle the option to **enable .NET Aspire**.
3. Complete the wizard—Aspire projects will be generated along with your solution.
![Enable Aspire in ABP Studio](aspire-configuration.png)
## Solution Structure Changes
When Aspire is enabled, two additional projects are added to your solution:
![Aspire Solution Structure](aspire-solution-structure.png)
### AppHost (Orchestrator)
[`AppHost`](https://aspire.dev/get-started/app-host/) is the .NET Aspire orchestrator project that declares all resources (services, databases, containers, applications) and their dependencies in C# code. It provides:
- **Centralized orchestration**: Start your entire microservice ecosystem with a single command.
- **Code-first infrastructure**: Databases, Redis, RabbitMQ, Elasticsearch, and observability tools are defined programmatically.
- **Dependency management**: Services start in the correct order using `WaitFor()` declarations.
- **Automatic configuration**: Connection strings, endpoints, and environment variables are injected automatically.
### ServiceDefaults
[`ServiceDefaults`](https://aspire.dev/fundamentals/service-defaults/) is a shared library that provides common cloud-native configuration for all projects in the solution. Every service uses the same observability, health check, and resilience patterns.
| Feature | Description |
|---------|-------------|
| OpenTelemetry | Tracing, metrics, and structured logging with automatic instrumentation |
| Health Checks | `/health` and `/alive` endpoints for Kubernetes-style probes |
| Service Discovery | Automatic resolution of service endpoints |
| HTTP Resilience | Retry policies, timeouts, and circuit breakers for HTTP clients |
## Running the Solution with Aspire
Running your microservice solution has never been easier:
1. Open **Solution Runner** in ABP Studio.
2. Select the **Aspire** profile.
3. Run `AppHost`.
![Solution Runner with Aspire](solution-runner-aspire-profile.png)
AppHost automatically:
- Starts all infrastructure containers (database, Redis, RabbitMQ, Elasticsearch, etc.).
- Launches all microservices, gateways, and applications in dependency order.
- Injects connection strings and environment variables.
- Opens the Aspire Dashboard for monitoring.
![Aspire AppHost Resource Topology](aspire-apphost-topology.png)
## Aspire Dashboard
The Aspire Dashboard provides real-time tracking of your application's state. It enables you to monitor logs, traces, metrics, and environment configurations in an intuitive UI.
![Aspire Dashboard Resources](aspire-dashboard-resources.png)
### Key Dashboard Features
#### Console Logs
Display console logs from all resources in real-time. Filter by resource and log level to quickly find relevant information during development and debugging.
![Aspire Dashboard Console](aspire-dashboard-console.png)
#### Structured Logs
View structured logs from all resources with advanced filtering capabilities. Search and filter logs by resource, log level, timestamp, and custom properties.
![Aspire Dashboard Structured Logs](aspire-dashboard-structured-logs.png)
#### Distributed Traces
Explore distributed traces across your microservices to understand request flows and identify performance bottlenecks.
![Aspire Dashboard Traces](aspire-dashboard-traces.png)
#### Metrics
Monitor real-time metrics including HTTP requests, response times, garbage collection, memory usage, and custom metrics.
![Aspire Dashboard Metrics](aspire-dashboard-metrics.png)
## Pre-Configured Observability Tools
AppHost comes with pre-configured observability and management tools:
### Grafana
Visualization and analytics platform for monitoring metrics with interactive dashboards.
![Grafana Dashboard](aspire-grafana-dashboard.png)
### Jaeger
Distributed tracing system to monitor and troubleshoot problems across microservices.
![Jaeger Traces](aspire-jaeger-traces.png)
### Kibana
Visualization tool for Elasticsearch data with search and data visualization capabilities for logs.
![Kibana Dashboard](aspire-kibana-dashboard.png)
### Prometheus
Monitoring and alerting toolkit that collects and stores metrics as time series data.
![Prometheus Dashboard](aspire-prometheus-dashboard.png)
### RabbitMQ Management
Web-based interface for managing and monitoring the RabbitMQ message broker.
![RabbitMQ Management](aspire-rabbitmq-management.png)
### Redis Insight
Visual tool for Redis that allows you to browse data, run commands, and monitor performance.
![Redis Insight](aspire-redis-insight.png)
### Database Admin Tools
The database management admin tool varies by database type:
| Database | Tool |
|----------|------|
| SQL Server | DBeaver CloudBeaver |
| MySQL | phpMyAdmin |
| PostgreSQL | pgAdmin |
| MongoDB | Mongo Express |
![pgAdmin Dashboard](aspire-database-postgre-pgadmin.png)
## Get Started Today
Ready to experience the power of .NET Aspire with ABP? Create a new microservice solution in ABP Studio and enable the .NET Aspire integration option. For detailed documentation, visit our [.NET Aspire Integration documentation](https://abp.io/docs/latest/solution-templates/microservice/aspire-integration).
To learn more about .NET Aspire, visit: [https://aspire.dev](https://aspire.dev/get-started/what-is-aspire/)
We are excited to bring this integration to you and can't wait to hear your feedback. If you have any questions or suggestions, please drop a comment below.
Happy coding!
**The Volosoft Team**

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-apphost-topology.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-configuration.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-console.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-metrics.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-resources.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-structured-logs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-dashboard-traces.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-database-postgre-pgadmin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-grafana-dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-jaeger-traces.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-kibana-dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-prometheus-dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-rabbitmq-management.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-redis-insight.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/aspire-solution-structure.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/en/Blog-Posts/2025-12-24-Announcing-Aspire-For-Microservice-Template/solution-runner-aspire-profile.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

10
docs/en/solution-templates/microservice/aspire-integration.md

@ -66,7 +66,7 @@ When Aspire is enabled, two additional projects are added to your solution:
**Key files in AppHost:**
| File | Purpose |
|------|---------|
|--------|------------|
| `AppHost.cs` | Entry point—creates the distributed application builder and adds all resources |
| `AppHostExtensions.cs` | Extension methods for adding infrastructures, databases, microservices, gateways, and applications |
@ -309,7 +309,7 @@ var myResource = builder
.AddProject<Projects.MySolutionName_MyProjectName_ServiceName>("myresource", "MySolutionName.MyProjectName.MyResource")
.WaitFor(databases.AdministrationDb)
.WaitFor(databases.IdentityDb)
.WaitFor(databases.MyServiceDb)
.WaitFor(databases.MyResourceDb)
.WaitFor(databases.AuditLoggingDb)
.WaitFor(databases.SaasDb)
.WaitFor(databases.LanguageManagementDb)
@ -318,7 +318,7 @@ var myResource = builder
.WithReference(databases.AdministrationDb)
.WithReference(databases.IdentityDb)
.WithReference(databases.BlobStoringDb)
.WithReference(databases.MyServiceDb)
.WithReference(databases.MyResourceDb)
.WithReference(databases.AuditLoggingDb)
.WithReference(databases.SaasDb)
.WithReference(databases.LanguageManagementDb)
@ -349,7 +349,7 @@ if (webgateway != null)
If your resource needs to be added to `CORS` and `RedirectAllowedUrls` configuration for the authentication server, update the `allowedUrls` variable in the `ConfigureAuthServer` method:
```csharp
var allowedUrls = ReferenceExpression.Create($"{applicationResources["MyService"].GetEndpoint("http")},...");
var allowedUrls = ReferenceExpression.Create($"{applicationResources["MyResource"].GetEndpoint("http")},...");
```
### 7. Add Database (if needed)
@ -357,7 +357,7 @@ var allowedUrls = ReferenceExpression.Create($"{applicationResources["MyService"
If your resource requires a dedicated database, add it in the `AddDatabases` method:
```csharp
var myServiceDb = databaseServers.Postgres.AddDatabase("MyService", "MySolutionName.MyProjectName_MyService");
var myResourceDb = databaseServers.Postgres.AddDatabase("MyResource", "MySolutionName.MyProjectName_MyResource");
```
> Adjust the database management system as necessary.

BIN
docs/en/solution-templates/microservice/images/aspire-configuration.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 KiB

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/en/solution-templates/microservice/images/aspire-solution-structure.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/en/solution-templates/microservice/images/solution-runner-aspire-profile.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 26 KiB

BIN
docs/en/solution-templates/microservice/images/solution-runner-default-profile.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Loading…
Cancel
Save