Soy completamente nuevo en WCF. Estaba bastante seguro de que iba a funcionar como los servicios web habituales, y también estoy bastante seguro de que también estaba haciendo eso mal, pero ahora quiero asegurarme de que lo estoy haciendo bien.Uso de WCF en una aplicación ASP.Net y mejores prácticas
Nuestra aplicación ASP.Net se conecta al servicio WCF a través de Internet. Implementé la seguridad básica y el uso de SSL. Está funcionando, pero más lento que cuando teníamos servicios web regulares funcionando. La información que se devuelve es fundamentalmente la misma que con el servicio web regular.
Cuando estaba usando el servicio web normal, cada vez que necesitaba obtener datos, creaba un nuevo objeto de servicio y llamaba a la función para los datos que necesitaba. Esto parecía funcionar bien, pero como imaginaría, no era la mejor manera de hacerlo, especialmente si había miles de usuarios conectados al mismo tiempo. Entonces, cuando me convertí a WCF, decidí mantener abierto un cliente y simplemente usarlo para todos los que se conectaban al sitio. Lo puse en el caché y cuando el caché volcaría el objeto, tuve una función de devolución de llamada para eliminarlo.
Ahora ni siquiera lo pensé hasta después de haber cambiado todo esto, ya que podría plantear un problema para la conexión de varias personas. Si la persona A solicita datos, la persona B tiene que esperar a que finalice antes de que se obtengan sus datos a través del servicio.
Así que lo cambié para ser basado en la sesión. Implementé esto mal o simplemente salió mal, ya que no funcionó bien. El cliente se desconectaría, causaría una falla o simplemente no funcionaría. Lo cambié de nuevo a la memoria caché por ahora y parece estar funcionando bien (excepto lento).
¿Qué es una "mejor práctica" para este escenario? ¿Creé el cliente sobre la marcha cuando es necesario, creo una sesión basada (y entiendo lo que hice mal) o la conservo como está y uso el método de un cliente en caché?
+1. Buena pregunta. – AnthonyWJones