Walking the tight rope

(c) Bertrand Le Roy 2004 I think today is an appropriate time to write this post, as Rob Conery is leaving Microsoft tomorrow. “Who?”, you might ask. Rob is the author of the excellent MVC Storefront and Kona series where he explored the challenges in building an MVC-bound storefront application. I’ve been working with Rob for a few months on the continuation of that, which will be the subject of this post.

This is challenging for a number of reasons.

First, Rob’s are large shoes to fill (he’s a 12, I’m an 11). That’s fine, I’m just going to do things my way and try to have as much fun as possible (and communicate that if I can).

Second, the focus of the application has changed and that is a much more important challenge. Rob built this as a learning tool, as much for him as for his readers.

In the team that I’m now a part of, we have taken that Kona code as the basis to build something that will hopefully be more like a real world application. We are still very much in an exploratory mode (hence our attempts at migrating the application to NHibernate and SQLite) but our ultimate goal is to provide an application that people can download and build a business on, with a focus on simplicity and extensibility.

Fine, you may say, but why build something new instead of contributing to existing applications? Well, the very short answer is that we are also going to do that. One of the things we are already doing is to work with various application developers on reusing things like the plug-in engine and what sharing opportunities that brings.

But I can already hear some of you saying “oh so you’re not just building an application, what you’re really doing is building yet another framework”. To which I’m tempted to answer with another question: what do you mean “another”? Where is my Django-style application-level framework for ASP.NET? But that may sound like I’m downplaying the great efforts that many people are putting towards exactly that. I clearly am not. Actually, if you are working on something like that and we’re not already talking, I would love to know about it. I want to know how we can help.

9 Comments

  • I'm wondering your take on views in MVC? To me, this is where I spend 95% of my frustration. I am able to write domain code I am happy with, but the view seems to fight with doing domain properly (domain is behavior/event focused, view is property focused, etc). I am considering the idea of splitting them, but I don't know if I'm smart enough :p

    ASP.NET MVC is the only framework I have used at work (not even WebForms!) so maybe my confusion is from my limited exposure not seeing what Rails or Django are like...

  • @eyston: that is a somewhat wide open question. My take would be that the view will often be written by someone who is not necessarily a developer. That consideration alone guided much of the design we put into the theming engine that Kona is using. I'll talk a lot more about this in future posts and when the new code is available but let's just say that we tried to lower the concept count to a minimum in view code. We also have some ideas around the separation of layout from actual content rendering. Stay tuned.

  • Bertrand,

    Sad news about Rob leaving MS, but glad that they made a smart choice on having you pick up Kona.

    A colleague and I have been tinkering with a similar concept to your revised Kona plan for a while now, and just yesterday posted a call for ideas on the forums (http://forums.asp.net/t/1464120.aspx).

    We have both been working with the framework since the first preview, and have tried out a number of the concepts relating to pluggability and extensibility of ASP.Net MVC and the above post was intended to be the first step to consolidating them all into the sort of application-level framework you describe, to compete w/ the likes of Joomla or Drupal, but ideally with better scalability & provider (e.g. db) agnosticism.

    Our intent at this point (like you) is to use NHibernate as the persistence provider, and we were considering the use of Billy McAfferty's S#harp Architecture, though we aren't set on that yet.

    Bottom line, I'm excited about your vision for Kona and would like to collaborate!

    Paul

  • yah... I don't know what I'm looking for. I guess just seeing more ways of doing things so I look forward to your examples.

    I know Rob had a screencast awhile ago where he had "this.Customer.Name" or something similar. I'm not sure if that means you create a strongly typed ViewPage where the model is part of the ViewPage properties? (honestly I was looking forward to more Kona screencasts and it seemed to disappear... is there even code out there?)

    The idea of having the view appreciate that a designer could be the one crafting is appealing, even if I'm that designer :).

  • "Where is my Django-style application-level framework for ASP.NET? But that may sound like I’m downplaying the great efforts that many people are putting towards exactly that. I clearly am not. Actually, if you are working on something like that and we’re not already talking, I would love to know about it. I want to know how we can help.."

    Paul Vencill and I have planning and spiking such a system for over a year. For the most part, we feel that we've reached the point where we are mostly satisfied with the design and are capable of putting our numerous sketches and spikes to the test. With the recent launch of MVC 2 CP1, we've decided to start the project completely fresh and placed an invitation for developers on the asp.net mvc forums.

    The post can be found here:
    http://forums.asp.net/t/1464120.aspx

  • It sounds very exciting to me, even though there a lot of OSS offerings in .NET, I don't think it's anywhere near as comprehensive as the LAMP offerings. however, you have got to be careful not to try to be all things to all people (CommunityServer?). for me, simplicity counts a lot in what framework I end up using.

  • @Paul: that sounds great and very much in line with lots of our thoughts and technical choices. Feel free to contact me at bleroy at microsoft.

    @Eyston: the this.Customer was an experiment that Rob tried. It was very nice in many ways, but it also came with a number of hidden strings attached and a few things that were less than clean (such as hacking the global namespace). We decided to use regular strongly-typed views instead, which actually works well enough and is much cleaner.

    @Dave: absolutely.

  • From a learning standpoint I was interested in Rob's implementation of Workflows. Even though it may be overkill in some situations I would like to use it. Do intend to add it to the Kona project?

  • @axsbrad: I'm not sure. The plugin logic is certainly staying.

Comments have been disabled for this content.