Complete Guide to Dapr for .NET and Azure Developers: Building and Managing Microservices
5h 24mAdvanced2025-10-17
Authors

Rodrigo Díaz Concha
Solutions Architect, Microsoft Regional Director, and Microsoft MVP
Course details
In this course, Rodrigo Díaz Concha—Solutions Architect, Microsoft Regional Director, and Microsoft MVP—guides you through building distributed applications and microservices using Dapr. After an introduction to Dapr and the essential components and tools it uses, find out how to set up your development environment. Then dive into key Dapr building blocks, including service invocation, state management, bindings, secrets management, configuration, and observability. Learn how to upgrade existing Dapr applications to the latest version and enhance the development experience. Explore advanced features such as self-contained actors, workflows, and interacting with Large Language Models (LLMs) and deploy Dapr applications as fully containerized, testable microservices in a Kubernetes cluster or Azure Container Apps. This course equips you with the knowledge and practical skills you need to build and manage microservices with Dapr.
Learning objectives
Understand the main features of Dapr and explain its most common use cases.
Assess if Dapr is a valid option for your software projects.
Create robust distributed applications using Dapr and .NET and deploy them in Azure.
Architect microservices solutions using Dapr.
Learning objectives
Understand the main features of Dapr and explain its most common use cases.
Assess if Dapr is a valid option for your software projects.
Create robust distributed applications using Dapr and .NET and deploy them in Azure.
Architect microservices solutions using Dapr.
Concepts
Introduction
- Build great microservices solutions with Dapr and .NET
- What you are going to build - Introducing Wisdom Pet Medicine
Dapr Overview
- Challenges of distributed applications and microservices
- What is Dapr
- The sidecar pattern
- Dapr anatomy
Preparing the Dapr Environment
- Installing the development tools
- Installing and initializing Dapr
- The Dapr CLI
- Hello, world with Dapr
- The Dapr dashboard
The Pub Sub Building Block
- The pub sub building block
- Publishing messages in the Pet microservice
- Subscribing to messages in the Rescue microservice
- Subscribing to messages in the Hospital microservice
- Creating the Dapr component for Azure Service Bus
- Testing the pub sub implementation
The Service Invocation Building Block
- The service invocation building block
- Creating the PetAggregator microservice
- Implementing the service invocation logic
- Projecting the results in PetAggregator
- Testing the service invocation implementation
The State Management Building Block
- The state management building block
- Refactoring the PetAggregator microservice
- Implementing state management in PetAggregator
- Creating a component for state management with Azure Storage
- Testing the state management implementation
The Bindings Building Block
- The bindings building block
- Implementing an input binding in the Pet microservice
- Implementing an output binding in the Hospital microservice
- Creating the Dapr components for bindings with Azure Storage
- Testing the bindings implementation
The Secrets Management Building Block
- The secrets management building block
- Creating a local-file secrets management component
- Retrieving secrets from the microservices
- Referencing secrets in the Dapr components
- Testing the secret references in the components
- Creating the Azure Key Vault component
- Testing the secrets management with Azure Key Vault
The Configuration Building Block
- The configuration building block
- Creating the configuration component for Redis
- Get configuration items using Dapr SDK
- Testing the configuration building block
The Observability Building Block
- The observability building block
- Distributed traces with Zipkin
- Distributed traces with Jaeger
- Distributed traces with New Relic
Upgrading to the Latest Version of Dapr and .NET
- Upgrading the Dapr CLI and runtime
- Upgrading the .NET projects and NuGet packages
- Upgrading the components and verifying the secrets
- Upgrading the Projector function
- Testing the upgraded solution
Improving the Development Experience
- Running multiple apps
- Attaching the debugger to the application processes
- Using the Dapr extension in Visual Studio
Implementing Resiliency Capabilities
- Understanding the resiliency capabilities in Dapr
- Creating and implementing retry resiliency policies
- Creating and implementing timeout resiliency policies
- Creating and implementing circuit breaker resiliency policies
- Implementing app health checks
- Challenge - Implementing resiliency capabilities
- Solution - Implementing resiliency capabilities
Performing Cryptographic Operations
- The cryptography building block
- Creating the Azure Key Vault resource and key
- Creating the cryptography component
- Implementing cryptography in the app
- Challenge - Decrypting data
- Solution - Decrypting data
Scheduling Jobs
- The jobs building block
- Using the DaprJobsClient object for scheduling a job
- Implementing the job handler
- Challenge - Implementing job logic
- Solution - Implementing job logic
Interacting with Large Language Models (LLMs)
- The conversation building block
- Creating the conversation component
- Implementing a conversation with an LLM
- Challenge - Using prompting techniques in Dapr
- Solution - Using prompting techniques in Dapr
Providing Mutually Exclusive Access with Locks
- The distributed lock building block
- Creating the distributed lock component
- Implementing the distributed lock
- Running two instances to test the distributed lock
Automating and Orchestrating Tasks with Workflows
- The workflow building block
- Using a supported state store for actors and workflows
- Implementing the workflow and its first activity
- Invoking the workflow
- Implementing a second activity
- Challenge - Implementing a human-in-the-loop process
- Solution - Implementing a human-in-the-loop process
Deploying in Kubernetes
- Running Dapr on Kubernetes
- Deploying the Kubernetes cluster and initializing Dapr
- Containerizing the microservices with Docker Compose
- Preparing and applying the component files in the Kubernetes cluster
- Creating and applying the deployments and services in the Kubernetes cluster
- Creating an ingress controller in the Kubernetes cluster
- Exposing the services in the Kubernetes cluster
- Testing the microservices in the Kubernetes cluster
Deploying in Azure Container Apps
- Introduction to Azure Container Apps
- Deploying the Container Apps environment
- Preparing the solution to use Azure Container Apps
- Deploying and testing the Pet microservice as a Container App
Conclusion
- Learning more