Sto lavorando su una nuova versione del seguente sistema:
- Un servizio di "controllo principale" eseguito su Windows Server (C #).
-
Client sui seguenti sistemi, che comunicano con il servizio sopra indicato tramite Web Sockets:
2a. Windows 7 / Windows 10 (WPF C #)
2b. Telefoni Android (Java)
2 quater. Telefoni iOS (Objective C / eventualmente Swift)
2d. PC embedded con Linux (C ++, senza interfaccia grafica).
Quello che ho notato in passato è che c'è molta logica duplicata ogni volta che aggiungeremo una nuova funzionalità. Doveva essere implementato su tutte e 3 le piattaforme, e non sembra giusto. Qual è il modo giusto di affrontare questa situazione?
Non sono interessato a soluzioni come Xamarin, dal momento che vorremmo mantenere l'aspetto / funzionalità nativi per ciascuna piattaforma. Quindi chiaramente lo strato della GUI dovrà essere codificato separatamente su ciascuna piattaforma. Sono più interessato alla logica del business / modello che inavvertitamente finirà per essere duplicato su ciascun sistema.
Ovviamente possiamo spingerne un po 'alla macchina Server, rendendo i client più sottili possibile, ma ci sono ancora casi in cui mi piacerebbe avere una libreria che scrivo / test appena una volta, e poi semplicemente compili / distribuire su ciascuna piattaforma client.
È possibile qualcosa del genere? Mi manca un approccio migliore?