Multi-tenancy in ASP.NET MVC - DDD8 Video

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.



   


Print | posted on Friday, February 05, 2010 9:52 AM

Feedback

# re: Multi-tenancy in ASP.NET MVC - DDD8 Video

Left by Adam at 2/8/2010 11:12 AM
Gravatar 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

# re: Multi-tenancy in ASP.NET MVC - DDD8 Video

Left by robashton at 2/8/2010 1:19 PM
Gravatar 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. :)

Your comment:





 
Please add 8 and 6 and type the answer here:

Copyright © Rob Ashton

Design by Rob Ashton, Based On A Design By Bartosz Brzezinski