C#

August 9th, 2016

Migrating .Net framework applications to .Net Core

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

February 8th, 2015

Protocol buffers for .Net: protobuf-net vs protobuf-csharp-port

Google’s open source serialization format is an efficient way of passing platform-independent and version-tolerant data between end-points. Two very different implementations have emerged for .Net.

November 3rd, 2014

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

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.

June 26th, 2014

Optimising bulk inserts with Entity Framework 6

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.

May 19th, 2014

Targeting multiple .Net framework versions in a single Visual Studio solution

When you’re building components in .Net it’s inevitable that you’ll eventually have to target more than one version of the framework. Not every system is able to upgrade in step with new releases of the framework.

December 12th, 2013

Avoiding temporary failure errors with Azure’s distributed memory cache service

The API that you use to access Azure’s distributed memory cache service is simple enough, but if you don’t manage access carefully then you may find yourself falling victim to intermittent “temporary failure error” messages.

September 23rd, 2013

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

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.

May 21st, 2013

The generic repository is just a lazy anti-pattern

A generic repository is often used with the entity framework to speed up the process of creating a data layer. In most cases this is a generalization too far and it can be a trap for lazy developers.

April 22nd, 2013

Writing a brokered messaging client for Azure Service Bus that is production-ready

Azure’s Brokered Message API provides a basic set of methods that make it easy to start sending and receiving messages through the Azure Service Bus. The problem is that it doesn’t do much to provide some of the basic scaffolding required by a serviceable messaging client.

March 16th, 2013

Using asynchronous log4net appenders for high performance logging

Log4net provides decent logging performance out of the box, but you’ll need to consider asynchronous appending if you want more serious throughput or logging to a shared resource.

February 5th, 2013

Using Umbraco 6 to create an ASP.NET MVC 4 web application

A lot of .Net-based CMS systems have been slow to adopt MVC and Umbraco have had more trouble than most. The newly released version 6 boasts a rendering model that plays pretty nicely with a full MVC 4 project – so long as you’re prepared to ignore the webforms lurking in the Umbraco UI.

November 24th, 2012

Regular expressions and RegEx performance in .Net

If you run into performance problems with regular expressions in .Net then your options for tuning and improving are pretty limited. Your only real hope is to keep a close eye on exactly what you’re throwing into the RegEx black box.

September 21st, 2012

Contract-first web service development using WCF and .Net 4.5

Contract first service development in .Net has always been hampered by the limited availability of any appropriate tooling. The new Contract-First tool in Visual Studio 2012 is only a partial solution.

July 2nd, 2012

How not to use dependency injection: service locators and injection mania.

Development teams can struggle with dependency injection, often because they don’t have a clear understanding of how best to use it.

May 6th, 2012

Micro ORMs demonstrate that less is usually… less

Micro ORMs such as Dapper, Massive and PetaPoco are an increasingly fashionable solution to the problem of bridging the databases and object world. However, it’s important to understand the trade-offs involved in using a micro ORM as opposed to something “heavier” with a more advanced feature set.