|
Proxy
A proxy resides in the address space of the calling process and acts as a
surrogate for the remote object. From the perspective of the calling object, the
proxy is the object. Typically, the proxy's role is to package the interface
parameters for calls to methods in its object interfaces. The proxy packages the
parameters into a message buffer and passes the buffer onto the channel, which
handles the transport between processes. The proxy is implemented as an
aggregate, or composite, object. It contains a system-provided, manager piece called the
proxy manager and one or more interface-specific components called interface
proxies. The number of interface proxies equals the number of object interfaces
that have been exposed to that particular client. To the client complying with
the component object model, the proxy appears to be the real object.
Note With custom marshalling, the proxy can be implemented similarly or it can
communicate directly to the object without using a stub.
Each interface proxy is a component object that implements the marshalling
code for one of the object's interfaces. The proxy represents the object for which
it provides marshalling code. Each proxy also implements the IRpcProxyBuffer interface. Although the object interface represented by the proxy is public,
the IRpcProxyBuffer implementation is private and is used internally within the proxy. The proxy
manager keeps track of the interface proxies and also contains the public
implementation of the controlling IUnknown interface for the aggregate. Each interface proxy can exist in a separate DLL
that is loaded when the interface it supports is materialized to the client.
The following diagram shows the structure of a proxy that supports the
standard marshalling of parameters belonging to two interfaces: IFoo1 and IFoo2. Each interface proxy implements IRpcProxyBuffer that is used for internal communication between the aggregate pieces. When
the proxy is ready to pass its marshalled parameters across the process boundary,
it calls methods in the IRpcChannelBuffer interface, which is implemented by the channel. The channel in turn forwards
the call to the RPC run-time library so that it can reach its destination in
the object.
Related LinksSoftware for Delphi and C++ Builder developers Software for Visual Studio .NET developers Software for Visual Basic 6 developers Delphi Tips&Tricks
MegaDetailed.NET
TMS Scripter Studio Pro components for Delphi/C++Builder
More Online Helps Win32 Programmer's Reference (win32.hlp) Win32 Multimedia Programmer's Reference (mmedia.hlp) Microsoft Windows Pen API Programmer's Reference (penapi.hlp) Microsoft Windows Sockets 2 Reference (sock2.hlp) Microsoft Windows Telephony API (TAPI) Programmer's Reference (sock2.hlp) Unix Manual Pages
|