The Ultimate Lib Folder

I'm kicking off a new project - a WPF application using WCF and SQL Server, with a little ASP.NET MVC portal.

A fun part of new projects is getting to decide which technologies and libraries to use. For me, it's going to be:

  1. Autofac, the IOC container
  2. AutoMapper, for that left-hand = right-hand code
  3. Magellan, the navigation framework
  4. Moq, for mocking
  5. NBuilder for building test objects easily
  6. NHibernate and FluentNHibernate for that pesky database
  7. NUnit, for testing

A long-term goal for this application is to use a message bus for communication. For now, I don't want the infrastructure hassles, and it's not so important, so I'm hoping to make my code feel like I'm using a bus while really using point-to-point WCF. I was hoping to use Agatha, which makes WCF feel more like a messaging layer, but it would have introduced a third logging library that I just don't care for. Perhaps I'll fork the code or just borrow the ideas and write my own.

The ASP.NET MVC app will probably use the default ASP.NET view engine, but I'll switch to Razor if they ever release it.

For database management, I'm planning to use the same database deployment tool that I use for managing my blog. I just can't stand DataDude.

It's interesting to look on this list and compare it to what it might have been a few years ago. There's no trace of patterns & practices, and no third party control libraries - and especially no data grids :)

What does the lib folder on your current project look like?

A picture of me

Welcome, my name is Paul Stovell. I live in Brisbane and work on Octopus Deploy, an automated deployment tool.

Prior to founding Octopus Deploy, I worked for an investment bank in London building WPF applications, and before that I worked for Readify, an Australian .NET consulting firm. I also worked on a number of open source projects and was an active user group presenter. I was a Microsoft MVP for WPF from 2006 to 2013.

21 Jul 2010

OK, since you asked...

  1. Unity
  2. Automapper
  3. Not an MVC app. But I have a bastardised version of Josh Smith's MvvmFoundation for the MVVM stuff
  4. Moq
  5. No, nothing like that...
  6. L2S - because it's trivially easy and does the 80% really really well.
  7. MSTest, but I'm seriously considering swapping to NUnit...

(oh, and I am using DataDude)

And yeah... no whiff of PRISM because my 2-screen solution doesn't need 17 projects ;)

21 Jul 2010

Autofac (support the local product!) Moq XUnit.NET Linq2SQL

Currently most navigation is "this view model is wired up to that view via xaml", but I should embrace Magellan.

21 Jul 2010

Don't use Moq - use NSubstitute and support Aussie devs :-) [Plus it's betterer]

And I'd also use XUnit instead of NUnit (and you may want to look at Machine.Specifications aka MSpec and take a BDD approach to your tests)

21 Jul 2010
  1. Microsoft.Practices.ServiceLocation (Common Service Locator from MS P&P)
  2. Reactive Extensions for .NET
  3. System.Windows.Interactivity (Behaviors from the Blend SDK)
  4. Custom WPF Library (Utilities, Custom Controls and Panels, MVP Toolkit)
  5. Unity
  6. Custom Build of CAL ("Prism")
  7. NUnit
  8. log4net (ugh)
21 Jul 2010

for the record, Agatha uses Common.Logging which is an intermediary logging library which allows you to use other logging libraries (like log4net, enterprise library, ...) instead of forcing you to use log4net (which it originally used directly)

if you're already using NHibernate, chances are that you're already using log4net so Agatha's log output would just go to whatever log4net appender that you'd want

22 Jul 2010

Couldn't forget these lovlies:

NLog for logging.

Json.NET for doing objects to strings and back!

22 Jul 2010

Wow, NBuilder is very nice!

26 Jul 2010

I posted my response to my blog

I have more information and a diagram on the post, but as a quick summary

  • Silverlight 4
  • Ninject (IoC)
  • Prism (on occasion)
  • RIA services
  • Entity framework
  • Sql server 2008 R2
  • nSubstitute (for mocking. Made in Australia!)
  • MSTest
01 Aug 2010

My development stack:

  • CA Clipper 5.2 (upgraded from Summer 87 edition!)
  • FUNCky library for Clipper
  • Grumpfish library for Clipper
  • Microsoft Visual C++ for a few hand-rolled C libraries
  • Blinker to make 16 bit exes!
  • Advantage Database Server
  • XModem kit to deploy to devices (9600 baud! Yeah baby!)

Or did you mean my current stack? ;-)

Nick Zdunic
Nick Zdunic
04 Nov 2010

Hi Paul,

Just wondering about your reasoning for choosing Autofac.

It looks lightweight but could I be losing something because of it.

Is it fast at resolution? Does it manage instances better? Can it do interception (e.g. like in Unity extensions)?

Interested in youir thoughts. There are quite a few containers out there now, but no definitive resource on deciding which is the best for the job.



02 Dec 2010

It looks lightweight but could I be losing something because of it.

02 Dec 2010

It looks lightweight but could I be losing something because of it.