A .Net 2.0 Migration Strategy? 164
An anonymous reader asks: "I work for a large organization where we use .Net 1.1 as our sole development language. We have many frameworks, applications and web sites that are developed in .Net 1.1, and these developments are by no means trivial since they are the result of an IT department of over 300 people and 2 years of development. It is my responsibility to develop a strategy to move to .Net 2.0, this includes the existing applications, new developments, integration, QA, live and development environments. Does any one have any experience in this (preferably at this scale) and can any one recommend any reading material that would help?"
Test test test (Score:4, Insightful)
All I can say is... 1. get it compiling, 2. get it (apparently) working with some shallow QAing, and 3. pass it off to QAers, because they know what to test better than you do. Only after should you even consider utilizing features of
Re:Test test test (Score:2)
I would add holding off until more bleeding edge types
have figured out where the really sharp edges are.
Re:Test test test (Score:2)
Specifics? we made the switch and found that the only real problems were some VS nonsense*, but overall, nothing broke completely, just a bunch of warnings about depreciated stuff. As far as failing down the road... you found it would compile and run for a while then stop? What did that? Because we just haven't seen anything like that.
*The changes to web projects and VB.NET projec
It shouldn't be bad (Score:1, Interesting)
The hardest part will be dependencies. If you have anything that won't (or can't) migrate to 2.0 then things get tougher. One of our tools was external, and it loads in external DLLs. It can't load a 2.0 DLL, so our DLL couldn't upgrade to 2.0, but our DLL consumed a shared DLL... that got messy. We worked around it (for the moment) by switching it to
I know this is trollish, but switch to Java (Score:1, Insightful)
Microsoft has suckered your company into embracing a system designed to go obsolete so that they can sell you a replacement every few years. The time and resources spent converting to Java (and come on, C# and Java are very similar) would be saved in the long run by never having to deal with these silly MS upgrades ever again.
Re:I know this is trollish, but switch to Java (Score:1)
You can use these tools [google.ca] to help you convert.
Agree fully (Score:2)
Yes, Java made some design mistakes in the beginning, and even today we're still stuck with them. However, MSFT also was able to copy Java and introduce new design errors in
Re:Agree fully - Riiiight (Score:1, Insightful)
In terms of enterprise applications, it's hard to go up when you're being used almost everywhere like Java, however, it's not hard to go up if you're being used almost nowhere like
P.S. Just because you work in a mixed shop doesn't mean that you're not a
Re:Agree fully - Riiiight (Score:2)
Now Java/J2EE has replaced any other environment in the last years, obviously it is seen that in some cases there may be better solutions. Not each project is intended to last for 10 years, sometimes you just need some quick and dirty tool or prototype, for which a scripting language might be more appropriate. If it is a little tool with strong emphasis on GUI and office integrati
Re:I know this is trollish, but switch to Java (Score:2)
Re:I know this is trollish, but switch to Java (Score:2)
>.>
Re:You *ARE* trolling (Score:1)
Re:You *ARE* trolling (Score:3, Insightful)
Just a curious question, where do you get your opinion/facts/observation from?
( ) because you actually ported a larger app (say 200kloc or so) from 1.x to 2.0,
( ) from comparison of superficial announcements and specs?
No offense intended, but portability on paper is way different than in practice.
Re:I know this is trollish, but switch to Java (Score:2)
Funny. Usually I've seen "Use this version of JAVA or NEWER or all hell will break loose."
Current Java is 1.5. All versions that are 1.X are backward compatible. JAVA 1.5 can run anything written for 1.x up until 1.5. If a program is later writter for Java 1.6, it probably won't run an a 1.5 JVM. I
Re:I know this is trollish, but switch to Java (Score:2)
If
In fact, I'd argue that Java is a collection of frameworks - as is
I think the point about java, is that when things like the Collections framework change, the old stuff is deprecated, meanin
Re:I know this is trollish, but switch to Java (Score:2)
Re:I know this is trollish, but switch to Java (Score:2)
That probably the GP's point. You only ever see "use this version or newer", never "use this particular version". Sometimes, programmers have to rely on newer features introduced in a later version, but programs written for older versions won't fail, even on newer JVMs. That means that you might have to upgrade your JVM every once in a while, but you won't have to port any applications you have to the new JVM. They'
Re:I know this is trollish, but switch to Java (Score:1)
Azureus:
Note: Using an old Java version or having more than one installed may cause severe problems like 100% CPU usage!
The latest official Java is version 1.5 Update 6.
That sure sounds like telling you to use a specific version to me.
jasperreports:
JRE 1.3 or higher
OK that's one point for you.
GanttProject:
The absolute prerequisite is a correctly installed Java 1.4.x or 1.5.x.
Yep, no dictating specific versions there.
Re:I know this is trollish, but switch to Java (Score:2)
Really? To me, it seems that they're saying to use a specified version or later. They aren't saying to use 1.5-6, but just not to use one that isn't too old, such as 1.5-6.
Re:I know this is trollish, but switch to Java (Score:2)
Note: Using an old Java version or having more than one installed may cause severe problems like 100% CPU usage!
The latest official Java is version 1.5 Update 6.
That sure sounds like telling you to use a specific version to me.
jasperreports:
JRE 1.3 or higher
That's not sun updating something and breaking it, that's Azurues devs taking advantage of features in the newer java that don't exist in older java. When you try to use things that don't exist, strange things happen (like 100% CPU). You can inst
Re:I know this is trollish, but switch to Java (Score:2)
I guess that leads to the questions "Why are both 1.1 and 2.0 in Windows update as installable options? Why doesn't the installation of 2.0 trump the installation of 1.1? (Why does it let me install both?) And why have I seen applications that require 1.1 installed, and not 2.0?" For example, BizTalk server 2004does not run with the
Re:I know this is trollish, but switch to Java (Score:2)
Not really. The comparison should not be between
Re:I know this is trollish, but switch to Java (Score:2)
Prototype first (Score:2)
Test the apps in a test bed envoirnment.
Your 90% of your stragegies will come out off the problems you encounter in your test-bed.
Second don't try to do too many things at once. For example, it would be tempting to move to 64-bit with 2.0
MSDN and TechEd videos are good resources for code migation issues. Some resources you can checkout are
Migrating ASP.Net [microsoft.com]
Microsoft
since we are talking about .net (Score:2)
Some background on this. Our VB 6.0 is not object oriented at all, and it was originally VB 3.0 that was ported to VB 6.0. The forms have code in them.
I'd like to know if migrating from VB 3.0/6.0 to .net would be a total rewrite or what. I have analyzed some of the code and I know the biggest issue I see is the Variant types, but not sure what else, and if it is possible. This is a really large project.
On another note, if anyone knows of a way to mi
Re:since we are talking about .net (Score:2)
Re:since we are talking about .net (Score:2)
Re:since we are talking about .net (Score:2)
Alot of the code uses Me which I heard is a nono in .net also. I ran a code checker and it found lots of problems.
I guess we need to pull it into .net and see what blows.
Migration (Score:5, Informative)
The WinForms upgrade wizard worked pretty much flawlessly for each application I converted over, the trickiest part was setting up Source Control, and it was more of a problem with the source control solution we used (SourceGear). Good source control system once it's setup, but a real pain in the ass until then. There were 3 or 4 fairly large projects and a ton of small ones that all converted without a problem.
Not sure if you're using the web stuff or not, but that was where I had the most problems. The Web upgrade wizard is far from perfect. You should at least install the latest version of it from: http://www.microsoft.com/downloads/details.aspx?F
That version has fixed several issues I had, but also seemed to introduce a few new ones (or it was a cascading problem, that resulted in different errors when the originals were fixed). I've had to do a lot of tweaking on many aspx pages to get it to find the Code Behind and there were a couple projects that I had to re-assign all my event bindings with, for some reason, although that was with the old version of the conversion wizard so that is probably fixed.
If SQL is being involed in this upgrade procedure, that was a much harder process to get migrated. Tables, Views and Stored Procedures migrate fine and the Reporting Services reports migrated over.. ok (though VS2005).. but the HUGE hassle is analysis service, if you use that, don't expect it to migrate very easily. DTS stuff was pretty easy to migrate over.
Anywhere, theres my memory dump. Hope that helps in some way.
necessary trolling (Score:2, Insightful)
I have C code both in production and development that's over 10 years old at this point, and at no point do we have to find a "upgrade strategy" as the foundations set up by K&R were good 30 years ago, and they're still good now.
Meanwhile, you're looking at how to deprecate a big chunk of your company's development value after only two years- and although you haven't said it, I wonder if you've even gotten your value back from all that work?
I'd say to find
C standard (Score:1)
You're marked a troll, but the advice is on the mark IMO. Ironically, Microsoft's code (I'm not talking about their .NET, but for example their Win32 API) is rather backwards compatible. And always take the trouble to steer clear of Microsoft-specific extensions where possible (i.e. managed C++ != C++). You ca
Re:C standard (Score:2)
Really? This program used to compile in G++:
#include <iostream>
int main(int argc, char *argv[]) { cout << "Hello World" << endl; }
And yet, now it doesn't. Why? Namespaces.
You can take 10 year old code, run it through Visual C++, and it runs on Windows XP.
Actually, this is something to attribute to Microsoft. By breaking the C++ standard in so many places f
Re:necessary trolling (Score:2)
No one is saying here that the poster's application is no longer working.
The poster might have other consideration like to take moving to 64-bit.
Re:necessary trolling (Score:2)
Re:necessary trolling (Score:2)
So this question is more analogous to "I'm moving from Gtk 1.2 to Gtk 2.0. What's likely to break?". Try doin
Re:necessary trolling (Score:2)
It's not similar to that at all.
Try doing that without any code changes. Your fancy, schmancy C language doesn't help you at all.
That's not the point. He's been writing this code for two years, and maybe they're just getting to the point where they can do something with it and BAMMO they need to start thinking about where they're going next.
If you're looking for a good analogy it's something like this:
Vendor
Re:necessary trolling (Score:3, Insightful)
I work in embedded systems. I don't care how "standard" C is--it's only the source code that's standard. When we move to a new processor or the compiler upgrades, we spend weeks chasing subtle bugs out of the code. Never mind complex stuff like trying to port our stuff to a new RTOS or trying to integrate thousands+ of lines of purchased source code into our product.
Re:necessary trolling (Score:2)
You do of course realize that those bugs were already there.
Never mind complex stuff like trying to port our stuff to a new RTOS or trying to integrate thousands+ of lines of purchased source code into our product.
I think that's a little different.
You at least know you're porting to a new kernel w
Re:necessary trolling (Score:3, Informative)
As I programmer myself, I realize you're talking about code that's pretty self-contained and algorithmic in nature.
Other coding projects, though, need to interface with hardware and other commercial software (like databases) all of which evolve over time... and if you want to take advantage of any new advancements they might provide then your code will have to evolve as well. Sometimes you don't even have a choice (a data
Re:necessary trolling (Score:3, Insightful)
No, I'm not.
Other coding projects, though, need to interface with hardware and other commercial software (like databases) all of which evolve over time... and if you want to take advantage of any new advancements they might provide then your code will have to evolve as well. Sometimes you don't even have a choice (a database company might drop support entirely for an old package) so updating co
Re:necessary trolling (Score:2)
[/sarcasm]
Re:necessary trolling (Score:2)
Re:necessary trolling (Score:2)
Mostly right. Of the languages you listed, there are some gems:
* perl4 code stills runs in perl5 interpreters. Perl6 promises to run perl5 and perl4 code.
* Lisp too has remained unchanged [incompatibly] for decades.
* Erlang was deliberately designed for language-feature durability
Of course, C++, C#, Java, Python, and PHP
Re:necessary trolling (Score:2)
We're using different definitions. Mid-sized projects take a few months. Large projects are the ones than span years.
The point behind this is that you cannot be using deprecated classes, because if you were, you'd still be targetting
Or to put this another way- the a
But that shouldn't work at all... (Score:5, Funny)
Wait... and you're saying they got something done? That's not how it's supposed to happen!
(cynic)
Re:But that shouldn't work at all... (Score:2)
Article on this topic (Score:2, Informative)
I hope it helps someone...
Donnie
MS lifecycle and support (Score:5, Insightful)
Re:MS lifecycle and support (Score:1)
Enough fanboy crap. Java is good, and so is
Switching to the newer framework without a need for its new features is the result of too much magazine-reading by the PHBs.
Re:MS lifecycle and support (Score:2, Insightful)
Which .NET? Will all .NETs run on Vista? Will .NET run on linux, or will MS decide to litigate MONO and others out of existence? Will MS change license terms again, making it illegal to run .NET on anything but MS licensed systems? Will MS patches and updates applied to MS systems ? Will newer .NETs be able to control previous MSOffice applications and functionality, or will they all have to be "upgraded" as well? ...and on and on.
All of the above questions have on
correction (Score:1)
Repeat to myself
Re:MS lifecycle and support (Score:1)
One would assume the one from Microsoft, since .NET is their name (pieces of .NET, like the C# language and the Common Language Runtime, have been standardized by ECMA).
If you mean, "Will the Mono and Rotor implementations of the ECMA-standardized bits run on Vista?" I'd assume so. And if not, they're open source so go make them work (yes, even Microsoft's Rotor is open source). Now if the question is whether .NET 1.0 or 1.1 will run on Vista, I have no idea
Does this summary fit? (Score:1)
ANSWER: Microsoft's
QUESTION: Will all
ANSWER: Probably not, depending on the version of the Microsoft
QUESTION: Will
ANSWER: Only if Microsoft wants to, but don't worry because you can trust Microsoft.
QUESTION: Will MS change license terms again, making it illegal to
Re:MS lifecycle and support (Score:2)
I paid over $10,000 to get Visual Studio 2002.
I guess Microsoft thinks I'm five times better than you.
Re:MS lifecycle and support (Score:5, Insightful)
YOU DONT NEED THE IDE FOR .NET DEVELOPMENT!
The .NET Framework SDK has always contained all the compilers, build tools, and everything one needs to get started. And there's a complete free software stack of .NET development tools, including Nant, NProf, Ncover, Testdriven.NET, Nunit, SharpDevelop, CruiseControl.NET, Log4Net, Subversion and a dozen others I've missed. I've regularly seen people sticking with emacs and the above tools, for their entire development work.
And guess what, if you need a nice,shiny IDE, MS is giving portions of the IDE too! The Express editions get most of the functionality, except for some enterprise features. The cost of development tools should negligible, in a large-scale organisation atleast. VS.NET 2005 is worth the money, IMHO. Its not a VB6 world anymore, guys. There're legitimate reasons to bash MS, but this is not one of them.
Re:MS lifecycle and support (Score:1, Redundant)
YOU DONT NEED THE IDE FOR
Hello!! You can do all your programming in Notepad or any text editor...Would you do that?? How can they sell those IDE's for outrageous prices?? Why would anyone pay for them? You think they are all dummies?
Re:MS lifecycle and support (Score:2)
No, you pick one of the better editors he suggested. Why on Earth would you do it in Notepad and what's your point?
Re:MS lifecycle and support (Score:2)
No, you pick one of the better editors he suggested. Why on Earth would you do it in Notepad and what's your point?
The point is that VS is the best editor for enterprise/team development. The others are not better, they are inferior in comparison...
Re:MS lifecycle and support (Score:2)
Vendor Lock-in is real and painful. If you use Microsoft's .Net it can be excruciating. The IDE is irrelavant to this topic. His points were that he shells out cash for an ide that is useless in as little as 18 months.
My apps have a litt
Re:MS lifecycle and support (Score:1, Flamebait)
You don't _have_ to migrate. No gun is put to your head. It's not like they are going to make all computers uninstall 1.0 for 2.0. It's backwards compatible. That means, program in 2002 and
Now, had you said "I want to program in WM5!" then you might have a partially valid argument. But you'r sti
Re:MS lifecycle and support (Score:2)
Actually Stroustrup must sue Microsoft for giving C++ a bad name...
Re:MS lifecycle and support (Score:2)
Or just be satisfied with
Re:MS lifecycle and support (Score:2)
Why bother? (If you have a choice) (Score:1)
Slowly - is how we're doing it (Score:2)
All new development is using .NET 2, with APIs using either the old .NET 1 assembly or being updated as necessary. We have a couple of critical APIs that have been branch
Do people ever learn? (Score:4, Insightful)
Yes, Microsoft has some decent tools out there (Visual Studio has come a long way since the first version), but their behavior here has been consistent for the two decades or so that Windows has been out - you will wind up doing some significant porting and testing between versions of their tools, because compatibility between versions is not a priority for them. Selling you upgrades it the priority. Adding value is not a priority - they'll give just enough additional value between versions to make enough people jump, thereby forcing even more people to jump to maintain compatibility with the first set. It's an endless treadmill. If you (or your company) chooses to spend the immense amount of time and money to run on this treadmill, that's perfectly fine with me. I'll just sit over here accomplishing far more per dollar of CapEx and per man-hour.
Run a pilot (Score:2)
On the other hand, if it's job security you're after, you can always blame it on MS while taking your pay cheque for redoing work with which you'll quickly become expert.
The only sensible approach IMHO is to run a pilot migration of a si
Re:Run a pilot (Score:2)
Re:Run a pilot (Score:2)
The reason I'm suggesting the OP looks outside the J2EE/.NET duopoly is that he's been burned once, and may be at the start of a cycle where he'll be burned again in a few years' time. "Fool me once, shame on you; fool me twice, shame on me".
I suggested running a pilot migration to 2.0 so he can ascertain the true costs of jumping from 1.1 to 2.0. If, as others have said, it's not a trivial step, then he'll find out during this migration; if it is
Hilarious (Score:2, Interesting)
He doesn't HAVE to upgrade at all! He's voluntarily decided to upgrade to a new version of an existing product. How is this a negative thing? It could definitely be a bad idea, but I don't see anyone saying that.
It's bad enough that people don't even read linked articles, do people even read the text of the story before posting anymore?
Re:Hilarious (Score:2)
Not only that, but for all the bitching about terrible Ask Slashdot questions, all the answers are answering the question they wished he would have asked instead of the one he actually did ask. Totally unhelpful!
Re:Hilarious (Score:1)
Re:Hilarious (Score:2)
Re:Hilarious (Score:1)
Re:Hilarious (Score:2)
Haha, nice one Bob. While the open source jihadists whine about Microsoft, you're
Test the Performance (Score:2)
The key problem we encountered was performance. A few things performed dramatically more slowly in 2.0 than they did in 1.1. In particular, we had some VB.Net code that was doing some things with late binding that were about 100 times slower than they were in 1.1. We had to track that down using a profiler and rewrite that section to use normal binding instead of late binding.
The second thing that was slower was some aspects of the XML
An On-topic reply. (Score:5, Informative)
Side-by-side installation hasnt been a problem either. Both frameworks can co-exist, with a few tweaks here and there. The language (C#) has gotten a bit nicer. More shortcuts, faster development, and overall superb IDE support(VS.NET 2005). The deprecated features have been done for a reason, and overall the changes make sense. While the performance is a bit better, I dont know if its enough to make a business case. If I can, I would wait a bit more, till a Vista release; especially if I'm doing WinForms apps.
We've been preparing for the 'migration' too. (Score:1)
If you have many (or any) ASP.NET applications, I suggest using the (NEW, in beta) ms-supported "Web Application" plug-in. This works the same way as VS.NET 2003, and will make NO changes to your existing code base - making the migration as simple as just resolving some naming conflicts with the new classes introduced in 2.0. This plug-in is here [scottgu.com]
For us, we actually switched to using a complete code-base
Microsoft (Score:2)
If you have 300 developers, talk to Microsoft. You're dropping a half million a year just for MSDN licenses. They can afford to have a product expert hold your hand for week.
Re:Microsoft (Score:2)
Re:Microsoft (Score:2)
To me, for $300, it makes sense. There's a lot more than a "help menu" as you call it. Unlimited newsgroup support with guaranteed response times, as well as phone support.
Re:Microsoft (Score:2)
MSDN is an excellent way to go.
Re:Microsoft (Score:2)
I was talking about the MSDN developers subscription. It's basically a developer's license to every piece of software MS makes (including all server software and operating systems), plus access to most beta software, plus free upgrades for a year, plus "real-ish" support.
Given the price difference between the two, anyone who purchases a full versio
Look out for IIS and WSE interoperability (Score:2, Interesting)
Response to the trolls (Score:4, Insightful)
First off, it's not like
Second, it's not like Microsoft is the only one coming out with new revisions every few years. This is pretty much the same strategy employed by most software makers, including the open source folks. Some people have brought up Java as this great and wonderful language. I am not a Java expert but I know that Java has gone through several iterations and during that time, many of their libraries and frameworks have changed. Functions have been deprecated. Libraries and their API's have been rewritten. New features have been added. I am not saying that this is a bad thing, but it is strange that people throw Microsoft under the bus, while giving Sun a pass.
I think the migration path from 1.1 to 2.0 is fairly simple from what I understand. There are various tools and wizards to convert over some of the changed libraries. For the most part, though, the core language hasn't changed. It is only the associated libraries. I say for the most part since there have been certain enhancements to the language, like generics (which I think was also added to Java at some point as well, so again there is a double standard here).
I think if one were going to debate that Microsoft has too much software churn, a better example would be the change from VB6 to VB.Net. In that case, there was a much bigger change which very little migration path, other than interoperability and re-writing code. From my point of view, VB6 was totally toss into the trash can there. In contrast, the path from 1.1 to 2.0 really isn't that big of a deal. Microsoft took a lot of flak for the VB6-to-VB.Net debacle, so maybe they learned their lesson.
Re:Response to the trolls (Score:2)
like generics (which I think was also added to Java at some point as well, so again there is a double standard here)
The difference being that you can generally upgrade JVMs without breaking backwards compatability. People started re-writing parts of their Java apps because they *wanted* to. Those who didn't need new language features could still upgrade the JVM for performance enhancements etc without rewriting any code. From what it sounds like, though, the problem is more with the .Net frameworks tha
Re:Response to the trolls (Score:2)
Re:Response to the trolls (Score:1)
Are you saying that having only version 2.0 of the framework installed, I can run apps developed for .Net 1.0, 1.1 and 2.0? Or does it require to have multiple versions of the framework?
And what if I have a 1.0 or 1.1 application and want to take advantage of one new feature in 2.0 in one (and only one) of my classes? Why should I have to convert the entire application?
You might call it bashing, but it is not. B
Re:Response to the trolls (Score:2)
1.1 - 2.0, VB.NET - C#? (Score:1)
We're about to start using VS2005, but we've been using VB.NET for the last 2 years.
I was wondering. Is it also wise to convert the 1.1 code over to C# and THEN move it over to VS2005? Or is this tackling too many problems at the same time?
Y
Re:1.1 - 2.0, VB.NET - C#? (Score:2)
option 3 (Score:1)
Re:option 3 (Score:1)
Re:option 3 (Score:1)
What I did (Score:1, Informative)
Note: I don't use Visual Studio. I develop with Textpad and editors as most porting problems are to do with Visual Studio.
- Create SVN branch.
- Move build scripts from Nant to MSbuild
- Move web forms to new code behind model
- Build and run unit tests. Fix any incompatibility warnings (mainly System.Configuration.ConfiguraionSettings has been moved to ConfigurationM
Divide Well, Hope to Conquer (Score:4, Interesting)
There's a couple of strategies here. Firstly, you can go for low-hanging fruit. Many of the changes in
The other approach is to take a risk-aggresive approach. Take the most critical pieces you have (say, like a framework or a library that a lot of apps and so on use) and port those. Concentrate on that effort, because until those ports are done, you most likely can't move forward anyway. Repeat this approach until are well on the
Given your large code base, I think it is best to get the old code working first, as tempting as it may be to use all the latest features of
But, the key here is to pick those libraries, applications, etc. and work in stages. I don't think a big-bang migration will work very well here.
Re:Microsoft have papers on this (Score:2)
Apparently, slashdot will also tell you to recompile,
and that it all works. Funny, that.
And that does not match my experience so far. One web
project, was in 2003, another dev in my group opened
the project ( as part of our "when do we move" ) up
in 2005, and had many problems. The conversion process
doubled up some of the namespace names
( what was A.B became A.B.A.B ). Which was funny,
because my experience in the past on conversion was that
they mostly worked.
Re:reason? (Score:1)
Re:reason? (Score:1)
"Nice" approach from Microsoft. If you want a bug fixed, upgrade to new upstream version.
Re:reason? (Score:1)
There ARE no bugfixes. That doesn't make them any money.