views:

49

answers:

2

Currently I'm working with a big, old and extremely poorly written ASP.NET 1.1 application and the continuous maintenance is becoming quite a problem. Basically it's reaching breaking point and I'm reluctant to expand it any more than I have to as demanded by the business. Based on my experience creating other projects from scratch it would really suit an ASP.NET MVC based solution. Oh how I wish the world were that simple...

The fact is that I just cannot justify re-writing it from scratch and the business cannot afford it. The ideal solution would be to start writing an MVC-based application alongside it and begin a slow migration as new requirements arise.

I've read posts which state that this is entirely possible, but in my experiments I've not found it so easy. The current application contains several large data access and business logic layers shared by other applications that the company produces. These are also written in 1.1 and will not compile in 2.0 (and would destroy the other projects if I tried!) so I cannot upgrade them. Since I can't do that I'm stuck with an application that cannot even be opened in a .NET 3.5 capable visual studio. The new MVC app would also have to make use of these layers.

I am entirely open to suggestions. I'm desperate to find a solution that I can quickly demonstrate would allow me to improve the product immensely without taking too much time or affecting the rest of the business.

+2  A: 

You could write a WCF service on top of the existing business layer and have your new app talk to that service instead of referencing the business layer directly.

Henrik Söderlund
I'm not sure how that would help. I'd still be left with the need to create .NET 3.5 components in what is currently a .NET 1.1 project. Or am I missing the point?
Jason
But surely you can reference the .NET 1.1 DLLs in a .NET 3.5 project without having to rebuild the source code? I am thinking something like this: Write a WCF service that references the .NET 1.1 DLLs and exposes the methods that you need for your project. If the .NET 1.1 components have evolved over time and are used in several different projects, maybe you will not need _all_ those methods. Then build your asp.net on top of that wcf service.
Henrik Söderlund
Sorry, the last sentence should read "Then build your **asp.net MVC app** on top of that wcf service",
Henrik Söderlund
A: 

You need to divide to conquer. Analyse the current app and its layers and see if you find a way to divide each significant piece of functionality into a discrete area with as few changes as possible. Then make each area a unique service using the old technology. Then you can rewrite each service slowly as you can fit it in and not affect the whole.

Otherwise you are going to have to come up with a convincing business case for your managers so that they allocate you the time to do the job properly. Sometimes our job is political as well as technical.

ajaxer