Distributed Systems with C# and .NET


A hands-on workshop with Dylan Beattie, covering HTTP, REST, GraphQL, gRPC, RabbitMQ, and SignalR: what they do, why you would use them, and how they all work with C# and .NET.

Once upon a time, software was simple. You built a website, connected it to a database, and you were done. Then customers started asking for APIs, mobile apps, notification emails, realtime chat… Today, cloud hosting lets us build “elastic” systems – websites that automatically scale up to handle demand, using message queues and publish/subscribe patterns to handle spikes in traffic and workload without impacting your end users.

If you’re just starting out with distributed systems design, the possibilities can be overwhelming. APIs, message queueing, REST, GraphQL, gRPC… what should you choose, how does it work, how do you get started?

This workshop gives you a hands-on introduction to the most important messaging patterns used in modern application development. Using C# and .NET, we’ll build a series of small example apps and services, wire them together using these patterns, and discuss how – and when – you’d apply the same patterns in your own applications.

Course contents


  • What are “distributed systems”?
  • Monoliths and microservices
  • Common integration patterns
  • Principles of distributed architecture

HTTP, REST and Hypermedia

  • Designing HTTP APIs
  • Understanding REST
  • Working with HTTP APIs: testing and tooling
  • Interactive documentation with OpenAPI and Swagger

Message queues and pub/sub

  • Principles of message queues
  • Message queueing in .NET with RabbitMQ and EasyNetQ
  • Queueing strategies and error handling

Protocol Buffers and gRPC

  • Introduction to Protocol Buffers
  • Contract-first development using protocol definitions
  • Cross-platform gRPC

GraphQL in ASP.NET

  • Introduction to GraphQL
  • Graph types, queries and schemas
  • GraphQL in context: the “backends for frontends” pattern

Connecting to the Web

  • Integrating browsers with distributed systems
  • Protocols for realtime communication
  • Working with SignalR

Target audience and prerequisites

This workshop is aimed at developers with some experience writing applications using C# and Microsoft .NET.

Attendees will be writing and running .NET code during the workshop, so will need a computer running Windows, macOS or Linux, and the Microsoft .NET 6 SDK from

The sample application and examples used during the workshop all run on .NET 6, and are tested on Linux, macOS and Windows.

 - 25 October 2023