Click here to Skip to main content
15,891,424 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hello,
I manage a software in a science research lab that needs to be upgraded to a more modern platform. The application controls a number of hardware, collects data mostly in the form of digital images (large multi-dimentional arrays), and displays the images in real time. The application has a GUI written in VB6, and behind the scene uses dlls written in VC++ to do some speedy number crunching. My boss wants me to upgrade the application because vb6 doesn't work well in Windows 7 and other issues. While .net seems to be the natural step up, I'm concerned about the overhead and the potential slowdown on speed. Someone suggested 'Python' for the platform independence, but I am not convinced that I can easily whip up a GUI in Python. I am here to soliciting your ideas and suggestions. Thank you in advance for your input.
Posted
Comments
[no name] 1-Apr-13 11:14am    
Use .NET and you can still use your C++ DLLs. I would not worry about "the overhead and the potential slowdown on speed" until I had an actual problem.

You already have the back end in VC++ Dlls separated from the GUI which is a really good start, keep it that way. If it was me then I would strictly isolate all changes to the GUI only while doing this project. At the end the new GUI or the old should work equaly with the same back end.

Given that you can pick whatever technology gives you the best looking GUI to suite your boss.
I would try some stand alone prototypes using Qt, MFC because of the VC++ skills and legacy you clearly already have and at least one .NET or Java technology, Winforms or Swing probably.

Honestly lay out the technical good and bad of each and the boss will pick the one that looks the coolest anyway. You shouldn't have any issue with performance over VB6 unless you go with WPF or Java where you might unless you're careful. I suspect you'll find Winforms the easiest transition from VB and that the performance is better rather than worse in practice.

Has the boss even considered whether a desktop front end is still appropriate. What about a browser based front end he can use from anywhere?

Good luck with the project, it sounds like fun.
 
Share this answer
 
Comments
nv3 1-Apr-13 11:40am    
Good advice Mattew. I'd go along with that. +5
H.Brydon 2-Apr-13 0:20am    
+5 for both of you from me...
nv3 2-Apr-13 2:15am    
Thank you!
Given the old VB6 frontend and your set of DLLs that were developed with VC++, I would consider going to C# for the frontend. That will not be such a big new learning experience and it will give you a very effective tool to program in a .NET environment. I wouldn't be worried about the performance issues too much. If you are doing 3D image processing in the VC++ library, you will be probably spending most of the CPU time their. The minor losses of efficiency (if any) that C# might have over C++ are probably negligible.

The story would be different if the coupling between your frontend and the image processing functions would be very tight. Under that condition it could make sense to do everything in native C++ and stay away from managed code at all. That will mean: Just pure C++ interfaces in the entire application, just one debugging and error reporting environment. Working with a single language DOES have its benefits for sure. In that case I would look into using a good native GUI library, like Qt. MFC is rather inflexible when it comes to dynamic layout of dialogs, so I would try to stay away from it.

Anyway; sounds like you are headed for an intersting project. Good luck.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900