Partager via


Proxy

Un proxy réside dans l’espace d’adressage du processus appelant et sert de substitut pour l’objet distant. Du point de vue de l’objet appelant, le proxy est l’objet . En règle générale, le rôle du proxy consiste à empaqueter les paramètres d’interface pour les appels aux méthodes dans ses interfaces d’objet. Le proxy empaquette les paramètres dans une mémoire tampon de messages et transmet la mémoire tampon au canal, qui gère le transport entre les processus. Le proxy est implémenté en tant qu’objet agrégé ou composite. Il contient un élément de gestionnaire fourni par le système appelé gestionnaire de proxy et un ou plusieurs composants spécifiques à l’interface appelés proxys d’interface. Le nombre de proxys d’interface est égal au nombre d’interfaces objet qui ont été exposées à ce client particulier. Pour que le client se conforme au modèle objet du composant, le proxy semble être l’objet réel.

Notes

Avec le marshaling personnalisé, le proxy peut être implémenté de la même façon ou il peut communiquer directement avec l’objet sans utiliser de stub.

 

Chaque proxy d’interface est un objet de composant qui implémente le code de marshaling pour l’une des interfaces de l’objet. Le proxy représente l’objet pour lequel il fournit du code de marshaling. Chaque proxy implémente également l’interface IRpcProxyBuffer . Bien que l’interface objet représentée par le proxy soit publique, l’implémentation IRpcProxyBuffer est privée et utilisée en interne dans le proxy. Le gestionnaire de proxy effectue le suivi des proxys d’interface et contient également l’implémentation publique de l’interface IUnknown de contrôle pour l’agrégat. Chaque proxy d’interface peut exister dans une DLL distincte qui est chargée lorsque l’interface qu’il prend en charge est matérialisée pour le client.

Structure du proxy

Le diagramme suivant montre la structure d’un proxy qui prend en charge le marshaling standard des paramètres appartenant à deux interfaces : IA1 et IA2. Chaque proxy d’interface implémente IRpcProxyBuffer pour la communication interne entre les éléments d’agrégation. Lorsque le proxy est prêt à passer ses paramètres marshalés au-delà de la limite de processus, il appelle des méthodes dans l’interface IRpcChannelBuffer , qui est implémentée par le canal. À son tour, le canal transfère l’appel à la bibliothèque d’exécution RPC afin qu’elle puisse atteindre sa destination dans l’objet .

Diagramme montrant la structure du proxy.

Channel

Communication inter-objets

Détails du marshaling

Microsoft RPC

Stub