Udostępnij za pośrednictwem


Informacje o dystrybucji równorzędnej

Interfejs API dystrybucji równorzędnej, który obsługuje funkcję Branch Cache w systemie Windows 7, Windows Server 2008 R2, Windows 8 i Windows Server 2012, oferuje zestaw interfejsów API platformy, które mogą zwiększyć reaktywność sieci dla scentralizowanych aplikacji w przypadku uzyskiwania dostępu z biur zdalnych oraz pomóc w zmniejszeniu ogólnego wykorzystania sieci rozległej (WAN) bez zakłócania pracy technologii zabezpieczeń sieciowych.

System dystrybucji równorzędnej oferuje zestaw interfejsów API platformy używanych przez zarówno wydawców, którzy udostępniają zawartość cyfrową, jak i konsumentów, którzy go żądają. Aby łatwo odróżnić te role, może być łatwiej myśleć o wydawcy w roli serwera i odbiorcy w roli klienta. Należy pamiętać, że oprócz tych ról koncepcyjnych usługa dystrybucji równorzędnej jest prawdziwym systemem równorzędnym, co wskazuje możliwość publikowania i korzystania z zawartości cyfrowej w dowolnym węźle dystrybucji równorzędnej. API platformy PeerDistribution są udostępniane wydawcom i użytkownikom przez bibliotekę importu Win32 (PeerDist.Lib).

Cykl życia zawartości dostarczanej przez wydawcę i pobierany przez użytkownika z usługą dystrybucji równorzędnej składa się z następujących operacji:

Opis
Publikacja Treści Publikowanie odbywa się w celu utworzenia opisu zawartości określanego jako Informacje o Zawartościlub w skrócie Info o Zawartości. Informacje o treści mogą być następnie używane przez instancję usługi dystrybucji równorzędnej do uwierzytelniania i odbudowywania zawartości. Gdy zawartość jest publikowana przez aplikację w usłudze dystrybucji równorzędnej, która jest koncepcyjnie operacją po stronie serwera, zawartość ta staje się skojarzona z tożsamością wydawcy, która jest oparta na identyfikatorze SID użytkownika skojarzonego z tokenem dostępu wątku. To powiązanie jest wykonywane w celu ograniczenia dostępu do zawartości przez nieautoryzowane jednostki. Należy jednak pamiętać, że dostęp do informacji o zawartości jest odpowiednikiem dostępu do samej zawartości, ponieważ informacje o zawartości mogą służyć do uzyskiwania zawartości z elementów równorzędnych lub hostowanej pamięci podręcznej.
Istnieje nowa wersja struktury danych informacji o zawartości w systemie Windows 8; jednak poprzednia wersja jest nadal obsługiwana. Aby współpracować z klientami systemu Windows 7, administrator może skonfigurować usługę dystrybucji równorzędnej tak, aby korzystała z poprzedniej wersji struktury danych informacji o zawartości.
Pobieranie zawartości Aby użytkownik pobierał zawartość z usługi dystrybucji równorzędnej, należy zapewnić dostęp do opublikowanych informacji o zawartości skojarzonych z tą zawartością. Usługa dystrybucji równorzędnej używana do publikowania zawartości może udostępniać skojarzone informacje o zawartości. Gdy konsument ma informacje o zawartości, inne interfejsy API dystrybucji równorzędnej mogą być użyte do żądania zawartości z usługi dystrybucji równorzędnej. Usługa dystrybucji równorzędnej podejmie próbę pobrania zawartości z sieci lokalnej. Jeśli zawartość jest niedostępna, aplikacja kliencka jest odpowiedzialna za pobieranie zawartości z serwera źródłowego.
usuwanie publikacji W przypadku aplikacji, które opublikowały zawartość w usłudze dystrybucji równorzędnej, udostępniono funkcję PeerDistServerUnpublish, aby umożliwić cofanie publikowania zawartości. Po cofnięciu publikowania zawartości lokalna usługa dystrybucji równorzędnej nie będzie już udostępniać informacji o zawartości skojarzonej z tą zawartością.

Realizacje asynchroniczne

