September 3rd, 2017

Running a .Net Core console application as a Windows Service

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.

July 5th, 2017

Writing unit tests for Azure Functions using C#

You can now write compiled Azure functions in C# with full unit test coverage, though there are a few obstacles along the way.

May 26th, 2017

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

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

March 10th, 2017

Sharing libraries between .Net Core and .Net Framework applications

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.

November 13th, 2016

Handling Protocol Buffers backwards compatibility between versions 2 and 3 using C#

You will inevitably be pushed towards upgrading your protocol buffer messages to Proto3, particularly if you want a client that supports .Net Standard that .Net Core. This can be done, but there are a couple of speed bumps along the way.

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.

January 8th, 2012

Entity Framework anti-patterns: How not to use an ORM with SQL Server

The Entity Framework has come a long way since its earliest incarnations prompted a vote of no confidence from the development community. However, like any data access technology, there are still a number of traps for the unwary – particularly if you’re using it in a tiered application.

February 3rd, 2011

Estimation pitfalls: Why software development estimates are so difficult

Estimates are, in essence, a kind of crystal ball gazing. You are making a series of educated guesses about how long something will take whilst often being hampered by imperfect understanding and squeezed by commercial pressures.

December 12th, 2010

Exception safety in C# – more than just trying and catching

Exceptions can be a very effective means of handling errors in a systematic way, but using them properly can be a pretty delicate operation. If they are not handled properly then they can become a source of leaking resources, partially-completed operations and inconsistent data.

October 15th, 2010

How to write useful .NET and C# coding standards

Coding standards are one of those documents that managers often feel obliged to produce, so they are frequently written without any clear sense of purpose. A number of different motives can inspire coding standards – not all of them very positive.

July 12th, 2010

Using the WCF Authentication Service without cookies

How to use web services that are secured with the WCF Authentication Service in clients that don’t support cookies.

May 13th, 2010

Creating a security token service website using WIF in Visual Studio

This walkthough explains how to create a test claims issuer in Visual Studio 2008 using the Windows Identity Foundation SDK.

November 13th, 2008

Implicitly unreadable: the C# “var” keyword and lazy code

I am starting to increasingly see code samples that make heavy use of var and the impact of readability can be pretty extreme – it really is the kind of thing that makes a war-weary old coder like me shiver.

August 12th, 2008

Allow partially trusted callers – using ASP.NET in shared hosting

Developing ASP.NET applications for shared commercial web hosting space can give rise to a security issue that will restrict your development options.