Proxy
Un proxy si trova nello spazio indirizzi del processo chiamante e funge da surrogato per l'oggetto remoto. Dal punto di vista dell'oggetto chiamante, il proxy è l'oggetto . In genere, il ruolo del proxy consiste nel creare un pacchetto dei parametri di interfaccia per le chiamate ai metodi nelle relative interfacce oggetto. Il proxy inserisce i parametri in un buffer di messaggi e passa il buffer sul canale, che gestisce il trasporto tra i processi. Il proxy viene implementato come oggetto aggregato o composito. Contiene una parte di gestione fornita dal sistema denominata gestione proxy e uno o più componenti specifici dell'interfaccia denominati proxy di interfaccia. Il numero di proxy di interfaccia è uguale al numero di interfacce oggetto esposte a quel determinato client. Per il client conforme al modello a oggetti del componente, il proxy sembra essere l'oggetto reale.
Nota
Con il marshalling personalizzato, il proxy può essere implementato in modo analogo oppure può comunicare direttamente con l'oggetto senza usare uno stub.
Ogni proxy di interfaccia è un oggetto componente che implementa il codice di marshalling per una delle interfacce dell'oggetto. Il proxy rappresenta l'oggetto per il quale fornisce il codice di marshalling. Ogni proxy implementa anche l'interfaccia IRpcProxyBuffer . Anche se l'interfaccia dell'oggetto rappresentata dal proxy è pubblica, l'implementazione IRpcProxyBuffer è privata e viene usata internamente all'interno del proxy. Gestione proxy tiene traccia dei proxy di interfaccia e contiene anche l'implementazione pubblica dell'interfaccia IUnknown di controllo per l'aggregazione. Ogni proxy di interfaccia può esistere in una DLL separata caricata quando l'interfaccia supportata viene materializzata nel client.
Il diagramma seguente illustra la struttura di un proxy che supporta il marshalling standard dei parametri appartenenti a due interfacce: IA1 e IA2. Ogni proxy di interfaccia implementa IRpcProxyBuffer per la comunicazione interna tra le parti di aggregazione. Quando il proxy è pronto per passare i parametri di marshalling oltre il limite del processo, chiama i metodi nell'interfaccia IRpcChannelBuffer , implementata dal canale. Il canale a sua volta inoltra la chiamata alla libreria di runtime RPC in modo che possa raggiungere la destinazione nell'oggetto .