DNN Blog

Aug 30

Posted by: Shaun Walker
8/30/2005  RssIcon

With the major production release of ASP.NET 2.0 just around the corner ( Nov 7, 2005 ), we have been focussing our efforts on a migration strategy for the DotNetNuke application. To provide some transparency into the process, and showcase our new Blog feature on http://www.dotnetnuke.com, I thought it would be worthwhile to share some of our progress with the community.

Last year when I heard the marketing propaganda regarding 70% code reduction and 100% backward compatibility for ASP.NET 2.0, I never believed it for a second. Marketing is a fairly subjective art and I am sure it could be proven that Microsoft has achieved its stated objectives - but only if you consider the most simplistic web project scenarios. In all fairness to the Microsoft ASP.NET team, it is next to impossible to anticipate all of the subtle ways in which external parties have tweaked the framework to achieve their specific goals. And in the case of DotNetNuke, we certainly did our share of tweaking.

So as it turns out, the migration process for DotNetNuke is a non-trivial exercise. This is largely because the DotNetNuke application has been designed for granular modularity; whereas most ASP.NET applications are constructed as monolithic assemblies. Since we deviated so far from the "standard" use case in our attempts to produce an extensible web application architecture, some of the "features" in ASP.NET 2.0 actually conflict with our existing application model.

To be more specific, our problem is not with the .NET Framework 2.0 run-time environment. With minimal code tweaks we can get the current version of DotNetNuke to run on the .NET Framework 2.0. Our major challenge comes from Visual Studio 2005. Due to changes in the compilation model, the IDE does not like the folder structure of our web application and will not compile properly.

By far the biggest compatibility issues we have run up against is the major changes to the Web Project model in ASP.NET 2.0 and the deprecation of project files. In VS.NET 2003, our root project is a web project which contains numerous subfolders - each of them an independent class library project containing all of their resources in a single, organized silo. The root web project contains a project file which includes metadata on which folders/files should included in the build process for the core DotNetNuke assembly. In VS2005, this project file no longer exists which results in the IDE trying to build all folders/files into one monolithic assembly - a complete failure.

