Link Search Menu Expand Document

Hello! This is the online handbook for Dylan Beattie’s workshop Distributed Systems with .NET.

  • Getting Started

    All the examples in this workshop are based on Autobarn, a fictional website for listing used cars for sale. In this module, we'll get the Autobarn project running locally, and take a look at the project structure to see how it all fits together.

  • 1.1: Getting started with HTTP APIs

    In this module, we'll create a set of simple HTTP API endpoints so we can work with vehicle data without having to go via the web interface.

  • 2.1: Introducing REST

    Autobarn includes a simple HTTP API. In this module, we'll look at the difference between HTTP and REST, and introduce some RESTful principles to improve the design and behaviour of our API.

  • 2.2: Hypermedia Resources

    In this module, we'll see how to convert plain old C# / JSON objects into rich hypermedia resources.

  • 2.3: Hypermedia Actions

    In this module, we'll go beyond simple HTTP GET and look at how to implement support for hypermedia actions.

  • 2.4: REST Review and Recap

    Review, recap, and further reading about designing REST APIs and hypermedia formats.

  • 3: Introducing GraphQL

    GraphQL is a data query and manipulation language for APIs that runs over HTTP. In this module we'll implement a simple GraphQL API based on the Autobarn data model.

  • 4: Message Queues and Pub/Sub

    In this module, we'll look at message queues and the publish/subscribe pattern, and add a simple message queue and handler to Autobarn.

  • 5: Remote Procedure Calls with gRPC

    In this module, we'll add a gRPC client and server to our application, and see how we can use Protocol Buffers to implement high-performance remote procedure calls.

  • 6: Browser Notifications with SignalR

    In this module, we'll use SignalR to add real-time browser notifications to our application.

  • 7: Putting it All Together

    In this module, we'll combine everything we've looked at in previous modules to build a real-time notification system that uses HTTP, gRPC, message queues and SignalR notifications.

  • 8.1: Hosting Dependencies with Docker

    In this module, we'll look at Docker, and how you can use it to host dependencies for your .NET applications and microservices

  • 8.2: Using Docker to build and host .NET applications

    In this module, we'll look at Docker, and how you can use it to build and run your .NET applications and microservices

  • 9: Autobarn Exercises

    Extra exercises and services you can add to the Autobarn application to get further experience of working with distributed applications

  • Appendix A: Creating a Self-Signed SSL Certificate for localhost

    How to use OpenSSL to create a self-signed certificate so you can run servers on localhost using https

  • Appendix B: Creating a gRPC Server in Python

    Building a gRPC server using Python and grpcio-tools that can communicate with the .NET PricingClient.