MSDN Magazine Series: From Web Dev to RIA Dev

I don’t have to remind everyone that we’re in the middle of a world-wide economic depression downturn. When the economy is good, it is hard enough to convince your boss to re-build an application from scratch. When the economy is bad, it is bloody near impossible. In the coming months (and potentially years), I expect that as developers we’re going to be seeing more and more brownfield projects, rather than greenfield ones. We’re going to see more push for evolutionary development of applications rather than wholesale replacement. We will be called upon to improve existing codebases, implement new features, and take these projects in initially unforeseen directions. We will have to learn how to be Working Effectively with Legacy Code. (Took some effort to coerce the title of Michael Feathers’ excellent book into that last sentence.) A lot of companies have tremendous investment in existing “classic” ASP.NET websites, but there is a desire to evolve these sites rather than replace them, especially given these tough economic times. Howard Dierking, editor of MSDN Magazine, has asked me to write a 9-week series entitled From Web Dev to RIA Dev where we will explore refactoring an existing “classic” ASP.NET site. We want to improve an existing ASP.NET using new technologies, such as AJAX, jQuery, and ASP.NET MVC. We want to show that you can adopt better practices, such as continuous integration, web testing (e.g. WatiN, WatiR, Selenium), integration testing, separation of concerns, layering, and more.

So I have two questions for you, Dear Reader…

  1. Can you think of a representative “classic” ASP.NET website (or websites) for the project?
  2. What topics would you like to see covered?

I should clarify what I mean…

“Classic” ASP.NET Applications

I’m currently considering PetShop, IBuySpy, DasBlog, SubText, and ScrewTurn Wiki. I’m not looking for one riff with bad practices. Just an ASP.NET project in need of some TLC – one that doesn’t have a decent build script, isn’t under CI, a bit shy on the testing, little to no AJAX, etc. The code should be typical of what you would see in a typical ASP.NET application. (For that reason, I am probably going to discount IBuySpy as it is built using a funky webpart-like framework, which is not typical of most ASP.NET applications.) Some of the ASP.NET applications that I just mentioned don’t exactly qualify because they do have build scripts, tests, and other features that I would like to demonstrate. I will get permission from the project owner(s) before embarking on this quest and plan to contribute any code back to the project. Needless to say that the project must have source available to be considered for this article series. So please make some suggestions!

Topics

I have a lot of ideas of technologies and techniques to explore including proper XHTML/CSS layout, jQuery, QUnit, AJAX, HTTP Modules/Handlers, build scripts, continuous integration (CI), ASP.NET MVC, web testing (probably WatiN or Selenium), refactoring to separate domain logic from codebehind/sprocs, … I will cover one major topic per week over the 9-week series. So I’ve got lots of room for cool ideas. What would you like to see? What do you think is the biggest bang for your buck in terms of improving an existing ASP.NET application?

Depending on the topics covered (based on your feedback here), I might use one site for the entire series or different sites to cover each topic. It would add some continuity to the series to use a single site over the 9 weeks, but after a brief inspection of the codebases mentioned above, I am having my doubts about finding a single representative site. We’ll have to see. Please leave your suggestions in the comments below. Thanks in advance!

About James Kovacs

James Kovacs is a Technical Evangelist for JetBrains. He is passionate in sharing his knowledge about OO, SOLID, TDD/BDD, testing, object-relational mapping, dependency injection, refactoring, continuous integration, and related techniques. He blogs on CodeBetter.com as well as his own blog, is a technical contributor for Pluralsight, writes articles for MSDN Magazine and CoDe Magazine, and is a frequent speaker at conferences and user groups. He is the creator of psake, a PowerShell-based build automation tool, intended to save developers from XML Hell. James is the Ruby Track Chair for DevTeach, one of Canada’s largest independent developer conferences. He received his Bachelors degree from the University of Toronto and his Masters degree from Harvard University.
This entry was posted in .NET. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Bernhard Hofmann

    Whatever you choose, please choose something that is simple enough that allows us to see the metamorphosis clearly, without being bogged down in the idiosyncrasies of the application.

    I’ll be watching closely because, even without the current economic climate, brownfield is an area where companies can reap greater reward if done well.

  • http://blogs.conchango.com/alexiskennedy Alexis Kennedy

    Concrete ideas about how Feathers’ get-it-under-test-and-then-change-it techniques can be applied to the view layer would be great.

    I’d like to see how tools like QUnit could / would work in a traditional CI setup.

    And I’d like to see the reconditioned app be one with a bunch of complex nested / reused content – master pages, .ascx and so forth in a reasonably complex hierarchy – I feel this is a natural pain point.

    I’m very much looking forward to this. Is it going to turn up in your CodeBetter feed as well?

  • Mike DeKoning

    I’d love to see you update the classic IBuySpy Portal. The DotNetNuke version has never thrilled me for some reason. Considering all of the talk surrounding SilverLight 3 about building business apps, this is possibly the most business-like app from the ASP.Net starter kits.
    Whatever you chose, I’m sure it will be an interesting series to follow.

  • Brian P

    I think its a great idea, but I don’t think I like the labeling of “classic” ASP.NET. I agree with the alt.net practices like unit testing, separation of concerns, and most of that good stuff, but Microsoft has just recently announced support for jquery (even still, doesn’t mean you have to use it), and ASP.NET MVC hasn’t even been released yet. Isn’t the classic thing a little premature? Just seems the term might be getting thrown around to try and shame people for not being up to speed with the alt.net way.

  • Mike DeKoning

    @Brain P: Actually ASP.Net MVC was released on Wednesday.

  • George

    Just for some perspective – where I work, we’re trying to persuade ‘da management’ that we need to move from Classic ASP (not even ASP.NET)…

  • http://www.jameskovacs.com james.kovacs

    @Brian P – My intention of “classic” ASP.NET is not to be derogatory, but more to emphasize working on a pre-AJAX, pre-jQuery, pre-WatiN/Selenium, pre-Silverlight, pre-* world where a lot of ASP.NET apps exist. The idea of the series isn’t to create an “ALT.NET-style” ASP.NET MVC sample, although that would be fun too. The intention is to show web developers some pragmatic steps to improve their existing apps. Yes, some “ALT.NET”/agile concepts will be worked in such as build scripts and CI, improving the architecture, better separation of concerns, and such. Others (or should I say most) will focus on core web concepts, such as good XHTML/CSS, jQuery/QUnit, and the other topics that I mentioned – all of which can be applied to any project – agile or otherwise. Given my own inclinations, I’ll present them with an agile mindset, but in a way that is approachable to those who don’t subscribe to TDD/BDD/*DD. :)