Multi-tenancy in ASP.NET MVC - DDD8 Video

Published on 2010-2-5

The video is now up of my talk at DDD8, I've reviewed it and determined that while it's a bit fast ("Like listening to a podcast at double speed" according to @lukesmith) it's not too embarrassing.

Unfortunately the audio gets a bit out of sync towards the code, so you'll have to use your imagination until what I'm talking about shows up ;-)

Multi-tenant ASP.NET MVC Projects (Or 30 very different customers and a single codebase) - Rob Ashton - DeveloperDeveloperDevel from Phil Winstanley on Vimeo.

This used to ask if you wanted to hire me

But chances are I'm not available, as I'm busy shipping stuff.

I am available for conference speaking, I like talking and will do so for just T&E (and perhaps a bottle of wine or two).

I have done soft keynotes, and usually entertain/rile people in equal proportion, but prefer to talk tech as that's what I do

Email me :)

blog comments powered by Disqus


Hey,Really good talk their Rob. We currently have a classic asp that hasn't yet been converted to .net that employs the "if" tag soup you referred to. It also is classic asp so there is tag without being multi-tenant. There is also approaching 250 configuration settings which hide/show certain parts of the app. Its nasty.You showed some really insightful techniques that will stead me in good stead for other multi-tennant apps or if we convert one day.One question though. If you want to just hide or not hide a "description" field for example. how would you deal with that, when you have validation concerns, layout concerns etc.Cheers,Adam


That's exactly the scenario I've been pulling this company from over that time :)When it comes to the question of adding/removing single fields from a page, I step back and look at the problem differently.For example, in our product there is a page which is shown to confirm whether an action is to happen or not.On that page, there can be anywhere between 1-5 questions with yes/no answers.Rather than have switches to turn them off/on, we define the contents of that page in data (XML in this case, but it could be a DSL using Boo or similar), and then render out that page dynamically based on that data.The same goes for a number of areas in the system, where we replace a set of on/off switches with something that solves the known problem in general instead of just patching in the answers.Where we can't do that, then in the example of a very few certain forms, we'd define an action specifically for posting the form to, and stick the form itself in a partial view.For each person who then wanted something different, we'd then use a different action (overriding that default one), which takes in a different view model, and uses its own validation.That's not to say a lot of the validation logic can't be shared between those actions/view models of course.I'll keep this question in mind and possibly cover it in a future follow-up blog entry once I've finished this series. :)


Hey..any chance of getting this presentation in a slightly better quality?Sound seems ok but cant see a sinlge line of code.Cheers


I'm afraid not, there was a version of this talk done at Oredev a year or so ago, but I didn't quite pull it off with the same quality