Architettura per condividere la logica tra applicazioni MPA e SPA

0

Quale è secondo te la buona pratica per gestire il caso in cui voglio avere una logica riutilizzabile e condivisa che raccolga e restituisca i miei dati dal database?

Ad esempio, ho un'applicazione multi pagina e un giorno decido di creare un'applicazione per pagina singola. Non voglio riscrivere molto.

Questo fa sorgere la domanda: come devo affrontare questo problema?

Caso 1

  • Entrambi i tipi di applicazioni parlano direttamente alla WebAPI esposta che a sua volta parla con una classe (come un repository) che effettua chiamate al database. E poi nel caso di SPA che restituisce il JSON.
  • Esiste una DLL con la logica e solo il progetto WebAPI utilizza questa DLL, il che probabilmente significa che ci sono chiamate HTTP interne all'API in caso di applicazioni Multi Page ed è il server che effettua queste richieste.
  • L'accesso al database non è diretto, passa attraverso il servizio che espone l'API, può essere ospitato sullo stesso server.

Non sarebbe un approccio più costoso di quello mostrato nella seconda immagine qui sotto? (a causa delle chiamate HTTP invece di parlare direttamente al database)

Caso2

  • L'applicazionemultipaginanonsanulladiWebAPIespostoadaltriclient(desktop,mobile,appwebasingolapagina).Laclasserepository(logica)vieneinvececondivisaconicontrollerWebAPIeicontrollerclassicicherestituisconoViewanzichédati.

  • EsisteunaDLLconlalogicaeentrambiiprogettidipendonodaquestaDLL.SignificanessunarichiestaHTTPinternaincasodiMPA-menocostoso?

  • Accessodirettoaldatabase

Quale approccio dovrei scegliere e perché? Il primo approccio è più costoso dell'altro a causa delle richieste HTTP interne?

    
posta Konrad 23.02.2018 - 18:06
fonte

1 risposta

0

Tratterei entrambe le applicazioni, SPA (lato client) e Multi-page (lato server) come applicazioni client standalone e andrei quindi alla soluzione Case 1.

Dai tuoi commenti vedo che l'applicazione multi-pagina è in esecuzione sul lato server e sta offrendo contenuti a qualcuno, in modo da renderlo un'applicazione client. Attualmente risiede su questo server ma forse in futuro potrebbe essere spostato in un'altra posizione da cui le chiamate al database non sarebbero possibili, una WebAPI "middleware" sarebbe utile allora.

    
risposta data 25.02.2018 - 18:11
fonte

Leggi altre domande sui tag