Slashdot Mirror


A .Net 2.0 Migration Strategy?

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?"

18 of 164 comments (clear)

  1. Test test test by Xtravar · · Score: 4, Insightful

    At work we're currently in the midst of migrating our app to .net 2.0. As trivial as it should have been, a *lot* went wrong - a lot of functionality is different, and it's not even documented. It may compile, and it may run, but not for long.

    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 .net 2.0 and enhancing the product.

    --
    Buckle your ROFL belt, we're in for some LOLs.
  2. Migration by panic911 · · Score: 5, Informative

    I do have experience migrating several smaller .net 1.1 apps to 2.0, but nothing even close to this scale. I will give you as much information from my experiences as possible, and hopefully it'll be of some use to you.

    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?Fa milyID=7cecd652-fc04-4ef8-a28a-25c5006677d8&Displa yLang=en

    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.

  3. necessary trolling by mrsbrisby · · Score: 2, Insightful

    I hate to say it, but you get what you deserve!

    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 out how you can make sure you won't do this again in another two years. Start migrating to something else- anything else.

    1. Re:necessary trolling by iguana · · Score: 2, Insightful

      No matter the technology, porting to a new platform is a chunk of work. Even in C.

      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.

    2. Re:necessary trolling by slashdotnickname · · Score: 2, Informative

      I have C code both in production and development that's over 10 years old at this point

      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 database company might drop support entirely for an old package) so updating code is part of the job.

      Take graphics, for example... programmable shaders were practically unheard of 10 years ago, but they dramatically speed up some type of graphics applications. I've recently "dusted" some great opengl code I wrote in college. It still works, but I upgraded it to use some new 2.0 features and it's much faster now

    3. Re:necessary trolling by mrsbrisby · · Score: 2, Insightful

      As I programmer myself, I realize you're talking about code that's pretty self-contained and algorithmic in nature.

      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 code is part of the job.

      I have no difficulty interfacing with hardware or commercial software in C. I have no problem _writing database servers_ in C.

      And not to put to fine a point on it, but if your database company dropped support for something your business depended on, you made a horrible mistake in picking that database company.

      Yes, upgrading is wrong. If your vendor makes you upgrade, it's because THEY made a mistake by shipping buggy code, or YOU made a mistake by picking them. Whether the upgrade is better or worse than the previous version is for ME, the user, or the developer to decide, and not my vendor.

      In any event, you missed my point: C# and .NET is an immature moving target. A company or an individual that puts so much of themselves into such a beast gets what they deserve when Microsoft says "nononono, we didn't mean that, here's what we REALLY meant. just in time for people to start deploying" and deprecates all your hard work.

      I am not saying that there is never a place for C# or .NET or C++ or anything even remotely similar to that. I'm saying that if you have to build out a bunch of technologies that are supposed to last, and "ah" suprise- what's to stop Microsoft from doing this again in two years?

      Why not just avoid the whole mess?

  4. But that shouldn't work at all... by Shag · · Score: 4, Funny
    an IT department of over 300 people and 2 years of development


    Wait... and you're saying they got something done? That's not how it's supposed to happen!


    (cynic)

    --
    Village idiot in some extremely smart villages.
  5. Article on this topic by soccerdad · · Score: 2, Informative

    Not to plug my own work, but I recently posted an article that touches some on this topic. You can find it here: http://www.blognet.info/weblogs/entry.php?u=adhale jr&e_id=1560.

    I hope it helps someone...

    Donnie

  6. MS lifecycle and support by $exyNerdie · · Score: 4, Insightful

    That's what you get for using Microsoft app platform. By the time you will move everything to .Net framework 2.0, they will have 3.0 released and you will have to go through this all over again. When I paid over $2000 to get Visual Studio 2002, little did I know that it only supported .net Framework 1.0. When v1.1 came out, Microsoft said you have to buy Visual Studio 2003. Now that v2.0 is out, Miscosoft says you have to buy Visual Studio 2005. Your VS2002 or 2003 won't take .net framework 2.0 and they don't give you a tool/patch to make it work. Just keep buying and paying $$'s...

    1. Re:MS lifecycle and support by popeyethesailor · · Score: 4, Insightful
      Another retarded slashdot comment/moderation. Newsflash for you:

      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.

    2. Re:MS lifecycle and support by pallmall1 · · Score: 2, Insightful
      Java is good, and so is .NET.
      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 one thing in common. All the answers come from Microsoft. All decisions are made by Microsoft, and not by the developer.
      --
      3 things about computers: they're alive, they're self-aware, and they hate your guts.
  7. Do people ever learn? by ErikTheRed · · Score: 3, Insightful

    One of the major potential benefits of using class frameworks and object-oriented programming is to free code from heavy dependencies on underlying infrastructure through abstraction. And yes, I know it's not mandatory or anything, but the potential is staring you in the face and so it's silly not to take advantage of it. With .NET (and MFC, etc before it), Microsoft can't do too good of a job of this because to do so would take you off the Windows / Office / Servers / Visual Studio upgrade treadmill, from which they derive their income. There are plenty of libraries and frameworks out there that will allow you to build for Win9x (still!), NT/XP/Vista/2Kx/.net, OSX, Linux, etc. that offer exceptional stability between versions.

    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.

    --

    Help save the critically endangered Blue Iguana
  8. Hilarious by JanusFury · · Score: 2, Interesting

    Half the comments so far are advising the guy to ditch .NET ASAP so that he doesn't have to upgrade again.

    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?

    --
    using namespace slashdot;
    troll::post();
  9. An On-topic reply. by popeyethesailor · · Score: 4, Informative
    Well, its not that hard. What broke a lot of things for us was the new Website template introduced in the ASP.NET 2.0 betas. To put it short, they changed the entire deployment model, and this pissed off a number of people. MS did a u-turn, and launched this. This made the migration work flawlessly, and you also get all the benefits of ASP.NEt 2.0 without code changes :) Read Scott Guthrie's blog frequently; there's good stuff there.

    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.

  10. Look out for IIS and WSE interoperability by lateralus_1024 · · Score: 2, Interesting

    We are in the process of making the change from .Net 1.1 to 2.0, mostly due to a decision to migrate to Visual Studio 2005 Team. Thus far, the only issues we've run into is backwards compatibility with WSE2.0. We had to migrate to Web Services Enhancements 3.0 due to issues with IIS. Aside from that, we haven't had many issues other than a few test tools (AppSight)not yet compatible with v2.0.

    --
    If you think /. comments are bad, check out Digg.
  11. Response to the trolls by humblecoder · · Score: 3, Insightful

    I see a lot of people saying things along the lines of "thats what you get for sticking with Microsoft". I think this is a somewhat unfair statement.

    First off, it's not like .Net 2.0 makes 1.1 obsolete. I know that programmers are attracted to all the "new and shiny stuff" like lemmings to a cliff, but if logically speaking, unless there is a true BUSINESS REASON for porting an application, why not just leave it where it is. It is not like Microsoft is suddenly going to pull the plug on 1.1. It'll still work just fine and dandy. In fact, you can run a 2.0 and a 1.1 application pretty much side-by-side, so there really isn't any issues here.

    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.

  12. Re:You *ARE* trolling by marcovje · · Score: 2, 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.

  13. Divide Well, Hope to Conquer by ndykman · · Score: 3, Interesting

    One thing I haven't seen discussed here is taking a strategy on which parts to move. This isn't "do it all at once" kind of situation. .Net 1.1 is still there, works, and having .Net 2.0 doesn't break that.

    There's a couple of strategies here. Firstly, you can go for low-hanging fruit. Many of the changes in .Net 2.0 are in things that use ASP, ADO, and so on. So, if you have core frameworks that are based on the core libraries, they probably can be very quickly ported to the new language. The optimum case is a recompile, retest and it's done. So, you can pick the stuff you think will mostly easily move to .Net 2.0, and port that.

    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 .Net 2.0 road. For a really hard-core approach, pick both most critical and hardest to do first.

    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 .Net 2.0. For example, you really may want to use those spiffy Web Part APIs on your portal, but get your old stuff running first.

    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.