Awesome Software Architecture
This is a comprehensive guide to software architecture, covering a wide range of topics including Actor Model Architecture, Akka .NET, Orleans, Protoactor, Clean Architecture, Onion Architecture, Hexa...
Implementing the microservice application layer using the Web API
Learn how to Implement the microservice application layer using the Web API in this article. The application layer can be implemented as part of the artifact (assembly) you are building, such as withi...
How to Build an Event-Driven ASP.NET Core Microservice Architecture
Learn how to use RabbitMQ, C#, REST-API, and Entity Framework to build an event-driven microservice architecture that supports asynchronous decoupled communication and eventual consistency with integr...
C# Channels - Async Data Pipelines
In this article, learn how to efficiently process data in a non-blocking way using the pipeline pattern. Compose and test pipelines using .NETs channels, and see how to cancel and handle errors. Imple...
Pipelines for C#
Pipelines is a library for implementing programs as Pipeline objects in C#. This library is inspired by Arlo Belshees talk, Refactoring to Async. Pipelines are a mechanism of separating a function tha...
Marrying RESTful HTTP with Asynchronous and Event-Driven Services
Building a successful microservice platform requires integrating disparate services and systems to produce a unified set of functionality, which can be achieved by using different communication styles...
Object Calisthenics: Principles for Better Object-Oriented Code
Ready to up your coding game? Object Calisthenics will help you create code that is cleaner, more flexible, more agile, and more reusable. Object Calisthenics were first introduced by Jeff Bay in The ...
The Outbox Pattern in Event-Driven ASP.NET Core Microservice Architectures
Learn how to build a resilient architecture with RabbitMQ, C#, Entity Framework, and the Transactional Outbox Pattern. In this guide, you will create two microservices that use events to publish chang...
Software Architecture Patterns: Basics and Benefits Explained
In this 4-minute read, Orkhan Huseynli introduces the five basic software architecture patterns and their benefits. He delves into layered architecture, event-driven architecture, microkernel architec...
Using Azure Cosmos Persistence with NServiceBus
NServiceBus is a reliable messaging and workflow solution for the .NET platform that supports various queuing technology and datastore such as Cosmos DB. Cosmos DB is a fully managed NoSQL database se...
CloudEvents: A Specification for Interoperable Event Data
Events are ubiquitous in software development, but their various forms can create headaches for developers seeking to use or consume them across different platforms or services. CloudEvents offers a s...
Microservices: Rethinking the Way We Treat Data and Services
If you were to stumble upon the whole microservices thing, without any prior context, you’d be forgiven for thinking it a little strange. Yet, whilst the approach certainly involves many independent s...
Moving Beyond Monolithic Data Lakes to Distributed Data Mesh
Many enterprises invest in their next-gen data lake to democratize data, but common failure modes lead to unfulfilled promises at scale. Shifting from centralized paradigms to modern distributed archi...
Data Mesh Principles and Logical Architecture
Our aspiration to augment and improve every aspect of business and life with data, demands a paradigm shift in how we manage data at scale. While the technology advances of the past decade have addres...
Turning Microservices Inside-Out: Unbundling Databases and Utilizing Event Logs with Debezium
This article discusses the benefits and practicality of replacing relational databases with event logs for microservices architectures. Rather than replacing databases, the article suggests complement...
Turning Microservices Inside-Out
Learn from software leaders at early adopter companies on how they are adopting emerging trends at QCon New York (June 13-15, 2023). Explore topics such as architecture, design, AI/ML, data engineerin...
Accenture | Let There Be Change
Accenture is a global professional services company with expertise across a wide range of industries and services, including artificial intelligence, customer experience, digital transformation, cyber...
Domain-Driven Refactoring: Intro
A common trap in Domain-Driven Design is blindly applying patterns and complex layering with the hope of achieving clean code. However, no amount of prescriptive guidance results in automatically clea...
Message Routing in Dotnet 6
In this post, Joshua Steward builds on his previous work on background message processing in Dotnet 6 and introduces a new concept called MessageRouter. The post discusses how to route a single Intern...
Proto.Actor - Ultra-fast, distributed, cross-platform actors.
Proto.Actor is a minimalistic API for ultra-fast, distributed, cross-platform actors. It is built on existing technologies and uses Protobuf for serialization. The API is small and easy to use, avoidi...