In part 1 of this mini-series, we began to explore the internals of the UnboundedChannel<T> type, learning about its class hierarchy and how an instance can be instantiated. In this post, we’ll continue our journey and focus on how items are written to an UnboundedChannel. Other Posts in Series Part 1 – UnboundedChannel<T> Part 2 […]
.NET Internals: System.Threading.Channels – UnboundedChannel<T> (Part 1)
In a previous post, I introduced System.Threading.Channels and explained how it can be used. At a high-level, it provides a modern, optimised asynchronous API for in-process publisher/subscriber patterns. Since that post, Stephen Toub, Partner Software Engineer at Microsoft, has published an in-depth blog post which shows how the feature is designed and covers common consumption […]
.NET Performance Optimisations Don’t Have to be Complex
Readers who have followed me for some time will know that I have developed a bit of a passion for performance improvements and avoiding allocations in critical code paths. Previous blog posts have touched on examples of using Span<T> as one mechanism to prevent allocations when parsing data and using ArrayPool to avoid array allocations […]
Integration Testing ASP.NET Core Applications: Best Practices
I’m excited to announce the release of my fourth course at Pluralsight – “Integration Testing ASP.NET Core Applications: Best Practices“. This latest course focuses on using the ASP.NET Core integration testing framework. Many developers will be familiar with the concepts of unit testing their applications. ASP.NET Core supports more in-depth end-to-end integration testing, with the […]
.NET on AWS: Introducing Docker ECS Integration
Last week I read about a new Docker ECS Integration experience, and it piqued my interest. I immediately put it onto my list of things to try out and experiment with. After spending an hour or so with the tooling over the weekend, my early impression is that this CLI feature might be quite useful. […]