피어 배포 정보

Windows 7, Windows Server 2008 R2, Windows 8 및 Windows Server 2012 분기 캐시 기능을 지원하는 피어 배포 API는 원격 네트워크에서 액세스할 때 중앙 집중식 애플리케이션의 네트워크 응답성을 높이고 네트워크 보안 기술을 방해하지 않고 전반적인 WAN(광역 네트워크) 사용률을 줄이는 데 도움이 되는 플랫폼 API 세트를 제공합니다.

피어 배포 시스템은 디지털 콘텐츠를 제공하는 게시자와 이를 요청하는 소비자 모두에 의해 활용되는 플랫폼 API 집합을 제공합니다. 이러한 역할을 쉽게 구분하기 위해 서버 역할의 게시자와 클라이언트 역할의 소비자를 생각하는 것이 더 쉬울 수 있습니다. 이와 별도로 이러한 개념적 역할 외에도 피어 배포 서비스는 모든 피어 배포 노드에서 디지털 콘텐츠를 게시하고 사용하는 기능에 표시된 대로 진정한 피어 시스템이라는 점을 기억해야 합니다. 피어 배포 플랫폼 API는 Win32 가져오기 라이브러리(PeerDist.Lib)를 통해 게시자 및 소비자에게 노출됩니다.

게시자가 제공하고 피어 배포 서비스를 통해 소비자가 검색하는 콘텐츠의 수명 주기는 다음 작업으로 구성됩니다.

설명
콘텐츠 게시 게시는 콘텐츠 정보라는 콘텐츠에 대한 설명을 생성하기 위해 수행되거나 짧은 콘텐츠 정보를 생성하기 위해 수행됩니다. 그런 다음 피어 배포 서비스의 인스턴스에서 이 콘텐츠 정보를 사용하여 콘텐츠를 인증하고 다시 빌드할 수 있습니다. 애플리케이션에서 개념적으로 서버 쪽 작업인 피어 배포 서비스에 콘텐츠를 게시하면 해당 콘텐츠는 스레드 액세스 토큰과 연결된 사용자의 SID를 기반으로 하는 Publisher ID와 연결됩니다. 이 바인딩은 권한 없는 엔터티에 의한 콘텐츠 액세스를 제한하기 위해 수행됩니다. 그러나 콘텐츠 정보는 피어 또는 호스트 캐시에서 콘텐츠를 가져오는 데 사용할 수 있기 때문에 콘텐츠 정보에 대한 액세스는 콘텐츠 자체에 대한 액세스와 동일합니다.
Windows 8 콘텐츠 정보 데이터 구조의 새 버전이 있습니다. 그러나 이전 버전은 계속 지원됩니다. Windows 7개 클라이언트와 상호 운용하기 위해 관리자는 이전 버전의 콘텐츠 정보 데이터 구조를 사용하도록 피어 배포 서비스를 구성할 수 있습니다.
콘텐츠 검색 소비자가 피어 배포 서비스에서 콘텐츠를 검색하려면 해당 콘텐츠와 연결된 게시된 콘텐츠 정보에 대한 액세스 권한을 제공해야 합니다. 콘텐츠를 게시하는 데 사용되는 피어 배포 서비스는 연결된 콘텐츠 정보를 제공할 수 있습니다. 소비자에게 콘텐츠 정보가 있으면 다른 피어 배포 API를 사용하여 피어 배포 서비스에서 콘텐츠를 요청할 수 있습니다. 피어 배포 서비스는 로컬 네트워크에서 콘텐츠를 검색하려고 시도합니다. 콘텐츠를 사용할 수 없는 경우 클라이언트 애플리케이션은 원본 서버에서 콘텐츠를 검색해야 합니다.
게시 제거 피어 배포 서비스에 콘텐츠를 게시한 애플리케이션의 경우 콘텐츠를 게시 취소할 수 있도록 PeerDistServerUnpublish 함수가 제공되었습니다. 콘텐츠가 게시 취소되면 로컬 피어 배포 서비스에서 해당 콘텐츠와 연결된 콘텐츠 정보를 더 이상 제공하지 않습니다.

