web-dev-qa-db-fra.com

Pourquoi utiliser des services Web au lieu d'un accès direct à une base de données relationnelle pour une application Android?

J'ai cherché sur le Web comment accéder de manière efficace à une base de données centrale à distance et j'ai rencontré des suggestions pour utiliser des services Web à la place un accès direct (par exemple JDBC, etc.) à une base de données. Je me demande la raison de cela et toute autre suggestion .

19
yesildal

L'ajout d'une couche de service Web vous donne la possibilité de rendre votre client plus léger, à la fois en termes de puissance CPU requise et de bande passante utilisée pendant le traitement. Les deux facteurs sont extrêmement importants pour les utilisateurs finaux:

  • L'utilisation de moins de CPU augmente la durée de vie de la batterie,
  • L'utilisation de moins de bande passante réduit les paiements mensuels pour les utilisateurs avec des plans avec compteur

En introduisant une couche d'application Web, vous déplacez la majeure partie du traitement d'un client portable à faible consommation d'énergie, à faible bande passante et à faible mémoire vers un serveur branché, à haute puissance et à large bande passante, qui a plus de mémoire que lui. besoins - un environnement où le traitement et les communications coûtent une fraction de ce qu'ils coûtent à un client.

Mais attendez, il y a aussi quelque chose pour vous: en divisant le système, vous obtenez plus de contrôle sur vos règles métier, la structure de votre base de données et les versions de ce qui existe. Une fois que vous laissez un client mobile se connecter directement à la base de données, votre conception est "mariée" à cette structure de base de données: presque tout changement romprait la compatibilité descendante avec un client qui hésite à mettre à niveau son application.

En revanche, l'ajout d'un service Web entre les deux vous permet de faire évoluer l'interface vers les clients mobiles de manière plus gérable: par exemple, vous pouvez conserver l'ancienne interface en place, en ajouter une nouvelle qui fonctionne "en parallèle" avec elle, puis entièrement restructurez votre base de données sans casser un seul client.

Si vous suivez certains principes de conception assez basiques lors de la conception de votre service Web, vous pouvez également obtenir des avantages significatifs en réutilisant une infrastructure côté serveur mature qui a été mise en place: par exemple, vous pouvez obtenir gratuitement des services de cache et de proxy.

Enfin, cela ouvrira la porte à d'autres développeurs exposant votre application à des plates-formes que vous ne pourriez pas réparer vous-même, jouant finalement à l'avantage de votre entreprise.

25
dasblinkenlight

Il met une couche d'abstraction entre l'application et la base de données. Cela vous donne de nombreux avantages tels que:

  • Limiter l'accès à la base de données aux seules parties dont l'application a besoin. Cela simplifie à la fois le code de l'application et protège votre base de données.
  • Résume le fonctionnement interne de la base de données, donc si vous décidez plus tard de modifier votre schéma, vos requêtes ou même votre base de données entière, le lien vers votre application n'est pas rompu tant que vous maintenez correctement la couche intermédiaire.
  • Il vous permet d'ajouter des fonctionnalités en dehors de la portée d'une base de données. Mise en cache de données assez constantes par exemple. Les règles métier sont une autre partie qui devrait être séparée de la base de données.
13
System Down

Une autre raison de ne pas exposer directement la base de données - le transport. La plupart des bases de données relationnelles, le genre de choses avec lesquelles on discute avec JDBC, ne sont pas conçues pour l'Internet public en général. L'Internet sans fil est une fin horriblement peu fiable dudit Internet public. La gestion des exceptions serait cauchemardesque et vous finiriez probablement par écrire l'inverse de la couche de services Web dans votre application pour éviter de perdre des transactions.

Il existe de nouvelles sortes de bases de données qui parlent HTTP et pourraient convenir à ce genre de chose. Ils ont également tendance à proposer des moyens de placer des sortes de code d'application dans la base de données. Vous voudrez peut-être regarder CouchDb ou RavenDb - les deux sont des dbs de document avec des capacités de cartographie/réduction qui fonctionnent sur json et http, un peu comme de nombreux services Web modernes.

4
Wyatt Barnett