Condividi tramite


Gestore lato client leggero

I gestori lato client leggeri consentono di creare gestori lato client generali di qualsiasi dimensione, per consentire di eseguire qualsiasi tipo di attività standard. Come gestori, questi sono utilizzabili da più client. Sono diversi dai gestori OLE in quanto non possono essere creati prima dell'avvio del server e la loro durata è associata a quella del gestore proxy, impedendo una possibile race condition in cui il gestore potrebbe altrimenti essere rilasciato prematuramente.

Gestione proxy è l'oggetto creato dal sistema che implementa l'interfaccia IMarshal . Se si usa il marshalling standard, il sistema lo crea automaticamente quando si chiama CoGetStandardMarshal (o CoGetStdMarshalEx, per la creazione di un marshalling aggregato per gestori leggeri) e implementa anche le interfacce IClientSecurity e IMultiQI nell'oggetto. Sul lato server è presente un oggetto di sistema corrispondente che implementa anche IMarshal. Questi oggetti gestiscono il marshalling in modo trasparente.

Esistono due tipi generali di questi gestori che è possibile implementare:

  • Gestore che esegue un servizio che non richiede dati aggiuntivi dal server
  • Gestore che usa dati aggiuntivi dal server

Di seguito sono riportati alcuni potenziali usi dei dati aggiuntivi nel flusso fornito dal server:

  • Dati statici dal server. Indipendentemente dalla particolare interfaccia sottoposta a marshalling, il server scrive gli stessi dati nel flusso.
  • Dati per interfaccia dal server. A seconda di quale interfaccia specifica viene eseguito il marshalling, il server può scrivere dati diversi nel flusso.
  • Helper per interfaccia. Componenti COM per interfaccia aggregati nel gestore client e delega al proxy standard. Ad esempio, per migliorare le prestazioni di rete, un componente COM per IStream potrebbe eseguire la memorizzazione nella cache lato client dei dati, read-ahead, write-behind, op-locking e così via.
  • Versione di rete di un'interfaccia. La versione di rete dell'interfaccia è diversa dall'interfaccia esposta dal codice dell'applicazione client e server. È possibile, ad esempio, alle interfacce esposte multiplex IA e IB tramite la stessa interfaccia di rete INetAB, il modo in cui il gestore del server di incorporamento esegue. Ad esempio, si potrebbe convertire un'interfaccia di trasferimento dati in un'interfaccia di rete che usa pipe per un trasferimento efficiente dei dati.

I client di livello inferiore potrebbero non avere la funzionalità di unmarshaling di interfacce con gestori personalizzati, per due motivi: in primo luogo, potrebbero non comprendere il CLSID usato nel pacchetto con marshalling personalizzato quando il gestore server viene aggregato e l'oggetto vuole un gestore. In secondo luogo, il codice del gestore potrebbe anche non essere eseguito sul lato client se richiede nuove funzionalità da COM per creare il gestore di marshalling standard aggregato e per eseguire chiamate QueryInterface remote.

Gestore OLE