피어 배포 정보

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

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

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

설명
콘텐츠 게시 게시는 콘텐츠 정보 또는 콘텐츠 정보라는 콘텐츠 에 대한 설명을 짧은 기간 동안 생성하기 위해 수행됩니다. 그런 다음 피어 배포 서비스의 instance 이 콘텐츠 정보를 사용하여 콘텐츠를 인증하고 다시 빌드할 수 있습니다. 애플리케이션에서 개념적으로 서버 쪽 작업인 피어 배포 서비스에 콘텐츠를 게시하면 해당 콘텐츠는 스레드 액세스 토큰과 연결된 사용자의 SID를 기반으로 하는 게시자 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 구조체의 수동 재설정 이벤트 개체에 대한 핸들을 지정하여 겹치는 작업을 관리할 수 있습니다. Event가 신호를 받은 후 호출자는 적절한 OVERLAPPED 구조를 전달하는 PeerGetOverlappedResult를 호출해야 합니다. PeerGetOverlappedResultFALSE 를 반환하고 호출자는 오류 코드를 검색하기 위해 GetLastError 를 호출해야 합니다. 오류 코드가 ERROR_SUCCESS 이외의 경우 호출자는 OVERLAPPED 구조체의 모든 필드를 무시해야 합니다. PeerGetOverlappedResult 함수가 TRUE를 반환하면 비동기 작업이 성공합니다.

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

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

피어 배포 API 참조