Now I hate to bring up past events, but I was invited to some Whidbey Labs nearly two years ago in Redmond where the concept of a "project-less" web was introduced. The whole purpose of the Labs was to get feedback from a wide variety of stakeholders regarding proposed Whidbey enhancements. At the time I remember there being significant negative feedback from the attendees regarding the "project-less" web approach. Regardless, there must have been enough perceived business benefit for the feature to be included as a fundamental item in ASP.NET 2.0 ( Scott Guthrie's recent Blog includes a good shopping list of benefits of the new Web Project model - many of which make a lot of sense - just not in the context of an application like DotNetNuke ).

I personally do not believe in "change for the sake of change". If something is going to be changed, there had better be a tangible business benefit. Unfortunately, this philosophy is very difficult to adhere to when it comes to platform upgrades. Often you are forced to move sideways ( or backwards ) temporarily, before you are able to move forward again. This may involve putting revenue generating enhancements on hold just so that you can achieve basic compatibility of your current feature set on the new platform. I think this is why many people fear platform upgrades and are often hesitant to construct a short-term migration strategy. I think DotNetNuke offers a compelling business advantage in this area. As long as you are using the application as a "black box" Web Application Framework, you are able to rely on the fact that someone else is taking care of the mundane base platform migration issues for you. This significantly reduces the platform upgrade impact and leaves you free to continue focussing on the delivery of your core business requirements.

In researching a solution to our problem, it forced us to examine our current architecture to identify the attributes which we believe are critical to the project. Extensibility has always been a driving factor and will continue to be an area where we strive to deliver the maximum flexibility. In order to achieve this goal we absolutely must retain our modular architecture. So although going back to a monolithic assembly would simplify our migration effort, it can not even be considered because it conflicts with one of our fundamental principles. other attributes we wish to preserve are our current module development environment as well as support for our third party developer community. Based on the attributes identified, we were now ready to judge a variety of approaches to the ASP.NET 2.0 upgrade challenge.

At this time, I must publicly thank the ASP.NET team in Redmond for providing valuable assistance in dealing with our upgrade challenges. Not only did they go out of their way to understand the full problem domain, but they also brain-stormed multiple possible solutions. There is no substitute for the level of knowledge these folks have with the ASP.NET 2.0 platform - and there is no doubt we may have spent considerable time spinning our wheels if left entirely to our own devices.

As is typical with most technology decisions, there is no approach which does not have at least some negative aspects to it. The trick is to weigh the postive with the negative to come up with the best overall solution. I will share some of the research in summary format below:

1. Virtual Directories - map virtual directories to all subfolders within the Web Project.

Benefits:

- DotNetNuke could retain its current folder structure and behave properly in VS2005.

Issues:

- configuring multiple VDIRs is not an option in most hosting environments ( a primary deployment target for DotNetNuke )
- complicates the installation experience for DotNetNuke ( one of our fundamental goals is simplified installation including no custom IIS tweaks )
- complicates the dev environment setup
- session state can not be managed effectively across VDIRs ( although DNN does not use session state - some third party modules do )

2. Web Project Reorganization - the folder structure for DotNetNuke could be re-organized to conform to the new Web Project model.

Benefits:

- could use new low level development tools offerings such as Visual Web Developer and Visual Basic Express
- allows for dynamic compilation model

Issues:

- extremely invasive changes to folder/file organization ( involves moving files/folders on upgrade, changing database fields which contain path information, updating modules which contain static path information, etc... )
- code-beside results in distribution of intellectual property
- overly complicated IDE structure in terms of the module code files being physically seperated from the UI files in completely different root folders ( constantly hunting through folder hierarchies to find the right location is not very efficient )
- more complicated development environment in terms of having to potentially leverage MSBuild rather than doing everything within the IDE

3. Class Library Conversion - the root web project could be converted to a class library project

Benefits:

- minimal code changes
- no file/folder reorganization
- allows for same development model we have today

Issues:

- will not allow people to take advantage of new low level development tools offerings such as Visual Web Developer and Visual Basic Express
- does not follow new Web Project model ( may result in barrier of entry for new/novice developers )

Tags:
Categories:
Location: Blogs Parent Separator Shaun Walker

12 comment(s) so far...


Re: ASP.NET 2.0 Migration...

For anyone who might not understand why VWD would have difficulty with DotNetNuke under scenario #3... Brian Goldfarb explains a few of VWD's limitations in this post on Channel 9.

By mrswoop on   8/30/2005

Re: ASP.NET 2.0 Migration...

While number 2 seems ideal, I have to say I think # 3 looks like the best option and would allow a version ready with the MS ASP.Net 2.0 media push. If LIMITED devopment with VWD could occur (but not compile) and the cmd line tools could be used to compile (or use a macro) - but I have no idea if this is possible - then I think this would suit everyone.

By jwhite on   8/30/2005

Re: ASP.NET 2.0 Migration...

Hmmm... projectless-web, what a bunch of hooey. While it's fine as an option, it shouldn't be forced upon us...

To me, approach 3 seems like the way to go. I've worked full time on DNN for the last two years and I can count on one hand the number of times I've had to recompile the core. The fact of the matter is, the vast majority of users should never have to compile the core and therefore I don't think you need compatibility with low level tools except for module development. In fact it's probably better to make it more difficult to muck with the core and instead create a clear simple path for module development.

By davido on   8/31/2005

Re: ASP.NET 2.0 Migration...

From the brief descriptions of the options I also like #3. The core already is an enterprise class framework and should not be handled lightly. Making it easiest on module developers should have top priority. Creating modules with the new UI controls in ASP.NET 2.0 is really the only compelling reason for me to upgrade. I don't touch the core.

By cisakson on   8/31/2005

Re: ASP.NET 2.0 Migration...

As a newb to the DNN community and just getting a grasp on asp.net. I was holding off until vs2005 came out to continue any sort of study. This could cause issues for people like me and cause many to choose another platform. While at the same time I've never witnessed a community that is so proactive in helping people with thier problems no matter what, setup, skinning, module design, just everything concerning the entire dnn community people jump in and help. If the same level of cooperation and support from the community was maintained it shouldn't be a problem for those such as me.

The only drawback is that many new developers will be learning the new concepts and tools and will want to employ these methods in thier coding. Again, option 3 may cause the new dnn customer to go elsewhere or not even give dnn any consideration whatsoever.

Just the thoughts of a newb! Thanks for hearing me out guys.

By Rileymoto on   9/1/2005

Re: ASP.NET 2.0 Migration...

It seems the main argument against #3 it is that you need VS2005 to work with it. First, we may figure out a way around that and second, the biggest barrier to entry for a new developer is not the tool (you can get a copy of VS 2003 on Ebay for $70 and VS 2005 will probably be on Ebay for $100) but the amount of code needed to make a module. The Core is already working on this issue.

By AdefWebserver on   9/1/2005

Re: ASP.NET 2.0 Migration...

Funny, I see no user benefits at all in any of this "upgrade". So, as the wise old Romans used to say: "cui bono?"

By Wendy on   9/1/2005

Re: ASP.NET 2.0 Migration...

While I have had VS.NET 2005 beta 2 for a couple months, I finally got around converting a few of my smaller ASP.NET sites (non DNN) to work in the new VS and found that it will take much more work than I thought. The new projectless solutions along with the new file structure will be a big headache, I can imagine how big projects in the corporate world may get hard on the update.

For me though, the features at the end of the road will pay for the work required to get down the road. They have a lot of cool features and many of them should increase productivity.

I would imagine the option that requires the least amount of work and still provide a methodt o move forward would be best for now.

By RockyMoore on   9/13/2005

Re: ASP.NET 2.0 Migration...

I'm not quite sure I understand the issues, but I'm voting for option 3, after reading the following link:
http://lab.msdn.microsoft.com/express/faq/default.aspx
i) Visual Basic Express should not be used for web development.
ii) Absolutely. The Web site layout and file formats are 100 percent compatible between Visual Web Developer 2005 Express Edition and Visual Studio 2005 Professional Edition.
We may need to make a build script for VWD Express, but otherwise it still looks like the best solution.

