Perché utilizzare i servizi Web invece dell'accesso diretto a un database relazionale per un'app Android?

17

Ho cercato sul Web come accedere in modo efficiente a un database centrale in una posizione remota e ho incontrato suggerimenti per utilizzare i servizi Web invece dell'accesso diretto (ovvero JDBC, ecc.) a un database. Mi chiedo il motivo di ciò e qualsiasi altro suggerimento.

    
posta yesildal 18.10.2012 - 22:09
fonte

3 risposte

24

L'aggiunta di un livello di servizio Web ti dà l'opportunità di rendere il tuo client più leggero, sia in termini di potenza della CPU richiesta che della larghezza di banda utilizzata durante l'elaborazione. Entrambi i fattori sono estremamente importanti per gli utenti finali:

  • L'utilizzo di meno CPU aumenta la durata della batteria,
  • L'utilizzo di una larghezza di banda ridotta riduce i pagamenti mensili per gli utenti con piani a consumo

Introducendo un livello di applicazione Web, la maggior parte dell'elaborazione viene trasferita da un dispositivo mobile a bassa potenza, a bassa larghezza di banda, a bassa memoria, a un server con una larghezza di banda elevata e ad alta potenza, che ha più memoria di cui ha bisogno - un ambiente in cui l'elaborazione e le comunicazioni costano una frazione di quello che costano su un client.

Ma aspetta, c'è qualcosa anche per te: suddividendo il sistema ottieni più controllo sulle tue regole aziendali, sulla struttura del tuo database e sulle versioni di ciò che è là fuori. Una volta che un client mobile si connette direttamente al database, il tuo progetto è "sposato" con quella struttura del database: quasi tutte le modifiche interrompono la compatibilità con un client che potrebbe essere riluttante ad aggiornare la sua app.

Al contrario, l'aggiunta di un servizio web intermedio consente di evolvere l'interfaccia verso i client mobili in modi più gestibili: ad esempio, è possibile mantenere la vecchia interfaccia in atto, aggiungerne una nuova che funziona "in parallelo" con essa, e poi ristrutturare completamente il tuo database senza rompere un singolo client.

Se segui alcuni principi di progettazione piuttosto semplici durante la progettazione del tuo servizio web, potresti anche ottenere vantaggi significativi riutilizzando l'infrastruttura matura sul lato server che è stata implementata: ad esempio, puoi ottenere gratuitamente i servizi cache e proxy.

Infine, questo aprirà la porta ad altri sviluppatori che espongono la tua applicazione a piattaforme che non potresti servirti da te, in ultima analisi giocando a vantaggio della tua azienda.

    
risposta data 18.10.2012 - 22:24
fonte
13

Mette un livello di astrazione tra l'app e il DB. Questo ti dà molti vantaggi come:

  • Limitare l'accesso al DB solo alle parti di cui ha bisogno l'app. Questo semplifica il codice dell'app e mantiene sicuro il tuo DB.
  • Mostra il funzionamento interno del DB, quindi se in seguito hai deciso di modificare lo schema, le query o anche l'intero database, il link alla tua app non viene interrotto se si mantiene correttamente il livello intermedio.
  • Ti consente di aggiungere funzionalità al di fuori dell'ambito di un DB. Memorizzazione nella cache dei dati che è abbastanza costante, per esempio. Le regole aziendali sono un'altra parte che dovrebbe essere separata dal DB.
risposta data 18.10.2012 - 22:13
fonte
4

Un altro motivo per non esporre direttamente il DB: il trasporto. La maggior parte dei database relazionali, il tipo di cose con cui si parla con JDBC, non sono progettati per l'Internet pubblica in generale. La connessione Internet wireless è una fine orribilmente inaffidabile di detta Internet pubblica. La gestione delle eccezioni sarebbe da incubo e probabilmente finirebbe a scrivere il retro del livello dei servizi web all'interno della tua app per evitare di perdere transazioni.

Ci sono alcuni nuovi tipi di database che parlano HTTP e potrebbero essere adatti a questo genere di cose. Inoltre, tendono a presentare modi per inserire il codice dell'applicazione nel database. Potresti voler guardare CouchDb o RavenDb - entrambi sono documenti dbs con mappe / riduci capacità che funzionano su json e http, proprio come molti servizi web moderni.

    
risposta data 18.10.2012 - 23:54
fonte

Leggi altre domande sui tag