Conceptos de activación Just-In-Time de COM+
El servicio de activación Just-In-Time (JIT) permite a COM+ desactivar un objeto mientras un cliente sigue manteniendo una referencia activa a ese objeto. La próxima vez que el cliente llame a un método en el objeto , que el cliente cree que sigue activo, el servicio de activación JIT COM+ reactiva el objeto de forma transparente al cliente, justo a tiempo.
La principal ventaja de usar la activación COM + JIT es que puede permitir que los clientes contengan referencias a objetos siempre y cuando los necesiten, sin necesidad de conectar recursos valiosos del servidor, como la memoria. Entre otras ventajas importantes se incluyen las siguientes:
El uso del servicio de activación JIT com+ simplifica considerablemente el modelo de programación para el cliente porque el cliente no tiene que pensar en cómo usa recursos de servidor y objetos de servidor costosos. Sin la activación JIT, los clientes pueden incurrir en una penalización significativa cuando con frecuencia necesitan llamar y liberar objetos.
Nota:
Puede refinar aún más esta ventaja de rendimiento mediante el servicio de agrupación de objetos COM+ . Al agrupar objetos activados por JIT, puede acelerar considerablemente la reactivación de objetos para los clientes mientras reutiliza los recursos que podrían contener, lo que le proporciona un control más preciso sobre la cantidad de memoria que usa un objeto determinado en el servidor. Para obtener más información, consulte Agrupación de objetos y activación JIT de COM+.
Con las aplicaciones distribuidas, se requiere un recorrido de ida y vuelta de red costoso para la creación de cada objeto, y cuanto más alejado sea el cliente del servidor, mayor será el costo de activar y serializar el objeto de servidor, abrir el canal y configurar el proxy y el código auxiliar. Mediante el uso del servicio de activación JIT com+, puede minimizar la frecuencia de creación de objetos para mejorar significativamente el rendimiento de la aplicación.
Cuando se usa la activación DE COM+ JIT para activar esos objetos a los que los clientes contienen referencias de larga duración, pero que no usan necesariamente todo el tiempo, la memoria del servidor no siempre está vinculada a mantener activos esos objetos. Esto puede aumentar significativamente la escalabilidad de la aplicación. El único impacto de rendimiento que ven los clientes es el tiempo que tarda COM+ en reactivar el objeto, normalmente solo marginalmente más tiempo que se tarda en asignar memoria para el objeto y sustancialmente menor que el recorrido de ida y vuelta de red para la creación remota de objetos.
Habilitación de la activación JIT de COM+
Puede habilitar el servicio de activación JIT de COM+ para un componente mediante la herramienta administrativa Servicios de componentes o las funciones administrativas. Para obtener más información sobre cómo hacerlo, consulte Habilitación de la activación JIT para un componente.
La activación JIT de COM+ puede interactuar con otros servicios COM+, como los siguientes:
- Cuando el componente requiere transacciones, la activación JIT se habilita automáticamente para él. Para obtener más información, consulte Transacciones y activación JIT de COM+.
- Cuando el componente está habilitado para la activación JIT, la sincronización se establece automáticamente en obligatoria. Esto significa que si dos clientes llaman simultáneamente a un componente activado por JIT y una llamada de método para uno de ellos devuelve, lo que hace que el objeto se desactive, el otro no se deja varado.
Cómo se desencadena la desactivación
COM+ desactiva un objeto en función del estado del bit de doneness en el contexto del objeto. El objeto puede usar este bit para indicar si se hace (es decir, listo para desactivarse) durante una llamada de método determinada. Para obtener más información, vea Establecer el bit listo.
Uso de la propiedad Auto-Done
Con la herramienta administrativa Servicios de componentes, puede configurar un método de forma que el objeto se desactive automáticamente al devolver el método. (Consulte Habilitación automática finalizada para un método para obtener instrucciones sobre cómo establecer esta propiedad). Al seleccionar esta opción, puede eliminar las llamadas de método repetitivas para votar en transacciones. Dado que la configuración predeterminada para el bit de coherencia es True, si también ha cambiado el bit hecho a True y no realiza ninguna acción para cambiar esta configuración, se llama a IObjectContext::SetComplete automáticamente después de que el método devuelva.
Sin embargo, hay una advertencia para este comportamiento: COM+ examinará el HRESULT que devuelve el método. Si hrESULT indica un error, el bit de coherencia se establece en False y el resultado es el mismo que si hubiera llamado a IObjectContext::SetAbort.
En resumen, si selecciona Auto-done para un método y no realiza ninguna acción para establecer los bits y, si se devuelve un VALOR HRESULT(hr), se aplica lo siguiente:
- Si SUCCEEDS(hr), es como si llamara a SetComplete.
- Si FAILED(hr), es como si llamara a SetAbort.
Uso de IObjectControl para administrar la activación y desactivación de objetos
Puede implementar la interfaz IObjectControl para que el tiempo de ejecución de COM+ administre automáticamente la desactivación y reactivación de los objetos. Cuando un objeto implementa esta interfaz, COM+ llama a IObjectControl::D eactivate cuando desactiva el objeto e IObjectControl::Activate cuando lo reactiva. Estos métodos habilitan la inicialización automática del contexto en la activación de objetos y la limpieza del estado en la desactivación.
Si agrupa objetos que usan la activación JIT de COM+, se recomienda encarecidamente implementar IObjectControl. Para obtener más información, consulte Agrupación de objetos y activación JIT de COM+.
Falta de estado y activación JIT
Los objetos transaccionales no tienen estado necesariamente porque no se puede compartir el estado a través de un límite de transacción. Por lo tanto, usaría la activación JIT solo cuando el objeto no contiene ningún estado que se perdería durante la desactivación; de lo contrario, infringe el aislamiento de las transacciones. Debido a los patrones de uso natural de los objetos transaccionales, realizan alguna unidad de trabajo y liberan el objeto cuando la transacción se confirma o anula, la activación JIT y las transacciones automáticas están estrechamente relacionadas. La configuración de un objeto para requerir transacciones permite la activación JIT com+ automáticamente.
Temas relacionados