I am working on a new version of the following system:
- A 'main control' service that runs on Windows Server (C#).
Clients on the following systems, that communicate with the above service via Web Sockets:
2a. Windows 7 / Windows 10 (WPF C#)
2b. Android phones (Java)
2c. iOS phones (Objective C / possibly Swift)
2d. Embedded PC running Linux (C++, no GUI).
What I've noticed in the past, is that there is a lot of duplicated logic whenever we would add a new feature. It had to be implemented across all 3 platforms, and it just doesn't seem right. What is the right way of dealing with that situation?
I am not interested in solutions like Xamarin, since we'd like to maintain native look/functionality for each platform. So clearly the GUI layer will have to be coded separately on each platform. I am more concerned with the business/model logic that will inadvertently end up being duplicated on each system.
Of course we can push some of it right to the Server machine, making the clients as thin as possible, but there are still cases where I would like to have a library that I just write/test once, and then simply compile/deploy to each client platform.
Is something like that even possible? Am I missing a better approach?