Procedura di caricamento best practice con entità correlate

0

Sto cercando di capire quale sia la migliore pratica con il caricamento dei dati da apis web.

Supponiamo di avere una struttura del modello come di seguito:

class School {
private string name;
private List<Classroom> Rooms;
}

class Classroom {
private string Type;
private School school;
private List<Student> Students;
}

class Student {
private string Name;
private int Age;
private Classroom Room;
}

È consigliabile caricare una singola entità scolastica e includere tutti i dati correlati (scuola + aule + studenti), quindi utilizzare l'entità impostata sul lato client o è una pratica migliore caricare semplicemente le singole entità in base a ciò di cui hai bisogno Ad esempio, vai a scuola quando sono necessarie informazioni scolastiche, ottieni Classroom quando è necessario un corso scolastico.

Riesco a vedere pro e contro per entrambi, ma sono ansioso di sapere se esiste una buona pratica.

    
posta Aeseir 28.11.2017 - 00:19
fonte

2 risposte

3

Carico o pigro Caricamento

Se sai esattamente come vengono utilizzati i dati, puoi facilmente decidere, se il caricamento impaziente (carica tutto in una volta) o il caricamento lento (fai una seconda richiesta se necessario) offre prestazioni medie migliori.

Consenti al consumatore di decidere

Se la tua piattaforma è più generica, quindi non disponi delle informazioni per ottimizzare il recupero / trasporto dei dati, dovresti lasciare la decisione al consumatore dell'API.

Parametri richiesta

È possibile consentire i parametri di richiesta che specificano, quali dati correlati vengono trasmessi:

api/school/:name?with=rooms,rooms.students

GraphQL

Un altro modo è GraphQL , che ti consente di specificare i dati richiesti nel corpo della richiesta.

api/school/:name

e il corpo per recuperare tutto

{
    school {
        name
        rooms {
            type
            students {
                name
                age
            }
        }
    }
}
    
risposta data 28.11.2017 - 03:24
fonte
2

Le migliori pratiche qui dipenderanno interamente da quali sono i tuoi requisiti specifici.

Ad esempio, il tuo software potrebbe funzionare meglio se tutto viene caricato tutto in una volta. Ciò è particolarmente vero se i dati vengono recuperati da un servizio Web, in cui è preferibile recuperare blocchi di informazioni relativamente grandi per resistere al sovraccarico di più chiamate di servizio.

D'altra parte, i dati relativi potrebbero essere utilizzati raramente, il che significa che si sprecheranno una larghezza di banda preziosa e cicli di clock che recuperano dati che vengono quasi mai utilizzati. In tal caso, è meglio posticipare il recupero dei dati correlati finché non è effettivamente necessario.

Lo sviluppo del software è un costante esercizio di compromessi. Di rado c'è un "modo giusto" per fare tutto ciò che si applica a tutte le situazioni possibili.

    
risposta data 28.11.2017 - 00:32
fonte

Leggi altre domande sui tag