Ambassador Design Pattern

The Ambassador design pattern is typically used in microservice architectures, however, the same concepts can be applied to non-microservice architectures. Legacy applications that have limited features may not have the…

Event-driven Architecture using C# Observer Pattern

The Observer design pattern is a useful pattern when combined with Event-driven architectures to create reactive systems. A source system emits a state change; this change is observed by methods…

Connect to the Microsoft Dataverse via Databricks & Web API

It’s not possible to connect to the Microsoft Dataverse directly in Databricks. Some options include ingesting the Dataverse tables into Azure Data Lake and then retrieving them from inside a…

Client-Server Architecture using Azure AD B2C and Containers

This post demonstrated a simplified Client-Server Architecture using Azure B2C and Containers. The frontend application consists of a single page demonstrating three stages: Front-end request for a JWT from the…

Application Architecture Styles Reference Models

Here is a summary of the different types of application architecture styles.

Using Dependency Injection in Azure Functions

In Azure Functions 1.0, it was never possible to use Dependency Injection (DI). DI is a technique to achieve Inversion of Control (IoC) between classess and their methods. In Azure…

Enterprise Application Design Patterns Catalogue

Summary This page documents a list of Application Architectures. The page is work-in-progress but should serve as a reference for design techniques that exist to solve problems. This page is…

Async HTTP API architecture (w)

In this post, I'll discuss how to to build an Async HTTP API which is incredibly useful when you need to make a request to a service endpoint and you…

Implementing the Anti-Corruption Layer pattern in Data-Intensive Applications (w)

Summary Most applications rely on other systems for some data or functionality. For example, when a legacy application is migrated to a modern system, it may still need existing legacy…