Mediator: Sync and Async Commands

D20Tek Mediator supports both synchronous and async commands. In many cases, synchronous commands are plenty. But when working with data files, external service calls, and databases, it is best for performance throughput to build async WebApi handlers and async commands that process that data. To this point, we have mostly looked at synchronous ICommandHandlers. Here … Continue reading Mediator: Sync and Async Commands

Introducing MinimalApi.DevView – .NET Toolkit for Minimal APIs

Minimal APIs in .NET make it easy to build lightweight web services with minimal ceremony, but during development, visibility into what your app is doing can be a challenge. That’s what MinimalApi.DevView helps you with. Today, I’m excited to announce the release of D20Tek.MinimalApi.DevView v1.0, a dev-time only diagnostics and discovery toolkit designed specifically for … Continue reading Introducing MinimalApi.DevView – .NET Toolkit for Minimal APIs

Is ASP.NET WebApi Pipeline Already a Mediator?

As we discussed in earlier posts, the Mediator and Command are patterns that can be implemented in different way. And those patterns already exist in many coding frameworks. As a matter of fact, the ASP.NET WebApi request pipeline can be considered a Mediator and Command implementation, especially when building MinimalApi. Remember that a Mediator encapsulates … Continue reading Is ASP.NET WebApi Pipeline Already a Mediator?

Getting Started with D20Tek.Mediator Package

There are a few Mediator and Command implementations in the .NET ecosystem. The most popular one has been Mediatr. But with the recent announcement that Mediatr is moving to a commercial license, many developers looking for alternatives. In an attempt to support the .NET community, I am building a simplified Mediator and Command library that … Continue reading Getting Started with D20Tek.Mediator Package

Understanding the Mediator and Command Patterns: Theory, Use Cases, and Trade-offs

In the world of software design, decoupling is a recurring goal. Systems built from loosely coupled components are more maintainable, testable, and scalable. But we still want to balance that with being easy to use in simple scenarios. Two design patterns that often work well together to achieve this are the Mediator and Command patterns. … Continue reading Understanding the Mediator and Command Patterns: Theory, Use Cases, and Trade-offs

Understanding await vs. ContinueWith in C# Async Programming

When it comes to asynchronous programming in C#, developers have powerful tools to make applications more responsive and efficient. By allowing long-running operations to execute in the background, we can keep the UI thread free for other tasks, resulting in smoother user experiences. Or when running those tasks on ASP.NET, the service can respond to … Continue reading Understanding await vs. ContinueWith in C# Async Programming

Currency Input in Spectre.Console

I was trying this just the other day in Spectre.Console. I wanted an input prompt that would accept currency values. I started down the path of using a decimal representation (TextPrompt<decimal>). While that mostly worked on the input value, it does not support using negative sign, separators, or decimal places. I wanted to be able … Continue reading Currency Input in Spectre.Console

Understanding C# Keywords

In C#, keywords play a crucial role in defining how your code behaves. They help in establishing various programming constructs like classes, methods, variables, and even asynchronous behavior in a structured and precise way. This article will explore some essential C# keywords, providing clarity on their purpose and usage. 1. sealed: Preventing Inheritance The sealed … Continue reading Understanding C# Keywords

Introduction to Immutability with Records in C#

With C# 9.0, Microsoft introduced the record keyword, a powerful new addition that makes it easier to work with immutable data. Records are designed to simplify the creation of classes that are primarily intended to store data, and they offer a more concise and expressive way to model data compared to traditional classes. If you've … Continue reading Introduction to Immutability with Records in C#