The following A Visual Studio tool eliminating the need to rewrite for web and mobile post was published on Visual WebGui Blog
We have already covered the BYOD requirements that an application developer is faced with, in an earlier blog entry (How to Bring Your Own Device (BYOD) to a .NET application). In that entry we emphasized the fact that application developers will need to prepare their applications for serving multiple types of devices on multiple platforms, ranging from the smallest mobile devices up to and beyond the largest desktop devices.
The experts prediction is that in the near future we will see that the majority of all applications developed, will need to be able to service these multiple platforms and devices in one way or the other, in order to survive.
Where does that leave our legacy single-platform targeted desktop applications, in which we have even invested decades of manpower?
We could build a User Interface front-end for those legacy applications, still running the legacy application as a back-end. That does in some cases require considerable effort, and it doesn't change the fact that the back-end is still running the legacy, and potentially obsoleted technology, code. On top of that, we will have two tiers to manage, the back-end and the new front-end.
We could rewrite or convert the legacy application for the new technology. For that there are multiple code conversion tools out there on the market that will assist you and make your conversion process a bit easier than to do it all "by hand". All the current tools in this category have one thing in common though, they do code conversion for you, and some of them even pretty well. You will still need to rewrite or reconstruct the parts of code where there is no corresponding library on the target platform.
We could migrate the legacy application to the new technology using any of the migration solutions available. The currently available solution base their migration on a fixed set of black-box built-in rules with no (or very limited) ability to adapt to your special migration needs. In many cases this will only help with the migration of a portion of your code, still requiring rewriting or reconstruction of considerable percentage of your code.
Taking on such a conversion or migration task means that you will use the code conversion/migration tool of your choice to convert/migrate your code. You will most likely have huge sections of code that need to be rewritten and/or reconstructed because there is no direct correspondence between the libraries used on the legacy application and the ones on your new platform. As soon as you start the conversion process, you will be converting the legacy application version that is current at that time, which can present major additional efforts in both management and coding if you need to continue maintaining the legacy application after you have started the conversion process.
What you really need here is a conversion tool that "knows" more about your legacy source application platform and the target platform and "knows" how to "map" between the two whenever possible. In addition, you often may need to continue development on the legacy application while you are converting/migrating. What you need is to lift that requirement and not freeze the development of the legacy application.
Based on these needs, Gizmox's built its solution and called the action transposition rather than migration or conversion. The Transposition studio is a rule based migration and modernization solution. It comes with built-in rules that will automatically handle about 95% of the conversion right out of the box. In some cases it will be able to migrate all your code. In other cases there will be portions that you need to work on yourself, but the entire work is done within the Transposition studio which is integrated into Visual Studio and offers you wizards and guiding tools to minimize risk and required resources.
What distinguishes the Transposition from other migration solutions are mainly three things:
First, it's migration rules are fully open and adjustable so you can change the default migration at will and thereby gradually adapting it to your own specific needs. It uses a very powerful pattern matching engine along with equally powerful template engine that enables you to make very advanced and complex conversions on small and large code segments, all by defining a set of rules and templates within the Transposition studio itself. The Transposition Studio integrates directly into the Visual Studio development environment and you have the legacy source code right at your fingertips and also allows you to override the defined rules by directly customizing parts of the code according to your needs. The rules and templates are stored in user definable libraries, where you can build multiple sets of related rules, which can then be used for, or shared with, other migration projects.
Second, there is no need to freeze development on the legacy source application, so you can continue developing your old application, while you are transposing. Using traditional migration/conversion procedures, you do a one time migration/conversion of the code, and then you start reconstructing/rewriting the parts of the outcome where necessary. This is completely different in Gizmox's Transposition studio. The majority of the required work is spent on defining migration rules and templates within the Transposition studio itself and then you simply re-run the transposition (migration) process to produce a new set of target code. You re-run the transposition as often as you need/like and it is only at the last stage, when you have migrated everything that can be migrated, that you start working directly on the target platform code.
Third, one of the target platform options is a cloud enabled and mobile enabled ASP.NET application with HTML5 frond end (based on the Visual WebGui framework) which will fulfill the BYOD requirement of modern applications perfectly.
I invite you to download and try the new Transposition Studio from Gizmox on a demo application.