FubuMVC for ASP.Net MVC Devs at MVCConf

The mvcConf virtual conference is happening online next week.  If you’re signed up for this cool looking event and you want some variety with the copious amount of MSMVC Koolaid, I will be presenting “FubuMVC for ASP.Net MVC Developers” in one of the time slots. 

If you follow my blog or my twitter feed you know that I’m not a fan of the technical approach or development philosophy that the MSMVC framework team has taken.  I strongly feel that the MSMVC architecture is deeply flawed in some key abstractions and is completely missing a cohesive configuration model.  I think these flaws leave a lot of opportunities on the table and that other alternatives will ultimately be technically better for teams developing web applications on .Net.  I’ll be trying to make this talk as useful as possible for teams building apps with MSMVC by exploring some alternative implementations and approaches with FubuMVC to what I see as MSMVC’s technical shortcomings. 


In this session I’m going to show how the FubuMVC approach differs from MSMVC and what I feel are the very significant advantages of the FubuMVC approach.  In specific, I’ll examine how FubuMVC’s focus on composition over inheritance and having a cohesive configuration model adds valuable flexibility and extensibility opportunities.  I’ll also show how FubuMVC’s stronger support for convention over configuration reduces development effort while preventing common development errors that can easily arise with MSMVC. 

I’m very cognizant of the fact that many of you do not have the flexibility to adopt an alternative framework (or want the risk of an OSS tool), so I’ll be focusing on the areas of FubuMVC that could be cherry picked piecemeal to use inside an MSMVC project.  I will also show how my team takes advantage of some FubuMVC features today that appear to be coming in the next version of MSMVC (modular model binding, real IoC integration).  And yes, I will probably be leveling some specific technical criticisms at the MSMVC project and my suggestions for how to fix them.


Specific Topics

  1. Anatomy of a typical FubuMVC Request – It’s just background information, but right off the bat it demonstrates very different thinking from MSMVC
  2. Composing Behaviors
    1. Global Policies
    2. FubuMVC’s Configuration Model
  3. What do Actions look like in FubuMVC?  —
    1. The “One Model In, One Model Out” philosophy
    2. Benefits of “POCO” Controller Actions – We don’t need no stinkin’ Controller base class
    3. Controller-less actions
  4. How FubuMVC’s Architecture is “Dependency Injection Turtles all the way down” and why that’s valuable
  5. Conventions, conventions, conventions!
    1. Auto discovery of actions
    2. Determining routes
    3. Attaching views or other output handlers to behavior chains
  6. Html Conventions – FubuMVC’s Html Conventions take a very different approach than MSMVC2 or MVCContrib.  More power, more reuse, more possibilities.
    1. Policies for displaying types with DisplayFormatter
    2. The HtmlTag model
    3. InputFor() / DisplayFor() / LabelFor()
    4. Show() / Edit()
    5. How to test Html conventions
    6. Modular configuration and reuse of Html conventions
  7. Url Resolution – I’m going to claim that this is much cleaner in FubuMVC compared to MSMVC
  8. Modular Model Binding
    1. Capabilities
    2. Where it fits in
    3. Extending model binding with policies
  9. FubuMVC’s Diagnostics – MSMVC doesn’t remotely have anything equivalent, and trust me, you really wish it did
  10. Extensibility
    1. FubuRegistry
    2. Areas / Slices – it’s a bit more comprehensive than MSMVC or MVCContrib’s support
    3. Content extensions
    4. Reusing policies and conventions with IFubuRegistryExtension

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in FubuMVC. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://lozanotek.com/blog Javier Lozano

    Looking forward to the presentation!

  • http://blog.robertgreyling.com RobertTheGrey

    Hey Jeremy,

    This looks like great stuff! Hopefully I’ll have a chance to catch it during the day.

    I’ll be doing my mvcconf talk a little later called “Pragmatic Spark – Turning it up to eleven”.

    One of my agenda points is going to be about using Spark with FubuMVC. Is that going to duplicate anything you’re likely to do? I don’t see it specifically mentioned, but I thought I’d check anyway.

    If not, is there anything in particular you’d like me to mention or cover during my talk regarding that point?

    All the best,

  • http://dmartin.net Dan Martin

    Nice. I won’t be able to check out MvcConf live but I look forward to the recorded video later on. It seems they’re going to record the sessions and put them online.