Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Task to Outline Rewrite of Major App to C#
Message
From
20/03/2006 16:18:55
 
General information
Forum:
Visual FoxPro
Category:
Visual FoxPro and .NET
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01105311
Message ID:
01105995
Views:
18
Thank you so much Michael. You were very generous and provided a LOT of information. I was looking for exactly something like this to point me in the right direction. I really appreciate it.


>Tracy we are doing the same thing. First let me say we had no choice either our client base is forcing us to SQL and .NEt stuff. No matter howmuch we talk up Fox and well our current app worked they want us to change.
>
>We have a 15 year old app ( 500K+ lines of code, 100+ tables ) written in VFP and has always been VFP backend and a fat client. We started thinking about this task in the same way you are. We divided it up into evolutions spread over a 3-4 year window. First was move to SQL and keep the Fox front and middle ( 12-18 months ) and draw definite tier boundaries. Second will be to rewrite pieces that can be separate dll's like the report engine\report diplay\import export prices that have separate UI pieces from the main app and grid system that can run without much dependence on that code. The last will be the main app, menus, and grid system since .NET UI stuff works better when working together with a .NEt main app rather than with fox pieces.
>
>Here are the step we came up with:
>
>1. We went over the database design and made sure it was normalized to 3rd. We had a few palces that were not.
>2. Committed to totally data driving the application and restucturing our meta data to move us that way. We figure we were only 50% data driven and moving that way this help us a lot in the abstraction process and cut down on code maintenance.
>3. We took all the code ( logic ) out of our grid classes and controls and moved them to prog files for later conversion to C# classes.
>4. We dropped all .frx style reports ( we had 30 ) and moved all the attributes to meta data and broke our report engine into two pieces. The query engine stayed in fox classes for now ( and was abstracted from one base class engine and 40 odd report sub classes to one base engine and 6-10 report classes ) and the display went to C# ( the actual first piece written in C#, it pick up the generated flat file and some meta data we wrote out to disk and display the report just like our old frx preview and it also had built in exporting feature that allowed us to drop about 5,000 lines of code that we used to have to maintain for exporting report data to different formats and we picked up pdf format ).
>5. The big step was changing our views to CursorAdapters which will easily move to SQL later and revisiting every query to ensure SQL compatibility and abstraction where we could. Example, over the years we had several comboboxes that did queries to load their list. Now it is one abstract process driven by meta data and only one combobox class and the code is not in the combobox class anymore.
>6. Commit to absolute requirements and design documents on specific processes before any coding. As a small shop we used to cut many corners on this item.
>
>We discovered that breaking it in to pieces was our best alternative since we still needed to keep up the current app to meet our committment to clients for 1 to 2 releases a year and generate revenue to fund the switch over. Our clients were pushing for the SQL switch over first so we committed to that first with a Fox middle and front. They seem not to be in such a rush for the.NET pieces as long as we have them in a few years. This also allowed us to have more time to learn .NET and not have to revisit as much shotty code later as we became better C# coders and not have to puch the learning curve.
>
>Good luck. It is a lot of work, but we are having fun and feel less pressure to get it done.
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform