Respuestas:
Agregar una capa de servicio web le brinda la oportunidad de hacer que su cliente sea más liviano, tanto en términos de la potencia de CPU requerida como del ancho de banda utilizado durante el procesamiento. Ambos factores son extremadamente importantes para los usuarios finales:
Al introducir una capa de aplicación web, mueve la mayor parte del procesamiento de un cliente móvil portátil de baja potencia, bajo ancho de banda y poca memoria a un servidor conectado, de alta potencia y gran ancho de banda que tiene más memoria de la que posee. necesidades: un entorno en el que el procesamiento y las comunicaciones cuestan una fracción de lo que cuestan a un cliente.
Pero espere, también hay algo para usted: al dividir el sistema obtiene más control sobre las reglas de su negocio, la estructura de su base de datos y las versiones de lo que hay ahí fuera. Una vez que deja que un cliente móvil se conecte directamente a la base de datos, su diseño está "casado" con esa estructura de base de datos: casi cualquier cambio rompería la compatibilidad con un cliente que puede ser reacio a actualizar su aplicación.
Por el contrario, agregar un servicio web intermedio le permite evolucionar la interfaz para clientes móviles de maneras más manejables: por ejemplo, podría mantener la interfaz anterior en su lugar, agregar una nueva que funcione "en paralelo" con ella y luego completamente reestructurar su base de datos sin romper un solo cliente.
Si sigue algunos principios de diseño bastante básicos mientras diseña su servicio web, también podría obtener beneficios significativos al reutilizar la infraestructura madura del lado del servidor que se ha implementado: por ejemplo, puede obtener servicios de caché y proxy de forma gratuita.
Finalmente, esto abrirá la puerta a otros desarrolladores que expongan su aplicación a plataformas a las que no podría prestar servicio, en última instancia, jugando en beneficio de su empresa.
Pone una capa de abstracción entre la aplicación y la base de datos. Esto le brinda muchas ventajas, tales como:
Otra razón para no exponer el DB directamente: el transporte. La mayoría de las bases de datos relacionales, el tipo de cosas con las que uno habla con JDBC, no están diseñadas para la Internet pública en general. Internet inalámbrico es un final terriblemente poco confiable de dicho internet público. El manejo de excepciones sería una pesadilla y probablemente terminaría escribiendo el reverso de la capa de servicios web dentro de su aplicación para evitar perder transacciones.
Hay algunos tipos más nuevos de bases de datos que hablan HTTP y podrían ser adecuados para este tipo de cosas. También tienden a presentar formas de poner código de aplicación en la base de datos. Es posible que desee ver CouchDb o RavenDb, ambos son dbs de documentos con capacidades de mapa / reducción que funcionan sobre json y http, al igual que muchos servicios web modernos.