Which platform to choose to migrate the legacy application ? Which would be the best architecture solution and why ?
Legacy Application......never it just needs to evolve.
Platform - I take it here you refer to mainframe, Windows, UNIX, Linux etc........
A lot here depends on your market, your product and how quickly you want to get to market.
I can give you an example of what we did :
Product was green screen, top down code. Windows and UNIX
Introduced client server and dialog system. Windows and UNIX
The introduction of the dialog system made us structure each program with UI loop and the top of the program and business logic underneath.
Around the year 2000 we could replace the UI loop with an XML parser, business logic remained the same, the return values where wrapped in XML
So now we had encapsulated business logic that became extendable without changing the linkage sections.
So each component basically passed in XML and returned XML.
Then we created a generic interface that could be wrapped in a Web Service or a WCF technology and you end up with a service type architecture.
If you think about Microsoft Azure or the Amazon equivalent we're already there.
Concentrating using a Windows platform allows you to perhaps get to market quicker, you can have a hybrid of C#, COBOL leveraging of the .NET Framework. A one line in COBOL to do base 64 encoding or encryption because I can call into the .NET Framework makes life easier.
That my story.......hope it gives you pause for thought.
From a product perspective if you are migrating from an IBM mainframe and use CICS, JCL, IMS, Assembler, etc. then the product you should look at is Enterprise Developer. If you are migrating from a non-IBM mainframe platform and wish to modernize your existing code to run on a distributed platform such as Windows, Linux or Unix. then you should look at the Visual COBOL product.
Visual COBOL has a couple of product flavors.
Visual COBOL for Visual Studio, runs under Windows. Used for creating native or .NET managed code applications.
Visual COBOL for Eclipse: runs under Windows or Linux. Used for creating native Windows or Linux code or Java byte code applications.
Development Hub: runs under Linux/Unix systems. Used for creating native Linux/Unix code or Java byte code applications. Used in conjunction with Visual COBOL Eclipse for doing Remote development from Eclipse IDE on workstation to backend Linux/Unix system.
If you want to move a Cobol/Linux application to Visual COBOL, you wan to maintain the data files on Linux and in the near future you want to add a new GUI to it, in your opinion, what is the best way to go?
A) Maintain the files in the Linux server, but use Visual COBOL for Visual Studio and run the new Cobol apps on Windows connected to the data files on Linux (please explain how to do that)
B) Use Visual COBOL for Eclipse and run all on the Linux box and use java for the new GUI on the Cobol system