Interfejs API dystrybucji równorzędnej obsługuje asynchroniczny model interfejsu API, a w rezultacie interfejsy API dystrybucji równorzędnej umożliwiają korzystanie z portów uzupełniania we/wy lub zdarzeń jako mechanizmów sygnalizujących do przetwarzania asynchronicznych operacji dystrybucji równorzędnej. W przypadku każdego z mechanizmów Peer Distribution używa struktury OVERLAPPED. Ogólnie rzecz biorąc, Peer Distribution przejmuje własność struktury OVERLAPPED i wszystkich parametrów wyjściowych, które klient przekazuje do asynchronicznych funkcji interfejsu API. Klient nie może uzyskać dostępu do tych zasobów, dopóki określona funkcja asynchroniczna nie zostanie ukończona. Gdy tylko funkcje asynchroniczne zostaną ukończone, Usługa Dystrybucji Równorzędnej nie będzie już wymagała dostępu do tych zasobów i mogą one być ponownie użyte, zależnie od potrzeby aplikacji wywołującej.

Nie będzie żadnego uzupełnienia asynchronicznego, jeśli funkcja zwróci kod błędu inny niż ERROR_IO_PENDING. Zwracanie wartości innej niż ERROR_IO_PENDING oznacza, że wywołanie nie powiodło się synchronicznie. Jeśli interfejs API dystrybucji równorzędnej zwróci ERROR_IO_PENDING, obiekt wywołujący musi poczekać na ukończenie asynchroniczne.

Kod błędu uzupełniania asynchronicznego można pobrać na jeden z dwóch sposobów:

Port ukończenia we/wy oparty na zakończeniu

Użytkownik wywołuje mechanizm portu ukończenia we/wy, zapewniając uchwyt portu ukończenia i klucz ukończenia do następujących funkcji interfejsu API:

PeerDistRegisterForStatusChangeNotification
PeerDistServerPublishStream
PeerDistServerOpenContentInformation
PeerDistClientOpenContent

Użytkownik tworzy port ukończenia, wywołując CreateIoCompletionPort. Ten uchwyt portu kompletowania może być używany równocześnie do innych asynchronicznych operacji we/wy, a także operacji specyficznych dla Równorzędnej Dystrybucji.

Obiekt wywołujący powinien używać funkcji GetQueuedCompletionStatus do zarządzania uzupełnianiem asynchronicznym. Jeśli operacja asynchroniczna zakończy się niepowodzeniem, funkcja GetQueuedCompletionStatus zwróci FALSE, a GetLastError zwróci odpowiedni kod błędu. Obiekt wywołujący powinien zignorować wszystkie pola struktury OVERLAPPED, jeśli kod błędu jest inny niż ERROR_SUCCESS. Operacja asynchroniczna powiedzie się, jeśli funkcja GetQueuedCompletionStatus zwraca true.

Aby uzyskać więcej informacji, zobacz porty zakończenia operacji we/wy.

Ukończenie oparte na zdarzeniach

Jeśli obiekt wywołujący ustawi prawidłowy uchwyt zdarzenia w polu hEvent struktury OVERLAPPED, Dystrybucja równorzędna używa go do sygnalizowania, że powiązana asynchroniczna operacja we/wy została zakończona.

Wywołujący wątek może zarządzać nakładającymi się operacjami, określając dojście do obiektu zdarzenia resetowania ręcznego dla struktury OVERLAPPED w jednej z funkcji oczekiwania. Gdy zdarzenie zostanie zasygnalizowane, obiekt wywołujący musi wywołać PeerGetOverlappedResult, przekazując odpowiednią strukturę OVERLAPPED. PeerGetOverlappedResult zwróci FALSE, a obiekt wywołujący musi wywołać GetLastError, aby pobrać kod błędu. Wywołujący powinien ignorować wszystkie pola struktury OVERLAPPED, jeśli kod błędu jest innym niż ERROR_SUCCESS. Operacja asynchroniczna powiedzie się, jeśli funkcja PeerGetOverlappedResult zwraca true.

Jeśli wywołujący udostępni port ukończenia wraz ze zdarzeniem, zdarzenie będzie używane jako mechanizm ukończenia.

Windows 7: Użyj funkcji GetOverlappedResult zamiast funkcji PeerGetOverlappedResult.

Dokumentacja interfejsu API dystrybucji Peer-to-Peer