.NET Aspire

Rainer Stropek | timecockpit

Rainer Stropek

Passionate software developer
IT-Entrepreneur, CoderDojo-Mentor, Teacher

software architects gmbh
rainer@software-architects.at
https://rainerstropek.me

What's The Problem?

Distributed Systems...

... are tedious to run on dev boxes 🤯

Browser (SPA)

Backend-for-Frontend (ASP.NET Core)

Backend (ASP.NET Core)

Backend (...)

Database (SQL)

...

Logging, Metrics

What is .NET Aspire?

  • Tech stack to improve local development of distributed applications (aka cloud-native apps)
    • Does not replace production systems like K8s
    • Optional tooling for deployment to production (not focus of this talk)
  • Focus on .NET
    • NPM-based components are already supported, too
    • Docker-based components
    • Open, can be extended to support other tech stacks and clouds
  • Makes heavy use of Docker
    • Basic Docker knowledge is highly recommended

What is .NET Aspire?

  • Orchestration
    • Run and connect multi-project applications and dependencies
  • Components
    • Add commonly-used services like DBs, Redis, etc. (Docker-based)
  • Tooling
    • Visual Studio (Code)
    • CLI

Status of .NET Aspire?

Demo

Getting Started

  • Create Aspire starter app
    • Debug it
    • Dashboard
    • Structure
      • App Host: Orchestrator project (startup)
      • Service Defaults: Shared configurations
      • Components: API, Frontend
  • Create a new, empty Aspire app
    • Project templates

Add Web API ("WebApi")

  • Enlist in Aspire during project creation
    • Project reference to service defaults
  • Add two endpoints (ping, customers)
  • Adjust launch settings

Add Backend API ("MultiplierApi")

  • Enlist in Aspire during project creation
    • Project reference to service defaults
  • Add endpoint
  • Adjust launch settings
  • Add new API to orchestrator project
    • For demo: Two instances

Add SQL Server

  • Dependency for Web API project
  • Add SQL to code
    • Add client to DI
    • Add DB endpoint
  • Adjust launch settings
  • Show environment variables with connection string
  • Call backend service with DB response

Add Frontend

  • Add proxy configuration
    • proxy.conf.js
    • angular.json
  • Provide HTTP client
  • Add component with call to DB endpoint

     
  • Generate manifest
    dotnet run --publisher manifest --output-path ../aspire-manifest.json

Aspire 🤘

Rainer Stropek | time cockpit