I work on a large old (15+ years) Windows desktop application.
The applcation is a Frankenstein of legacy technologies: (ATL and ADO for db, .NET and COM with some legacy VB6 for business logic, mainly VB6 for UI).
Multiuser is implemented by direct access to the DB.
The application doesn't have good design guidelines. The UI is the worse of all.
We need to migrate to multiplatform quickly with little human resources. It also needs to be progressive (ie, we need to show something working fast). Rewriting is off the table, so the next best thing seems to be split into a fat backend running the existing codebase and writing a lightweight frontend.
The only way I can think about this is generating an abstraction layer to unify all the business logic into a common interface that encapsulates everything, and exposing that through an API.
But I'd like to avoid the pitfalls of just making a headless client mirroring the current UI and exposing that through Asp.Net
So, I'm looking for approaches on dirty migrations of UI applications, that make this work the best as possible. Suggestions would be helpful for both, encapsulation of the current codebase, and re-design of the new UI for cloud over the desktop one.