2009-10-07 15 views
8

Quali sono i pro e i contro quando abbiamo la possibilità di scegliere tra l'accesso diretto al database o l'utilizzo di servizi Web?database ad accesso diretto e servizio web

Quale sarebbe la vostra scelta per un'applicazione critica che dovrebbe essere reattiva (< 0,5 sec) e con una chiamata bassa a questo webservice/DB (NB: il servizio web sarà gestito da un altro team).

risposta

18

L'accesso diretto al database si accoppia strettamente allo schema. Qualsiasi modifica su entrambe le estremità influisce sull'altra. Ma ha le virtù di essere semplice e richiede meno hop di rete.

Un servizio Web significa migliore astrazione e accoppiamento più libero tramite un ulteriore livello di riferimento indiretto. Un servizio Web può fungere da amministratore unico dei dati. Scoprirai andando direttamente contro il database quando è solo la tua app, ma se arrivano altre app e richiedono gli stessi dati aumenterai le possibilità che abbiano bisogno di modifiche allo schema un giorno. Queste modifiche influiranno anche sulla tua app. Il costo è più latente.

Un servizio Web può essere un buon posto per centralizzare l'autorizzazione e la sicurezza. Un database può fare anche questo, quindi forse è un lavaggio.

+3

La prestazione è un'altra considerazione; normalmente sarà molto più veloce accedere direttamente al database – Cocowalla

1

Ovviamente, un accesso diretto al database sarà sempre più rapido in scenari semplici.

Con un servizio Web, si guadagna la flessibilità:

  • plug-in una diversa implementazione,
  • quando diverse applicazioni hanno bisogno di accedere agli stessi dati, rendere responsabile di tali dati, e hanno l'altra accedervi tramite un WebService: non si avranno lag di dati tra i due; e puoi tenere i dati a cui si accede spesso in memoria in quell'applicazione, invece di usare il database per comunicare tra applicazioni ....

Dato il tuo contesto di reattività (con possibilmente un problema con l'altra squadra), io proverò a andare al percorso di accesso diretto al database, a meno che diverse applicazioni non debbano condividere i dati ...

+0

Non potrei dire in entrambi i modi quale sarebbe meglio. Nel contesto dell'app, un accesso al database funzionerebbe sicuramente. Dipenderà da come i servizi benefici potrebbero essere per l'intera azienda. – duffymo

+0

Il problema è che a volte è difficile o impossibile sapere in anticipo quando il db verrà utilizzato da più app. Questo è un altro motivo per cui le stored procedure sono un investimento migliore rispetto alle query parametrizzate che vivono nella sorgente dell'app. –

0

Sia Duffymo che KLE fanno punti validi.

Un'ulteriore considerazione è il grado di accoppiamento con altre squadre.

Quando si lavora con un livello di servizio, il progetto è in genere uno dei molti client; questo spesso significa che devi lavorare con i servizi disponibili o aspettare che la roadmap fornisca le modifiche che potresti aver bisogno. Questo spesso porta a decisioni che vanno bene per l'impresa nel suo insieme, ma non così bene per il tuo progetto.

Problemi correlati