Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.
Here are the things that caught my eye this week in .NET. I’d love to hear what you found most interesting this week. Let me know in the comments or on Twitter.
Starting the .NET Open Source Revolution
Today building open source software at Microsoft is normal — but when I started at Microsoft in 2007, it sure wasn’t. It took a few years to figure out the right thing to do and to get the big ship that is Microsoft turned into the wind of open source. But we’re there now and I look back on those early challenges with a smile. This is my story of the first successful open source project at Microsoft and how it paved the way to where we are today.
Running async tasks on app startup in ASP.NET Core (Part 1)
Sometimes you need to perform one-off
initialisation logic before your app starts up properly. For example, you might want to validate your configuration is correct, populate a cache, or run database migrations. In this post, I look at the options available and show some simple methods and extension points that I think solve the problem well.
Link: https://andrewlock.net/running-async-tasks-on-app-startup-in-asp-net-core-part-1/
Serilog Sink for Loki
This is a Serilog Sink for Grafana’s new Loki Log Aggregator.
What is Loki?
Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate, as it does not index the contents of the logs, but rather a set of labels for each log stream.
Link: https://github.com/JosephWoodward/Serilog-Sinks-Loki
Monitoring GC and memory allocations with .NET Core 2.2 and Application Insights
It all started when we were migrating some of our service from .NET Framework to .NET Core. We have been using Application Insights, using it’s performance counter collection feature to monitor performance counters on our Windows server that run our applications. We soon discovered when we moved over to .NET Core that we’d have to do things differently, since performance counters aren’t supported in Application Insights for .NET Core.
Link: https://stebet.net/monitoring-gc-and-memory-allocations-with-net-core-2-2-and-application-insights/
Collectible assemblies in .NET Core 3.0
Since the beginning of .NET Core, the one feature that I have been most anxiously waiting
for, has beensupport for collectible assemblies. It took a while (a while!), but finally, in .NET Core 3.0 (at the time of writing 3.0.0-preview-27122-01 from 2018-12-04), it’s here.
It’s going to be a killer functionality, that will support some excellent use cases in .NET Core – especially around application plugins, extensibilityand dynamic assembly generation.
Link: https://www.strathweb.com/2019/01/collectible-assemblies-in-net-core-3-0/
Alba 3.0 – TestServer on steroids and HTTP contract testing for . NET
Alba is a library you can use in combination with xUnit/NUnit to much more easily author integration tests against ASP.Net Core applications by running HTTP requests in process.