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.

Why not hire me?

I am available for emergency consults, workshops, training and short-term development work anywhere in Europe

C#, JavaScript, Clojure, RavenDB, NodeJS, Architecture review.. etc

Get in touch

blog comments powered by Disqus

Adam


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

robashton


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. :)

Bets


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

robashton


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