Controlador de Client-Side ligero
Los controladores ligeros del lado cliente permiten crear controladores generales del lado cliente de cualquier tamaño para ayudarle a realizar cualquier tipo de tarea estándar. Como controladores, son utilizables por más de un cliente. Difieren de los controladores OLE en que no se pueden crear antes de que se inicie el servidor y su duración está vinculada a la del administrador de proxy, lo que impide una posible condición de carrera en la que el controlador podría liberarse prematuramente.
El administrador de proxy es el objeto creado por el sistema que implementa la interfaz IMarshal . Si usa serialización estándar, el sistema lo crea automáticamente cuando se llama a CoGetStandardMarshal (o CoGetStdMarshalEx, para crear un serializador agregado para controladores ligeros) y también implementa las interfaces IClientSecurity e IMultiQI en el objeto. En el lado servidor, hay un objeto del sistema correspondiente que también implementa IMarshal. Estos objetos controlan el cálculo de referencias de forma transparente.
Hay dos tipos generales de estos controladores que puede que desee implementar:
- Controlador que realiza un servicio que no requiere datos adicionales del servidor
- Controlador que usa datos adicionales del servidor
Algunos posibles usos de los datos adicionales de la secuencia proporcionada por el servidor son los siguientes:
- Datos estáticos del servidor. Independientemente de la interfaz concreta que se serializa, el servidor escribe los mismos datos en la secuencia.
- Datos por interfaz del servidor. Dependiendo de la interfaz concreta que se serializa, el servidor puede escribir datos diferentes en la secuencia.
- Asistentes por interfaz. Componentes COM por interfaz agregados en el controlador de cliente y delegación en el proxy estándar. Por ejemplo, para mejorar el rendimiento de la red, un componente COM para IStream podría realizar el almacenamiento en caché del lado cliente de datos, lectura anticipada, escritura subyacente, bloqueo de operación, etc.
- Versión de red de una interfaz. La versión de red de la interfaz es diferente de la interfaz expuesta por el código de aplicación cliente y servidor. Por ejemplo, es posible usar interfaces expuestas a multiplex IA e IB a través de la misma interfaz de red INetAB, la forma en que lo hace el controlador del servidor de inserción. Por ejemplo, se podría convertir una interfaz de transferencia de datos en una interfaz de red que usa canalizaciones para una transferencia de datos eficaz.
Es posible que los clientes de nivel inferior no tengan la capacidad de desacoplar interfaces que tienen controladores personalizados, por dos motivos: en primer lugar, es posible que no comprendan el CLSID usado en el paquete serializado personalizado cuando se agrega el controlador de servidor y el objeto quiere un controlador. En segundo lugar, es posible que el código del controlador ni siquiera se ejecute en el lado cliente si requiere una nueva funcionalidad de COM para crear el serializador estándar agregado y para realizar llamadas remotas de QueryInterface .
Temas relacionados