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