Although I have led architecture across a variety of different ecosystems, an alarming proportion of my hands-on coding work has been in the .Net ecosystem. The tooling is always excellent, though the frequent changes of direction can leave engineering teams nursing a lot of legacy code.

Custom token authentication in Azure Functions

18 December 2018

Azure Functions only provides direct support for a narrow range of authentication providers. If you want to use an external token provider or custom solution, you’ll have to create the plumbing yourself.

Writing ArchUnit style tests for .Net and C# to enforce architecture rules

27 November 2018

ArchUnit is a java library that provides a fluent API for creating self-testing architectures via unit tests. A similar library can be written for .Net Standard that acts on compiled assemblies rather than raw code.

Why isn't WCF supported in .Net Core?

28 October 2018

Development shops that have invested heavily in WCF have been left high and dry by the emerging .Net Core ecosystem. There are a number of good reasons why WCF for .Net Core is unlikely to make it onto any official roadmaps…

Hosting .Net Core containers in Service Fabric

12 September 2018

Service Fabric does support container-based applications, but it still feels more like an application server than a container orchestrator.

Building Twelve Factor Apps with .Net Core

12 August 2018

Twelve factor apps provide a methodology for building apps that are optimised for modern cloud environments. It’s only been achievable in the Microsoft world since the advent of .Net Core.

The problem with the .Net Standard compatibility shim…

12 January 2018

The compatibility shim was added to .Net Standard to make it easier to reference libraries compiled using the .Net Framework. That just leaves you with the problem of missing APIs…

Running a .Net Core console application as a Windows Service

3 September 2017

Although .Net Core does not directly support creating Windows Services there are several different ways of creating applications that can be registered and run as services.

Comparing serverless C# and .Net development using Azure Functions and AWS Lambda

26 May 2017

Recently released toolsets for AWS Lambda and Azure Functions are finally making serverless application development available to C# developers.

Using Docker to build and deploy .Net Core console applications

12 April 2017

Using Docker with .Net Core is initially straightforward, but to get beyond basic image building you will need to handle more than the simple scenarios demonstrated in quick-start guides.

Sharing libraries between .Net Core and .Net Framework applications

10 March 2017

Although .Net Standard does provide a mechanism for sharing assemblies between .Net Core and .Net Framework applications, as ever, you’re still very much constrained by your dependencies.

Migrating .Net framework applications to .Net Core

9 August 2016

Migrating existing applications to .Net Core is not a trivial undertaking so you need to be certain of the potential benefits before you start.

Deploying a Windows Service remotely with Powershell

12 June 2015

As with any deployment automation, there’s a fair amount of duct tape and chicken wire involved in deploying a Windows Service remotely.

Why you shouldn’t create asynchronous wrappers with Task.Run()

3 November 2014

Many developers confuse asynchronous operations with parallel execution. The essential difference is that an asynchronous operation is concerned with which resources you consume while parallel execution is more concerned with how many.

Optimising bulk inserts with Entity Framework

26 June 2014

There are some techniques for improving the performance of bulk inserts in the entity framework, but the most optimal approach will always be to use a different library altogether.

Memory leaks in .Net applications. Yes - they happen all the time…

23 September 2013

The promise of garbage collection can lull .Net developers into a false sense of security. They are still vulnerable to memory leaks and have a responsibility to keep an eye on what’s going on under the hood.