MVC Storefront Challenge Kickoff

Last week, I announced the MVC Storefront Challenge, which is a response to some feedback Rob Conery was getting on his ongoing MVC Storefront series.  Before I could get started, I needed to get the original project up and running on my own machine.

I had to install Unity and restore the included database (I already had ASP.NET MVC installed), but everything is up and running.

The original idea behind the challenge is the feedback Rob’s getting to switch to various OSS tools for an assortment of applications, including ORM, IoC, unit tests, etc etc.  Rob didn’t think this made sense, and I don’t either, as it doesn’t work too well to switch out the engine in the middle of a race.

The goal of the challenge is to use these open source tools to build an identically functioning MVC Storefront.  By “identically functioning”, I’m referring to the end-user experience.  HTML and URLs will be exactly the same for both applications, as well as user flow.

Ground rules

Since HTML, URLs etc need to be exactly the same, we can achieve this by:

  • Continue to use ASP.NET MVC
  • Use the same controller classes, at least the signatures
  • Use the same views
  • Use the same view models

Everything else can change.


Besides just getting familiar with ASP.NET MVC, the goals of this project include:

  • Showing sample usages of popular OSS .NET tools
  • Compare implementations of similar scenarios between the two approaches
  • Hopefully create some teaching opportunities for these approaches

The point of this isn’t an exercise of “Linq 2 SQL is teh lame” or anything like that.  There aren’t many comparisons that I could find of identical applications with completely different infrastructure, so it will be nice to have some comparisons.

First steps

Right now, all I have is the MVC Storefront code running on my local machine.  The license allows reproduction and derivative works, providing I include the original license (Ms-PL).  To get this going, I’ll need to:

  • Pick a name for the project
  • Create a home for the project
  • Remove all non-ASP.NET projects from the solution
  • Get it building!

From there on out, I’ll have some skeleton controllers to start adding behavior.  To do so, I’ll probably have to do some myself, and hopefully do some recorded pairing with other folks.  As Rob completes more functionality, we’ll add it to the MVC Challenge project.

Once I get the first steps ironed out (send in project names, kthx), it’s just a matter of flushing out the controllers.  <sarcasm>Easy, right?</sarcasm>

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in ASPNETMVC. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Some possible project names:

    Open Storefront
    OSS Storefront
    MVC Emporium

    Secondly… I typically like GoogleCode, but something like Assembla ( looks pretty good too. Since we’re talking about alternatives, why not go full-tilt an use a host that offers Git, project tracking, etc… :)

  • Please don’t host it on codeplex, and I like the name OpenStorefront

  • GitHub offers hosting for GIT but let me fore warn you that GIT has compatibility issues with Windows.

  • Jimmy I really love the idea – really I do – is there a way we can work with some branching here? I really want to involve the community as much as I can to pull in some “new thinking”.

    For instance I just swapped out Unity for StructureMap as it does something I need done – and Jeremy Miller is going to show me how to do it.

    I am not opposed to NHib (or any other tool) – I’d really like to work together on this somehow. I dig the “compare/contrast” thing but my goal isn’t to pimp MS stuff – it’s to make a really good app…

  • Ondra

    What do you guys think about implementing object database instead of relational db (db4o with LINQ to db4o comes to mind). That’d be really sweet to see if that helps the project in any way!
    Or does that violate your ground rules?
    Either way, I’m willing to work on that, let me know what you think.


  • @Rob

    I like the branching idea. How should we proceed?

  • Rob Conery

    Let’s Skype tomorrow – my name, smashed into one thing. This is a weird one… but I think I can make it happen.

  • Great stuff, really interested in how this progresses and definitely would definitely like to get involved.

  • @Rob

    Today’s no good…how about Sunday?