Estoy buscando una lista de las "diez principales" razones por las que deberíamos conectarnos a bases de datos remotas a través de un servicio web en lugar de conectarnos directamente a la base de datos. Este es un debate interno en este momento y estoy a favor del servicio web, pero estoy perdiendo la discusión. Tengo un conocimiento básico de WCF / servicios web, nadie más lo tiene. Podemos hacer lo que queramos para seguir adelante, pero debemos ceñirnos a lo que elijamos ahora.
Esto es lo que se me ocurrió. ¿Nunca más?
- Los servicios web WCF pueden, si se configuran correctamente, ser más seguros.
- Los cambios en la base de datos solo deben realizarse en el nivel de servicio (archivo de configuración o servicio de recompilación).
- Una vez configurados y alojados, los servicios web son más fáciles de consumir.
fuente
En mi opinión, no debería exponer automáticamente su base de datos como un servicio web. Si resulta que necesita un servicio para exponer sus datos, escriba uno, pero no todo el acceso a la base de datos debe realizarse a través de servicios web.
fuente
La mayoría de estos puntos se refieren a cualquier API formal, no específicamente a los servicios web.
fuente
Escribir un servicio web que simplemente envuelva llamadas a procedimientos almacenados parece ser un enfoque equivocado para diseñar un buen DAL. Lo más probable es que sus procedimientos almacenados sean código heredado que quedó de un sistema cliente-servidor más antiguo, es decir, las reglas comerciales están enterradas en los SP. Si ese es el caso, lo que realmente está intentando es crear un bolso de seda de la oreja de una cerda.
Además, está agregando una capa de protocolo de mensaje SOAP que agrega un impacto de rendimiento a las aplicaciones web que han sido 'forzadas' a salir con este 'cerdo'. Estoy trabajando en un proyecto en este momento en el que se ha indicado a nuestra nueva aplicación MVC-4 que use dicho DAL. Tenemos la carga de tener que cambiar tanto la firma WebMethod como la firma SP cada vez que aparece una nueva historia de usuario que requiere tales cambios; que para nosotros, es cada sprint. Inherente a este enfoque de paso a través hay dos niveles estrechamente acoplados.
fuente
1) El dolor de cabeza de mantener la base de datos se reduce desde el lado de los desarrolladores para que puedan concentrarse solo en el desarrollo.
2) El servicio web admite la comunicación de diferentes plataformas (sistemas operativos como Windows, iOS, Android, etc.) de una manera muy fácil y eficaz. por ejemplo, considere una situación en la que la aplicación de Android y la aplicación de iOS quieren comunicarse con un sitio web que está basado en Java, por lo que para la comunicación de las tres cosas, el servicio web es la mejor solución en lugar de mantener tres bases de datos diferentes.
fuente
En general
Acabo de empezar a usar ASP.NET Web Api y planeo hacer servicios de datos primero.
Recientemente me he centrado en aplicaciones web .NET MVC con el uso del marco de entidad.
Hace poco me encontré en una situación frustrante con una aplicación web MVC que estaba construyendo originalmente basada en procedimientos almacenados de Oracle. La versión original como Oracle 9 o incluso anterior, que presentaba otro problema con Visual Studio 2012, impulsaba un enfoque de fábrica de conexiones más moderno con ensamblajes de tiempo de carga que encontraban los archivos dll correctos para usar en función de las conexiones de configuración web y los nombres de TNS.
Los intentos de conectarse a la base de datos fallaron con mensajes de error "ya no es compatible". Por curiosidad, descargué Oracle 12c e hice algunas conexiones a nivel de aplicación que funcionaron muy bien con mis nombres de TNS y la dll de ensamblaje de carga y pude trabajar con Oracle sin problemas.
Se crearon algunos servicios web que funcionaban con conexiones a la versión anterior de Oracle. Fueron construidos con métodos que se asignaron específicamente a tablas seleccionadas, sin embargo, para mi decepción. Tendría que escribir el mío.
Me dijeron que el grupo que era responsable de mantener las bases de datos de Oracle estaría escribiendo nuevos procedimientos almacenados para reemplazar los más antiguos que yo estaba usando para abstraer la interfaz del cliente y las capas de lógica empresarial.
Entonces, mis primeros pensamientos fueron que todas las solicitudes de datos comunes, como completar la lista desplegable o autocompletar con datos de toda la empresa, se realizarían a través de servicios de datos que llamarían a los procedimientos almacenados de Oracle. ¿Por qué repetir ese proceso en cada aplicación y hacer que cada desarrollador tenga problemas con la configuración y el ensamblaje de versión / carga, problemas de TNS?
entonces....
Soy un desarrollador / analista de aplicaciones y no un DBA, por lo que mi perspectiva es la de la experiencia con la frustración interminable de tener que modificar constantemente las aplicaciones cuando las herramientas de la base de datos evolucionan.
fuente