Windows Communication Foundation
AGENDAConceptos FundamentalesPreguntasInformación de Contacto
CONCEPTOS FUNDAMENTALESOperacionesGestión de InstanciasTransacciones
OPERACIONESUna operación de servicio es un procedimiento definido en el código de un servicio que implementa la funcionalidad de una operación
Existen 3 modos de comunicación entre el cliente y el servicio son:Simplex: One WayRequest Replay Dúplex (Callback)ServicioClienteSimplex  (OneWay)Dúplex (Callback)Request / Reply
OPERACIONESSimplex (OneWay)ClienteServicioRequestContinuar siguiente declaración de procesamientoRequest ReplayClienteServicioRequestResponseEstado de EsperaClienteServicioDúplex (CallBack)OperationContextDuplex ProxyInstance contextCallback instanceCallback instanceCallback instanceCall onCallback()Oncallback()
OPERACIONESRequest / ReplayOneWayCallback
OPERACIONES
GESTIÓN DE INSTANCIASSe refiere a la manera que un servicio se encarga una solicitud de un cliente.ServicioPer-CallClientePer-SessionSingleton
GESTIÓN DE INSTANCIASPer-Call: la instancia de servicio se creará para cada solicitud de clienteServicioNueva instanciaClienteNueva instanciaNueva instanciaNueva instancia
GESTIÓN DE INSTANCIASPer-Session: se basa en el período de sesiones lógicas entre el cliente y el servicio se mantendráServicioInstancia AClienteClienteInstancia B
GESTIÓN DE INSTANCIASSingleton: todos los clientes están conectados de forma independiente a la misma instancia únicaServicioClienteClienteInstancia A
DEMOGestión de Instancias en WCFCreación de servicios bajo la gestión de instancias
Creación de un servicio por cada tipo de gestión presente en WCFTRANSACCIONESPermite a las aplicaciones cliente crear transacciones y propagarlas más allá de los límites del servicio
Las propiedades que presenta son:AtómicoConsistenteAisladoDuraderoLa programación transaccional requiere trabajar con un recurso que es capaz de participar en una transacción, y ser capaz de confirmar o deshacer los cambios realizados durante la operaciónEstado de Consistencia AEstado de Consistencia BTransacción TerminadaEstado Consistente TemporalTransacción Abortada
TRANSACCIONESClienteClienteServicioRec.Un servicio / Una transacción de recursoServ. ASer. CServ. BRRRUna aplicación orientada a servicios
TRANSACCIONES

WCF for Dummies (Parte III)

Notas del editor

  • #8 Cuadro: Características de los enlaces (Enlaces - Duplex)
  • #10 InstanceMode.PerCallCrea una instancia del servicio cada vez que el cliente invoca una operación. La instancia se destruye cuando se completa la operación.De cara a la escalabilidad este modo ofrece mejor rendimiento que el PerSession, ya que libera recursos entre llamada y llamada. Por ejemplo, si suponemos 100 clientes usando PerSession, el servidor tendrá que tener 100 instancias. Si sólo uno está activo y los otros 999 están tomándose un café, el servidor seguirá teniendo 100 instancias aunque sólo una se esté usando. Si se estuviese usando PerCall, el servidor sólo tendría una instancia.Lógicamente, la desventaja de usar PerCall es que si necesitamos guardar estado entre sesión y sesión la cosa se complica y toca buscar alternativas más costosas de implementar.
  • #11 InstanceMode.PerSessionSe crea una instancia nueva cuando una aplicación cliente invoca por primera vez a una operación del servidor y permanece activa hasta que el cliente cierra la conexión, permaneciendo activa hasta entonces para atender otras peticiones del mismo cliente. Al período desde que se crea hasta que se destruye la instancia es a lo que se llama sesión. (diferentes sesiones no pueden compartir información entre ellas)Por defecto sólo procesará una petición a la vez, por lo que si hay una petición en curso y llega otra, la segunda tendrá que esperar a que termine la primera. ( o dar un time-out ).Este funcionamiento se puede cambiar usando la propiedad ConcurrencyMode, pasando de ConcurrencyMode.Single a Multiple, permitiendo de esta manera que pueda haber múltiples hilos atendiendo peticiones. En este caso de tener múltiples hilos usando la misma sesión será responsabilidad del desarrollador encargarse de que el código sea thread-safe.
  • #12 InstanceMode.SingleCrea una instancia la primera vez que el cliente invoca una operación del servidor y permanece viva para atender todas las peticiones del mismo cliente y lo que es más importante, también todas las peticiones de otros clientes que se conecten al mismo servicio. La instancia se destruye cuando la aplicación que hace de host se detiene.La principal ventaja, a parte de un menor consumo de recursos, es que todos los usuarios pueden compartir de una forma muy sencilla información ya que usan la misma instancia. Esta también se puede considerar su principal problema o desventaja...Si utilizas este modo es importante establece ConcurrencyMode.Multiple, porque sino todas las peticiones de todos los clientes se estarán haciendo una detrás de otras y podrá haber muchas peticiones que den time-out.
  • #16 Cuadro: Características de los enlaces (Enlaces - Transaccciones)