I participate in a project where a development team develops a very long-term infrastructure project to replace the existing 10-year system. By the term "very long" I mean that it must work, be supported and maintained for at least 10 years in the future from the date of release. Taking into account ~ 2 years of development, this means that at this stage we must choose a technology / language / structure in order to last at least 12 years. We have full control over the computers on which the project is running, their operating systems, etc. I was the developer of a 10-year system that will be replaced, and I help the team build the new one correctly.
The application has a very sophisticated user interface. The user interface is dynamically created from the configuration files at startup, each component of the user interface depends on the logic and other components of the user interface that it should receive at run time. The user interface elements themselves are very complex, imagine user sensors, graphs, buttons, etc.
The project has already made two options that I do not judge or try to change:
- This will be a desktop application.
- It will be developed in C #
Now we are at the point of choosing the right structure to make our very flexible user interface system โeasy to developโ, i.e. reduce the number of developer mistakes, relying on a well-established infrastructure already created.
The team reviewed the Microsoft CAB (Composite UI), which is very well suited for its purposes, but the fact that Microsoft discontinued it in 2007 is a huge problem considering the long-term aspects of the project (think about whether it will be revealed in 6 years - who will be provide support? - and I know that we could fix the code in the CAB itself, but this is something we would like to avoid).
One thing that obviously catches your eye relies on Microsoft WPF. This seems to be the "future" of the development of the user interface, but it scares me, thinking about it for a long time. My main problem is that the market will not agree with this, that after 3 years Microsoft will stop it, and that after 6 years I will not be able to get proper support for it.
However, I see no alternative besides writing my own structure. I do not want to disrespect third-party framework developers, but for such a long-term project I can use the products / frameworks / etc from a very well-established provider.
I would appreciate that choosing WPF is the right challenge, given the context above (and if not, the right โcomplex user interface structureโ for such a long-term desktop application project using C #?).
Thank you (and sorry for the long question)