Delen via


Proxy

Een proxy bevindt zich in de adresruimte van het aanroepende proces en fungeert als surrogaat voor het externe object. Vanuit het perspectief van het aanroepende object is de proxy het object. Normaal gesproken is de rol van de proxy het verpakken van de interfaceparameters voor aanroepen naar methoden in de objectinterfaces. De proxy verpakt de parameters in een berichtbuffer en geeft de buffer door aan het kanaal, waarmee het transport tussen processen wordt verwerkt. De proxy wordt geïmplementeerd als een aggregatiet of samengesteld object. Het bevat een door het systeem geleverd manager stuk genaamd proxy manager en een of meer interface-specifieke onderdelen genaamd interfaceproxy's. Het aantal interfaceproxy's is gelijk aan het aantal objectinterfaces dat aan die specifieke client is blootgesteld. Voor de client die voldoet aan het onderdeelobjectmodel, lijkt de proxy het echte object te zijn.

Notitie

Met aangepaste marshaling kan de proxy op dezelfde manier worden geïmplementeerd of kan deze rechtstreeks met het object communiceren zonder een stub te gebruiken.

 

Elke interfaceproxy is een onderdeelobject dat de marshaling-code implementeert voor een van de interfaces van het object. De proxy vertegenwoordigt het object waarvoor de marshaling-code wordt verstrekt. Elke proxy implementeert ook de IRpcProxyBuffer interface. Hoewel de objectinterface die wordt vertegenwoordigd door de proxy openbaar is, is de IRpcProxyBuffer implementatie privé en intern in de proxy wordt gebruikt. De proxybeheerder houdt de interfaceproxy's bij en bevat ook de openbare implementatie van de controle IUnknown interface voor de aggregaties. Elke interfaceproxy kan bestaan in een afzonderlijke DLL die wordt geladen wanneer de interface die wordt ondersteund, wordt gerealiseerd naar de client.

Structuur van de proxy

In het volgende diagram ziet u de structuur van een proxy die ondersteuning biedt voor het standaard marshaling van parameters die behoren tot twee interfaces: IA1 en IA2. Elke interfaceproxy implementeert IRpcProxyBuffer voor interne communicatie tussen de statistische onderdelen. Wanneer de proxy klaar is om de marshaled parameters door te geven aan de grens van het proces, roept het methoden aan in de IRpcChannelBuffer interface, die door het kanaal wordt geïmplementeerd. Het kanaal stuurt de aanroep naar de RPC-runtimebibliotheek door, zodat het de bestemming in het object kan bereiken.

diagram met de structuur van de proxy.

-kanaal

Inter-Object Communicatie

Marshaling Details

Microsoft RPC-

Stub-