2009-10-07 5 views
8

Quels sont les avantages et les inconvénients lorsque nous avons le choix entre l'accès direct à la base de données ou l'utilisation de services Web? Quel serait votre choix pour une application critique qui devrait être réactive (< 0,5 sec) et avec un faible appel à cette webservice/DB (NB: le service web sera maintenu par une autre équipe).accès direct à la base de données vs service web

Répondre

18

L'accès direct à la base de données vous relie étroitement au schéma. Tout changement à chaque extrémité affecte l'autre. Mais il a les vertus d'être simple et nécessite un saut réseau de moins. Un service Web signifie une meilleure abstraction et un couplage plus lâche via un niveau supplémentaire d'indirection. Un service Web peut agir en tant que gestionnaire unique des données. Vous vous en tirerez directement avec la base de données lorsqu'il s'agit uniquement de votre application, mais si d'autres applications apparaissent et requièrent les mêmes données, vous augmentez les chances de devoir modifier les schémas un jour. Ces modifications auront également une incidence sur votre application. Le coût est plus de latence.

Un service Web peut être un bon endroit pour centraliser l'autorisation et la sécurité. Une base de données peut le faire aussi, alors c'est peut-être un lavage.

+3

La performance est une autre considération; il sera normalement beaucoup plus rapide d'accéder directement à la base de données – Cocowalla

1

De toute évidence, un accès direct à la base de données sera toujours plus rapide dans des scénarios simples.

Avec un WebService, vous gagnez la flexibilité:

  • plug-in une implémentation différente,
  • lorsque plusieurs applications ont besoin d'accéder aux mêmes données, faire un responsable de ces données, et ont l'autre y accéder via un WebService: vous n'aurez aucun décalage de données entre les deux; et vous pouvez garder les données fréquemment consultées en mémoire dans cette application, au lieu d'utiliser la base de données pour communiquer entre les applications ....

Compte tenu de votre contexte de réactivité (avec éventuellement un problème avec l'autre équipe), je essayerait aller la route d'accès direct à la base de données, sauf si plusieurs applications ont besoin de partager les données ...

+0

Je ne pouvais pas dire de toute façon ce qui serait mieux. Dans le contexte de votre application, un accès à la base de données fonctionnerait certainement. Cela dépend de la façon dont les services pourraient être bénéfiques pour l'ensemble de votre entreprise. – duffymo

+0

Le problème avec ceci est qu'il est parfois difficile ou impossible de savoir à l'avance quand votre db sera utilisé par plusieurs applications. C'est encore une autre raison pour laquelle les procédures stockées constituent un meilleur investissement que les requêtes paramétrées qui résident dans la source de l'application. –

0

Les deux Duffymo et KLE font des points valides.

Une considération supplémentaire est le degré de couplage avec d'autres équipes. Lorsque vous travaillez avec une couche de service, votre projet est généralement l'un des nombreux clients; Cela signifie souvent que vous devez travailler avec les services disponibles ou attendre que la feuille de route vous fournisse les modifications dont vous pourriez avoir besoin. Cela conduit souvent à des décisions qui sont bonnes pour l'entreprise dans son ensemble, mais pas si bonnes pour votre projet.

Questions connexes