Dojścia kontekstu
Czasami w przypadku aplikacji rozproszonych wymagane jest, aby program serwera obsługiwał informacje o stanie między wywołaniami klienta. Programy serwera obsługujące więcej niż jednego klienta jednocześnie muszą przechowywać informacje o stanie dla każdego klienta. Ponieważ klient i serwer używają różnych przestrzeni adresowych na różnych komputerach i niekoniecznie ufają sobie nawzajem, typowe podejścia do udostępniania danych często nie działają. Na przykład klient i serwer nie mogą zachować informacji o stanie sesji zdalnej w zmiennych globalnych, ponieważ nie współużytkują tej samej globalnej przestrzeni adresowej. Przechowywanie informacji w udostępnionym pliku jest trudne, ponieważ są one uruchamiane na różnych komputerach. Uproszczone podejście może polegać na wysłaniu całego stanu do klienta i zwrócenie go przez klienta przy następnym wywołaniu, ale takie podejście ma wady: serwer nie musi ufać klientowi w celu zwrócenia odpowiedniego stanu, a stan może być niejawnie powiązany z innym stanem na serwerze, takim jak uchwyty plików lub otwarte gniazda.
Microsoft RPC zapewnia zaawansowany i bezpieczny mechanizm nazywany dojściami kontekstu do przechowywania stanu skojarzonego z danym klientem na serwerze. Informacje o stanie są nazywane kontekstem serwera. Klienci mogą uzyskać uchwyt kontekstu w celu zidentyfikowania kontekstu serwera dla poszczególnych sesji RPC.
Na przykład każdy klient w aplikacji rozproszonej może utworzyć i zaktualizować plik danych dla sesji RPC. Serwer może używać uchwytu pliku dla każdego pliku danych klienta jako dojścia kontekstu. Za każdym razem, gdy klient żąda operacji w pliku danych tworzonym przez serwer, klient przekazuje do serwera dojście kontekstu. Klient nie otrzymuje samego dojścia do pliku; pobiera nieprzezroczystym tokenem, który może unikatowo skojarzyć z dojściem do pliku przez proces wykonywania RPC serwera. Ponieważ dojście kontekstowe jest naprawdę dojściem do pliku, obsługa kontekstu ma sens tylko w przestrzeni adresowej serwera. Jednak program kliencki może użyć dojścia kontekstu, aby poinformować serwer, na którym pliku mają być wykonywane aktualizacje.
Inne dane mogą być również uchwytami kontekstowymi. Na przykład klient i serwer mogą używać rekordu rekordu bazy danych jako dojścia do plików. Jeśli klient musi wykonać kilka aktualizacji określonego rekordu, może uzyskać numer rekordu jako uchwyt kontekstu. Po każdym wywołaniu procedury zdalnej należy przekazać numer rekordu do serwera w celu zaktualizowania rekordu bazy danych.
Najczęściej kontekst obsługuje punkty do bloku pamięci na serwerze, na którym serwer przechowuje różne informacje o zarządzaniu.
W tej sekcji przedstawiono informacje na temat definiowania i używania uchwytów kontekstowych. Dyskusja jest przedstawiona w następujących tematach:
- tworzenie interfejsu przy użyciu dojścia kontekstu
- tworzenie serwera przy użyciu dojścia kontekstu
- tworzenie klienta przy użyciu dojścia kontekstu
- kontekst serwera
- resetowania kontekstu klienta
- wielowątkowych klientów i dojść kontekstowych