Udostępnij za pośrednictwem


Proxy

Serwer proxy znajduje się w przestrzeni adresowej procesu wywołującego i działa jako zastępca obiektu zdalnego. Z perspektywy obiektu wywołującego serwer proxy jest obiektem. Zazwyczaj rolą serwera proxy jest spakowanie parametrów interfejsu dla wywołań do metod w interfejsach obiektów. Serwer proxy pakuje parametry do buforu komunikatów i przekazuje bufor do kanału, który obsługuje transport między procesami. Serwer proxy jest implementowany jako obiekt agregowany lub złożony. Zawiera on dostarczony przez system element menedżera o nazwie menedżer proxy i co najmniej jeden składnik specyficzny dla interfejsu nazywany serwerami proxy interfejsu. Liczba serwerów proxy interfejsu jest równa liczbie interfejsów obiektów, które zostały uwidocznione dla tego konkretnego klienta. Dla klienta zgodnego z modelem obiektów składnika serwer proxy wydaje się być prawdziwym obiektem.

Nuta

W przypadku marshalingu niestandardowego serwer proxy można zaimplementować podobnie lub komunikować się bezpośrednio z obiektem bez użycia wycinku.

 

Każdy serwer proxy interfejsu jest obiektem składników, który implementuje kod marshalingu dla jednego z interfejsów obiektu. Serwer proxy reprezentuje obiekt, dla którego udostępnia kod marshalingowy. Każdy serwer proxy implementuje również interfejs IRpcProxyBuffer. Mimo że interfejs obiektu reprezentowany przez serwer proxy jest publiczny, implementacja IRpcProxyBuffer jest prywatna i jest używana wewnętrznie w obrębie serwera proxy. Menedżer serwera proxy śledzi serwery proxy interfejsu, a także zawiera publiczną implementację kontroli interfejsu IUnknown dla agregacji. Każdy serwer proxy interfejsu może istnieć w oddzielnej biblioteki DLL, która jest ładowana, gdy obsługiwany interfejs jest zmaterializowany dla klienta.

Struktura serwera proxy

Na poniższym diagramie przedstawiono strukturę serwera proxy, który obsługuje standardowe marshaling parametrów należących do dwóch interfejsów: IA1 i IA2. Każdy serwer proxy interfejsu implementuje IRpcProxyBuffer na potrzeby komunikacji wewnętrznej między elementami agregacji. Gdy serwer proxy jest gotowy do przekazania swoich parametrów marshalowanych przez granicę procesu, wywołuje metody w interfejsie IRpcChannelBuffer, który jest implementowany przez kanał. Kanał z kolei przekazuje wywołanie do biblioteki czasu wykonywania RPC, aby mógł dotrzeć do miejsca docelowego w obiekcie.

Diagram przedstawiający strukturę serwera proxy.

kanału

Inter-Object communication

szczegóły marshalingu

microsoft RPC

wycinków