Gestore OLE
Un gestore OLE è una DLL contenente diversi componenti che interagiscono usati per il collegamento e l'incorporamento. Per evitare la spesa della comunicazione interprocesso costante tra un contenitore e il relativo server, il gestore viene caricato nello spazio di elaborazione del contenitore per agire per conto di un server come un processo surrogato. Il gestore OLE gestisce le richieste di contenitore che non richiedono l'attenzione dell'applicazione server, ad esempio le richieste di disegno. Quando un contenitore richiede un elemento che il gestore oggetti non può fornire, il gestore comunica con l'applicazione server usando il meccanismo di comunicazione out-of-process COM.
I componenti del gestore OLE includono parti di comunicazione remota per gestire la comunicazione tra il gestore e il relativo server, una cache per l'archiviazione dei dati di un oggetto (insieme alle informazioni su come devono essere formattati e visualizzati) e un oggetto di controllo che coordina le attività degli altri componenti della DLL. Inoltre, se un oggetto è un collegamento, la DLL include anche un componente di collegamento o un oggetto collegato, che tiene traccia del nome e della posizione dell'origine del collegamento.
OLE fornisce un gestore predefinito che la maggior parte delle applicazioni usa per il collegamento e l'incorporamento. Se il valore predefinito non soddisfa i requisiti del server, è possibile sostituire completamente il gestore predefinito o usare parti della funzionalità che fornisce dove appropriato. Nel secondo caso, il gestore dell'applicazione viene implementato come oggetto aggregato composto da un nuovo oggetto di controllo e dal gestore predefinito. I gestori di applicazioni/predefiniti combinati sono noti anche come gestori in-process. Il gestore di comunicazione remota viene usato per gli oggetti a cui non viene assegnato un CLSID nel Registro di sistema o che non dispongono di un gestore specificato. Tutto ciò che è necessario da un gestore per questi tipi di oggetti è che passano informazioni attraverso il limite del processo. Per creare una nuova istanza del gestore predefinito, chiamare OleCreateDefaultHandler. Per alcune circostanze particolari, chiama OleCreateEmbeddingHelper.
Quando si crea un'istanza di un gestore per una classe, non è possibile usarla per un'altra classe. Se usato per un documento composto, il gestore OLE implementa le strutture di dati sul lato contenitore quando si accede in remoto agli oggetti di una determinata classe.
OLE ha definito il gestore predefinito per i client di server locali di documenti composti. Il gestore predefinito ha implementato una serie di interfacce che il server tipico non ha eseguito. Quando OLE ha successivamente consentito server in-process per documenti composti, è stato necessario creare un helper di incorporamento che ha implementato queste interfacce aggiuntive in modo che i client possano usarli senza problemi.
Le finestre di progettazione del framework che definiscono e implementano un gestore lato client devono considerare questo problema nella progettazione e devono fornire un helper in-process equivalente per gli stessi motivi. Anche se le finestre di progettazione attualmente non implementano interfacce nel gestore che i server non espongono, potrebbero voler definire un helper ora in modo che possano aggiungerle in futuro. In alternativa, è possibile implementare le interfacce aggiuntive nell'oggetto server stesso.
Argomenti correlati