비동기 완성

피어 배포 API는 비동기 API 모델을 지원하며, 결과적으로 피어 배포 API는 비동기 피어 배포 작업 완료를 처리하기 위한 신호 메커니즘으로 I/O 완료 포트 또는 이벤트를 사용할 수 있습니다. 두 메커니즘 중 하나에 대해 피어 배포는 OVERLAPPED 구조를 사용합니다. 일반적으로 피어 배포는 OVERLAPPED 구조체 및 클라이언트가 비동기 API 함수에 전달하는 out 매개 변수의 소유권을 사용합니다. 클라이언트는 특정 비동기 함수가 완료될 때까지 이러한 리소스에 액세스해서는 안됩니다. 비동기 함수가 완료되는 즉시 피어 배포 서비스는 이러한 리소스에 더 이상 액세스할 필요가 없으며 호출 애플리케이션이 적합할 때 다시 사용할 수 있습니다.

함수가 ERROR _ IO _ PENDING 이외의 오류 코드를 반환하는 경우 비동기 완료는 없습니다. ERROR _ IO _ PENDING 이외의 값이 반환되면 호출이 동기적으로 실패했습니다. 피어 배포 API가 ERROR _ IO _ PENDING 을 반환하는 경우 호출자는 비동기 완료를 기다려야 합니다.

비동기 완성의 오류 코드는 다음 두 가지 방법 중 하나로 검색할 수 있습니다.

I/O 완료 포트 기반 완료

사용자는 다음 API 함수에 완료 포트 핸들 및 완료 키를 제공하여 I/O 완료 포트 메커니즘을 호출합니다.

PeerDistRegisterForStatusChangeNotification
PeerDistServerPublishStream
PeerDistServerOpenContentInformation
PeerDistClientOpenContent

사용자가 CreateIoCompletionPort를 호출하여 완료 포트를 만듭니다. 이 완료 포트 핸들은 피어 배포 관련 작업뿐만 아니라 다른 비동기 I/O 작업에도 동시에 사용할 수 있습니다.

호출자는 GetQueuedCompletionStatus 함수를 사용하여 비동기 완료를 관리해야 합니다. 비동기 작업이 실패하면 GetQueuedCompletionStatus 함수는 FALSE를 반환하고 GetLastError는 적절한 오류 코드를 반환합니다. 오류 코드가 ERROR _ SUCCESS 이외의 경우 호출자는 OVERLAPPED 구조체의 모든 필드를 무시해야 합니다. GetQueuedCompletionStatus 함수가 TRUE 를 반환하면 비동기 작업이 성공합니다.

자세한 내용은 I/O 완료 포트 를 참조하세요.

이벤트 기반 완료

호출자가 유효한 이벤트 핸들을 OVERLAPPED 구조의 hEvent 필드로 설정하는 경우 피어 배포는 이를 사용하여 연결된 비동기 I/O 작업이 완료되었음을 알릴 수 있습니다.

스레드 호출자는 대기 함수 중 하나에서 OVERLAPPED 구조체의 수동 다시 설정 이벤트 개체에 대한 핸들을 지정하여 겹치는 작업을 관리할 수 있습니다. 이벤트 신호를 받은 후 호출자는 적절한 OVERLAPPED 구조체를 전달하는 PeerGetOverlappedResult를 호출해야 합니다. PeerGetOverlappedResult는 FALSE를 반환하고 호출자는 오류 코드를 검색하기 위해 GetLastError를 호출해야 합니다. 오류 코드가 ERROR _ SUCCESS 이외의 경우 호출자는 OVERLAPPED 구조체의 모든 필드를 무시해야 합니다. PeerGetOverlappedResult 함수가 TRUE 를 반환하면 비동기 작업이 성공합니다.

호출자가 이벤트와 함께 완료 포트를 제공하는 경우 이벤트는 완료 메커니즘으로 사용됩니다.

Windows 7: PeerGetOverlappedResult 대신 GetOverlappedResult함수를 사용합니다.

피어 배포 API 참조