We have a mature Windows desktop application written in C++. The application’s GUI sits on top of a windows DLL that does most of the work for the GUI (it’s kind of the engine). It, too, is written in C++. We are considering transitioning the Windows app to be a web-based app for various reasons.
What I would like to avoid is having to writing the CGI for this web-based app in C++. That is, I would rather have the power of a 4G language like Python or a .NET language for creating the web-based version of this app.
So, the question is: given that I need to use a C++ DLL on the backend to do the work of the app what technology stack would you recommend for sitting between the user’s browser and are C++ dll? We can assume that the web server will be Windows.
Some options:
- Write a COM layer on top of the windows DLL which can then be access via .NET and use ASP.NET for the UI
- Access the export DLL interface directly from .NET and use ASP.NET for the UI.
- Write a custom Python library that wraps the windows DLL so that the rest of the code can be written.
- Write the CGI using C++ and a C++-based MVC framework like Wt
Concerns:
- I would rather not use C++ for the web framework if it can be avoided – I think languages like Python and C# are simply more powerful and efficient in terms of development time.
- I’m concerned that my mixing managed and unmanaged code with one of the .NET solutions I’m asking for lots of little problems that are hard to debug (purely anecdotal evidence for that)
- Same is true for using a Python layer. Anything that’s slightly off the beaten path like that worries me in that I don’t have much evidence one way or the other if this is a viable long term solution.
Sorry there are no good solutions, just less bad ones….
Firstly as you already develop for windows I am assuming that you are used to using the Microsoft development tools, I would not give the same answer for a desktop application that is coming from unix (or Mac).
Some random thoughts and pointers.
(Sorry I don’t know match about Python, however if you don’t already have skills in it I would say stick on the Microsoft stack as you already know the Microsoft debugger etc)
(I think of porting complex applications to the web as a very big pain, it is best to avoid pain when possible however sometimes you are given no option and just have to minimize the pain. If you have never worked on large applications that are in the process (normally many years work) of being ported to the web, you just don’t know what you are letting yourself in for!)