简体   繁体   中英

Why not upgrade to the latest .NET framework?

I see a lot of people have .NET 2.0 or even 1.1 as a requirement for their projects. In my own workplace there is also lots of skepticism for upgrading to the latest and greatest .NET framework.

As a programmer I feel it is very frustrating working with the older frameworks when you know that you could have done this so much easier with the newer frameworks. I usually install beta versions and play with them so I quickly get familiar with them and in the process forget the old way of doing things so it's a pain to relearn what you have tried to forget when you have the constraint of working with older versions.

What are the reasons for hanging on to the old versions when they should be compatible and how can you convince people to upgrade?

First, understand the reasons why businesses are slow to upgrade.

Computer systems are not a strategic advantage for most of the companies out there. They are a necessary service function.

Since they are necessary, breaking them can be extremely expensive. Since they are not a strategic advantage, being able to develop slightly faster is not a large advantage.

You are proposing that a company spend resources to keep upgrading to the latest version for likely but not certain and not major gains, with the possibility of a lot of breakage. For most companies, this is not a win. It's safer to adopt things after they have been out there for a while. They miss some upside but avoid a chance of a disastrous downside.

Go ahead and propose upgrading to the latest and greatest if you like, but you'll be much more effective putting it in a business (as opposed to technical) manner. Try to find out quantitatively how much more effective it will make you, and therefore what the company can save. (They won't pay attention to a figure you make up, might possibly pay attention to one somebody well known makes up, and are more likely to believe something supported by a study.) Acknowledge the downsides, and show what the likely costs are going to be, and find ways to limit the downside. Be very wary about fudging anything, as the decision-makers have a lot more experience rejecting this sort of thing than you have of proposing it.

Don't make any mention of developers liking the latest stuff, or you'll come off as somebody wanting the company to pay for new toys, and lose a lot of credibility.

You can sometimes get what you want, but it helps to know how to ask for it.

A reason not mentioned is that the 3.5 framework can't be installed on versions of Windows prior to Windows XP.

Supported Operating Systems: Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP

link text

It's easier to jump into a new framework on a new project.

On existing projects, it takes a certain amount of work to take advantage of the new features. In many cases, these are only beneficial to the programmer. When you're working on a maintenance-only project, you sometimes just have to shrug and say, This would have been so much less code in version x.

I've migrated 1.1 projects to 2.0 and to 3.5 and also from 2.0 to 3.5.

What I can tell from my experience is that I had absolutely no problems migrating from 2.0 to 3.5. However, I faced some errors projects from 1.1 to either 2.0 or 3.5, so I have to advice people to be extra careful while migrating a 1.1 project.

If you are working in 2.0, I say go for it. You will find the projects a little faster on the run, and you get to play with LINQ :)

For me here, it's purely about the money - 2.0 is working for the company so they see no motivation for an upgrade.

I imagine this is not uncommon.

It's possible that the people asking for the software don't necessarily know what the latest version of the framework is out there.

Most of the clients I see aren't technical and just ask for the functionality that they want.

Some ask specifically for .NET 1.1/2.0 and we're able to tell them that development costs will be reduced if we use 3.5 since it's easier to work with and it's easy to get them to switch.

Some people maybe concerned about integration with what they already have. If what they already have is built in .NET 1.1, they may want to stick with it in order to keep everything consistent.

As for your own workplace, I'd say take charge and have demonstrations where you show how different it is, how easy it is once you learn how to use it. There was a great screen cast of how to use the new dynamic data stuff in .NET 3.5 & VS2008. Quite a few people in my company got the latest version of VS installed after seeing it. I'll try to see if I can find a link to it.

http://blogs.msdn.com/davidebb/archive/2007/12/12/dynamic-data-screencast-is-now-available.aspx

Scott Hanselman had an article about 3.5 SP1 incompatibilities:

http://www.hanselman.com/blog/UpdateOnNETFramework35SP1AndWindowsUpdate.aspx

Even though that only applies to a small list of bugs, the bottom line is: A new Framework requires a very thorough test and is no 5-minute task, because while it is 99.99% compatible, the 0.01% incompatibilities are the really obscure and hard to find ones.

I already posted something very similar here : Is the C# 2.0 to C# 3.0 transition worth it for this project? , and the majority says that it's compatible but not worth it to switch because of how the project is already in progress.

The switch is justifiable if you really want new stuff on the framework, otherwise you will need to update all your licenses for Visual Studio for nothing and may have to change a few little things in your project.

Because they "should" be compatible does not mean they are. There are always breaking changes between versions.

Also most QA procedures dictate that a change in code requires a retest of that code. Changing frameworks will require an entire test run on the code, and involve much more man hours.

Latest != Greatest. Just ask anyone who has had to deal with Vista.

Edit

Regarding Vista... relax, it's an example! How many things didn't work with Vista that were fine with XP? I had a hard time converting to XP after using Windows 2000 - remember how bad 98 was? I didn't want to leave my "safety blanket" after that. It's not a bash, really.

2.0 is relatively stable, and fairly widespread. 1.1 is older, which means it's likely bugs and their workarounds are well-known. I'd be very surprised to find a Windows machine without 2.0 installed. These factors might have an effect.

Also, consider that people might have started developing their product before an older version of the framework came out. In a lot of cases, if your application is a .NET 2.0 application, you may not need anything in the 3.x framework. Visual Studio 2008 can target the 2.0 framework, so there's no real pressing need to "upgrade" these applications. It's not really worth the QA effort to validate that everything works fine when there's no benefit to the change.

Finally, there's myth. People like to believe their friends whether or not they are ignorant. Depending on who you ask, the .NET Framework 3.5 is a 50 MB, 100 MB, 200 MB, or 1.82 TB download. It seems like people pick the largest number that seems scary for the situation at hand. Those people are akin to people who preach the dangers of this new invention called "the Internet" that could expose us all to criminals and danger. You can download the framework in as little as 28 MB. Sound rough? You can get USB drives that hold that much for practically $1 these days, and I've downloaded PDF files that weighed in heavier.

The major problem is that your application will require a certain version of the .NET framework; not that fun for your end users who might have to download an installer of 100 MB or more.

Many of our clients have highly restrictive policies as regards what software can be installed on their line-of-business desktops. They're aren't even configured to receive MS Automatic Updates as they're published, but will only apply certian updates, as pushed out by their own IT admin staff (most of these desktops will not have internet connectivity).

For clients like these we cannot just release a new version of our software that relies on .Net 3.5. Because of these policies we're on 2.0 for another 18 months (at least), until our existing clients decide that .net 3.5 isn't evil and that it won't break any of their line-of-business software . . . at which point 4.0 will be breaking and I'll have to sit and be happy with this funky "new" linq stuff, while everyone else gets to play with cool new 4.0 functionality sigh

I think many people forget that there are actually many costs for not having upgraded frameworks.

  1. Sometime you have to upgrade. Your OS or other programs will become unsupported. So it is more a question of taking small upgrades every now and then or a big upgrade later.

  2. Most programmers (I think) would like to play with the latest toys and learn new technology in order to stay motivated.

  3. You will be able to create programs faster which will of course again lower the price of your products and projects, so to stay ahead of the competition you would like to be on the edge.

If you are still in development and have not released your software it is fine to switch to a newer fx version (same for java runtime). But if you have already released deploying updates is much harder. In this case it is much easier to stay with the old fx.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM