Azure-Samples/Orleans-Cluster-on-Azure-App-Service

Sample application demonstrating a multiple-silo Orleans cluster running in Azure App Service.

73

stars

47

commits

C#

primary language

Aug 25, 2026

updated

README

Microsoft Orleans: Shopping Cart App

[!IMPORTANT] This sample has moved and this repository will be archived. Use the actively maintained Azure App Service deployment sample in dotnet/orleans instead. See the current deployment guidance for Windows or Linux.

A canonical shopping cart sample application, built using Microsoft Orleans. This app shows the following features:

  • Shopping cart: A simple shopping cart application that uses Orleans for its cross-platform framework support, and its scalable distributed applications capabilities.

    • Inventory management: Edit and/or create product inventory.
    • Shop inventory: Explore purchasable products and add them to your cart.
    • Cart: View a summary of all the items in your cart, and manage these items; either removing or changing the quantity of each item.

Shopping Cart sample app running.

Features

The app is architected as follows:

Shopping Cart sample app architecture.

Get Started

Prerequisites

Quickstart

  1. git clone https://github.com/Azure-Samples/Orleans-Cluster-on-Azure-App-Service.git orleans-on-app-service
  2. cd orleans-on-app-service
  3. dotnet run --project Silo\Orleans.ShoppingCart.Silo.csproj

Product management is restricted to Microsoft Entra users assigned the ProductAdministrator app role. Local runs do not receive the trusted X-MS-CLIENT-PRINCIPAL header from Azure App Service, so the product management page remains unavailable locally by default.

Product management authorization

Before deploying, create a Microsoft Entra app registration with:

  • A Web redirect URI of https://<app-name>.azurewebsites.net/.auth/login/aad/callback. Register the corresponding staging-slot callback URI if the staging slot is used.
  • An app role whose value is ProductAdministrator, assigned only to catalog administrators.
  • A client secret.

Configure these repository-level GitHub Actions secrets: AUTHENTICATION_TENANT_ID, AUTHENTICATION_CLIENT_ID, and AUTHENTICATION_CLIENT_SECRET. The deployment enables App Service Authentication while leaving the storefront anonymous. The application only shows and permits product management when App Service supplies an authenticated principal with the ProductAdministrator role.

Acknowledgements

The Orleans.ShoppingCart.Silo project uses the following open 3rd party-source projects:

  • MudBlazor: Blazor Component Library based on Material design.
  • Bogus: A simple fake data generator for C#, F#, and VB.NET.
  • Blazorators: Source-generated packages for Blazor JavaScript interop.

Derived from IEvangelist/orleans-shopping-cart.

Resources

Contributors

IEvangelist

20 commits

bradygaster

12 commits

ReubenBond

5 commits

Azure-Samples/Orleans-Cluster-on-Azure-App-Service

Sample application demonstrating a multiple-silo Orleans cluster running in Azure App Service.

73

stars

47

commits

C#

primary language

Aug 25, 2026

updated

README

Microsoft Orleans: Shopping Cart App

[!IMPORTANT] This sample has moved and this repository will be archived. Use the actively maintained Azure App Service deployment sample in dotnet/orleans instead. See the current deployment guidance for Windows or Linux.

A canonical shopping cart sample application, built using Microsoft Orleans. This app shows the following features:

  • Shopping cart: A simple shopping cart application that uses Orleans for its cross-platform framework support, and its scalable distributed applications capabilities.

    • Inventory management: Edit and/or create product inventory.
    • Shop inventory: Explore purchasable products and add them to your cart.
    • Cart: View a summary of all the items in your cart, and manage these items; either removing or changing the quantity of each item.

Shopping Cart sample app running.

Features

The app is architected as follows:

Shopping Cart sample app architecture.

Get Started

Prerequisites

Quickstart

  1. git clone https://github.com/Azure-Samples/Orleans-Cluster-on-Azure-App-Service.git orleans-on-app-service
  2. cd orleans-on-app-service
  3. dotnet run --project Silo\Orleans.ShoppingCart.Silo.csproj

Product management is restricted to Microsoft Entra users assigned the ProductAdministrator app role. Local runs do not receive the trusted X-MS-CLIENT-PRINCIPAL header from Azure App Service, so the product management page remains unavailable locally by default.

Product management authorization

Before deploying, create a Microsoft Entra app registration with:

  • A Web redirect URI of https://<app-name>.azurewebsites.net/.auth/login/aad/callback. Register the corresponding staging-slot callback URI if the staging slot is used.
  • An app role whose value is ProductAdministrator, assigned only to catalog administrators.
  • A client secret.

Configure these repository-level GitHub Actions secrets: AUTHENTICATION_TENANT_ID, AUTHENTICATION_CLIENT_ID, and AUTHENTICATION_CLIENT_SECRET. The deployment enables App Service Authentication while leaving the storefront anonymous. The application only shows and permits product management when App Service supplies an authenticated principal with the ProductAdministrator role.

Acknowledgements

The Orleans.ShoppingCart.Silo project uses the following open 3rd party-source projects:

  • MudBlazor: Blazor Component Library based on Material design.
  • Bogus: A simple fake data generator for C#, F#, and VB.NET.
  • Blazorators: Source-generated packages for Blazor JavaScript interop.

Derived from IEvangelist/orleans-shopping-cart.

Resources

Contributors

IEvangelist

20 commits

bradygaster

12 commits

ReubenBond

5 commits

Languages

C#

61.7%

HTML

33.4%

CSS

4.9%