Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uproszczone programy obsługi po stronie klienta umożliwiają tworzenie ogólnych procedur obsługi po stronie klienta o dowolnym rozmiarze, co ułatwia wykonywanie dowolnego rodzaju zadania standardowego. Jako programy obsługi są one używane przez więcej niż jednego klienta. Różnią się one od obsług OLE, ponieważ nie można ich utworzyć przed uruchomieniem serwera, a ich czas życia jest związany z menedżerem proxy, co zapobiega ewentualnej sytuacji wyścigu, w której obsługa mogłaby w przeciwnym razie zostać przedwcześnie zwolniona.
Menedżer proxy jest obiektem utworzonym przez system, który implementuje interfejs IMarshal. Jeśli używasz standardowego marshalingu, system tworzy go podczas wywoływania CoGetStandardMarshal (lub CoGetStdMarshalEx, do tworzenia zagregowanego marshalera dla uproszczonych procedur obsługi), a także implementuje IClientSecurity i interfejsów IMultiQI obiektu. Po stronie serwera znajduje się odpowiedni obiekt systemowy, który implementuje również IMarshal. Te obiekty obsługują przeprowadzanie marshalingu w sposób niewidoczny.
Istnieją dwa ogólne typy tych procedur obsługi, które można zaimplementować:
- Procedura obsługi wykonująca usługę, która nie wymaga dodatkowych danych z serwera
- Procedura obsługi korzystająca z dodatkowych danych z serwera
Niektóre potencjalne zastosowania dodatkowych danych w strumieniu dostarczonym przez serwer są następujące:
- Dane statyczne z serwera. Niezależnie od przekazywania określonego interfejsu, serwer zapisuje te same dane w strumieniu.
- Dane dla każdego interfejsu z serwera. W zależności od tego, który interfejs jest marshalowany, serwer może zapisywać różne dane w strumieniu.
- Asystenci poszczególnych interfejsów. Składniki COM interfejsu zagregowane w module obsługi klienta i delegujące do standardowego pośrednika proxy. Na przykład, aby zwiększyć wydajność sieci, komponent COM dla IStream może wykonywać buforowanie danych po stronie klienta, odczyt z wyprzedzeniem, zapis z opóźnieniem, blokadę oportunistyczną itd.
- Wersja sieciowa interfejsu. Wersja sieci interfejsu różni się od interfejsu udostępnianego przez kod aplikacji klienta i serwera. Istnieje możliwość, na przykład można multipleksować odkryte interfejsy IA i IB przez ten sam interfejs sieciowy INetAB, tak jak to robi procedura obsługująca serwer. Można na przykład przekonwertować interfejs transferu danych na interfejs sieciowy, który używa potoków do wydajnego transferu danych.
Klienci na poziomie podrzędnym mogą nie mieć możliwości interfejsów unmarshaling, które mają niestandardowe programy obsługi, z dwóch powodów: Po pierwsze, mogą nie rozumieć identyfikatora CLSID używanego w niestandardowym pakiecie marshaled, gdy program obsługi serwera jest zagregowany, a obiekt chce procedury obsługi. Po drugie kod programu obsługi może nawet nie działać po stronie klienta, jeśli wymaga ona nowych funkcji z modelu COM w celu utworzenia zagregowanego standardowego marshalera i wykonania zdalnych wywołań QueryInterface.
Tematy pokrewne