I guess the goal of separating UI and business logic goes way back. I found a Martin Fowler article, from nearly 20 years ago, which is pretty clear about the benefits of the separation: https://www.martinfowler.com/ieeeSoftware/separation.pdf
I'm undertaking a development where I believe the domain layer I develop will likely live a lot longer than the interface I create, so I'd like to design the domain in such a way that a future UI developer can easily "plug into it".
I have a couple of important constraints:
- The UI never needs to be used outside our local network.
- We are a "Microsoft shop" i.e. the technology used by developers in our company is very much focused on Microsoft technology. This is unlikely to change in the medium term.
Bearing in mind the constraints what is the simplest approach available to me, use Microsoft projects and solutions, to achieve this separation?
Some extra information: I'll likely implement the UI using WPF or WinForms. Future implementations may use ASP web form, or whatever MS are offering for web development. The application will have a couple of smallish (400 row) datagridviews that need updating every few seconds - I'm unsure if this makes it compute or data heavy.