Il modo migliore per progettare un'interfaccia database [duplicato]

0

Questa è la mia situazione Ho un sito web, client mobile e client desktop.

Possono praticamente fare le stesse operazioni (il sito Web potrebbe essere in grado di fare di più ora ma in futuro potrebbero avere l'esatto set di operazioni)

Le tecnologie variano: per sito web rubino, per desktop c #, per obiettivo mobile c e java

Mi sto chiedendo due soluzioni

1) crea un'API che verrà utilizzata per tutti. sito Web, desktop e mobile. Api è l'unico che può connettersi al database.

2) crea un'API per Dekstop e Mobile. Il sito Web si collegherà direttamente al database

Personalmente mi piace l'approccio 1) perché penso che sia più modulare e penso che sia più coerente. Penso che la rovina sia che potrebbe essere un po 'più difficile da testare sul web e che alcune funzionalità potrebbero essere più difficili da implementare (come oauth). Ma nel complesso penso sia una scelta migliore.

2) è più facile per il programmatore web, ma ovviamente vedo alcuni inconvenienti come possibilmente la duplicazione di codice per la stessa cosa, non potendo essere certo che gli stessi dati saranno dati a tutti i client (perché il codice se diverso) e inoltre perdiamo un po 'di sicurezza con l'accesso diretto al database qui.

Mi chiedo cosa ne pensate voi ragazzi? E anche come fanno le grandi aziende come Facebook a farlo? Hanno uno scenario simile. Immagino perché sono così grandi che potrebbero scegliere una soluzione basata sulla perfomance come 2) ma quanto devi essere grande prima di andare in quella direzione?

    
posta 6lix 26.08.2015 - 22:47
fonte

1 risposta

1

Penso che dipenda dalla complessità dell'interfaccia. Se l'insieme di chiamate che è possibile effettuare rispetto al database sarà significativo, allora qualcosa come un servizio REST di fronte al database avrebbe senso limitare l'implementazione lato server e gli sforzi di supporto. Rallenterà le cose inserendosi in tutti i flussi ma consentirà attività di sicurezza e di gestione delle prestazioni centralizzate. Altrimenti, potresti renderlo specifico per la lingua nell'interesse di tempi di consegna ridotti.

Quindi, la domanda sarebbe quanto siano importanti le prestazioni e la latenza e quanto sia importante ridurre al minimo lo sforzo di sviluppo a breve termine?

    
risposta data 27.08.2015 - 04:03
fonte

Leggi altre domande sui tag