By djbaldwin on   9/19/2005

Re: ASP.NET 2.0 Migration...

So the express versions are ok. But really who is dependant on them now? My point it that people who need to have gotten along without a lite version for a long time. Those that dont use VS 2003 are used to compiling at the command line anyway or using tools that require them to perform addition steps compared to VS 2003. Why target a core to work with the express versions? Seems silly to me. By doing so you lead yourself to an express core, lets take full advantage of the advanced features you get from using a true IDE.

By tmihcc on   9/21/2005

Re: ASP.NET 2.0 Migration...

I guess, #3 is ideal. I have been doing Module Development and I would only want that part to be, atleast as easy as it is today. I suggest to everyone, not to touch the Core, and hardly recompile it; mainly because, as a Module Developer, I have no control over, my clients's Core modifications.

I also believe, that Core should not choose the ASP.NET model, which uses low level tool support. I am sure, one can invest in VS 2005, if he is serious enough in development efforts. Besides, with DNN repo with MS, there could be a good deal for DNNers.

By Jaydeep on   9/25/2005

Re: ASP.NET 2.0 Migration...

A year or two from now - ASP.NET 2.0 will be the standart out there and ASP.NET 3.0 will be cooking but 1.1 will be a history. Lets look ahead and make wise decisions...

By Anonymous on   11/8/2005
Attend A Webinar
Try An Online Demo
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft .NET. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates Snowcovered.com where users purchase third party apps for the platform.