An article about integration tests for your Kafka workflow. Using C# and the “Testcontainers” framework, we first run Kafka in Docker, call an API that will push a message to Kafka, consume the produced Kafka message ensuring it’s correct, and finally drop the created containers. …
Tag: c#
Tensorflow Serving gRPC Endpoint in Docker with a .NET 5 Client …
Call stacks in async methods are fundamentally different compared to synchronous execution. This leads to pitfalls where seemingly reasonable refactoring can make a method “disappear” from the Stack Trace. Let’s see why and how. …
An article on the internals of nested async/await calls. You’ll see a very detailed workflow diagram with all the execution steps. This also helps to understand precisely why and when we need to use ConfigureAwait(false) in our libraries. …
The Synchronization Context is an abstraction that lets you run a piece of code asynchronously without thinking about the specifics of the current environment. How does it work, and when is it invoked as part of the async workflow? Let’s explore those topics! …
I wrote a series of articles describing the async/await State Machine produced by the C# compiler when it encounters an asynchronous method. The discussion starts with a high-level conceptual overview and gradually moves towards the intriguing technical details and performance optimizations. …
Let’s examine the concrete implementation of the async/await State Machine along with all the intriguing optimizations performed by the compiler. …
A conceptual implementation of the async/await State Machine …
The async/await State Machine can be easily understood with a comprehensive workflow diagram that models the program flow and the state transitions. Such a higher-level representation is a mandatory step before diving into the implementation details. Let’s see how that looks! …
The Awaitable Pattern plays a vital role in the whole async/await workflow behind the scenes. The best way to understand how it works is to build your own awaitable type. Let’s see how! …