Il miglior approccio per evitare la duplicazione del codice pensato per funzionare su dispositivi Windows / iOS / Android?

2

Sto lavorando su una nuova versione del seguente sistema:

  1. Un servizio di "controllo principale" eseguito su Windows Server (C #).
  2. 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?

    
posta Eternal21 31.01.2016 - 02:45
fonte

1 risposta

2

Puoi spostare il codice client comune in librerie C / C ++ come piattaforma "minimo comune denominatore". Strumenti come SWIG possono essere utilizzati per automatizzare il bridging.

In alternativa, puoi incorporare un interprete comune in ogni client per una lingua disponibile su tutte le piattaforme (ad es. Python, Lua, ecc.) e inserire il tuo codice comune.

(Ovviamente non si escludono a vicenda - puoi utilizzare entrambi i metodi.)

    
risposta data 31.01.2016 - 15:20
fonte

Leggi altre domande sui tag