Pregunta

Tengo un cliente fat .NET Winform Click-Once-deployed que habla con tres bases de datos, 2 bases de datos de SQL Server y una de Oracle.

La primera base de datos de SQL Server, la llamaré Master. Quería agregar más tablas y columnas a la base de datos maestra, pero me dijeron que no me darían derechos para hacerlo, que no era negociable. Entonces, decidí agregar una nueva base de datos de SQL Server, que llamaré la base de datos de Extensiones para almacenar información adicional que me gustaría colocar en el Maestro.

Como no tenía derechos para colocar la base de datos de Extensión en el mismo servidor que el Maestro, creé la Extensión db en otro servidor y creé un enlace db desde el servidor de la base de datos de Extensión al servidor de la base de datos del Maestro. Esto me permitió realizar consultas que abarcaban las dos bases de datos. También tenía una tercera base de datos, una Oracle, a la que ocasionalmente me conectaba.

Debido a que pensé que la conexión a la base de datos de Oracle requiere la instalación de controladores de Oracle que probablemente no estén en la PC del usuario final, decidí que el cliente WinForm llamara a un servicio web y el servicio web devolvería los resultados. En aras de la coherencia y porque mi instinto me dijo que las operaciones de acceso a la base de datos deberían realizarse desde un solo lugar, tomé el mismo enfoque cuando el cliente gordo necesitaba hablar con las bases de datos de SQL Server, es decir, pasaron por un servicio web.

Ahora me pregunto si estoy teniendo un gran impacto en el rendimiento al tener que llamar primero al servidor web y luego hacer que el servidor web llame a la base de datos en lugar de abrir una conexión en la PC del usuario en el cliente pesado y conectar directamente a las bases de datos de SQL Server. Tenga en cuenta que la aplicación a la que me refiero es una utilidad no oficial que necesita acceso a estas tres bases de datos de producción pero que no está autorizada a ejecutarse en producción, por lo que sospecho que las tuberías normales de alta velocidad entre mi servidor web de desarrollo y la base de datos de producción no aplique aquí.

Para obtener mejores resultados, ¿mi aplicación Winform debería establecer una conexión directamente con las bases de datos de SQL Server? ¿Cuáles son las compensaciones?

¿Todavía es cierto hoy que se necesitan controladores adicionales para conectarse a una base de datos Oracle o todo eso está en el marco .NET ahora y podría conectarme directamente incluso a la base de datos Oracle, si quisiera?

Además, descubrí que usar el servidor de enlace es más lento que crear dos conexiones db separadas y agrupar los datos. Mis mejores resultados llegaron cuando inicié dos consultas de sincronización a y luego combiné los datos juntos como si fueran devueltos por una consulta usando un enlace db. Sin embargo, esto conduce a problemas de mantenimiento y me llevó a lamentar este enfoque cuando necesitaba modificar las uniones SQL do a través de bases de datos.

¿Fue útil?

Solución

He estado desarrollando aplicaciones empresariales durante un par de años y eso me ha hecho pensar que el nivel medio (servicios web en su caso) siempre tiene sentido y conectarse directamente a una base de datos desde una interfaz de usuario siempre es un NO para mi. No creo que hayas tomado una decisión equivocada. A la larga, tener un nivel medio tiene mucho sentido. También tenga en cuenta que el servicio web que ha creado puede ser utilizado por diferentes aplicaciones.

Otros consejos

No conozco sus requisitos de rendimiento, pero un servicio web wcf es rápido. No veo nada malo en tener un nivel medio (su servicio web) para acceder a la base de datos. También es muy seguro.

Creo que si ha configurado el servidor Oracle como un servidor vinculado en su servidor SQL, no necesita controladores Oracle separados. Simplemente puede usar su servidor SQL como fuente de datos.

Intente crear procedimientos almacenados para obtener un resultado más rápido. Si usa SQL Management Studio, puede verificar el plan de ejecución para optimizar sus procedimientos almacenados (configurar índices).

No creo que se necesiten servicios web en este escenario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top