Informazioni sulla distribuzione peer

L'API Distribuzione peer, che supporta la funzionalità Cache di ramo in Windows 7, Windows Server 2008 R2, Windows 8 e Windows Server 2012 offre un set di API della piattaforma che possono aumentare la velocità di risposta di rete delle applicazioni centralizzate quando si accede da uffici remoti e aiutano a ridurre l'utilizzo complessivo della rete WAN (Wide Area Network) senza interferire con le tecnologie di sicurezza di rete.

Il sistema di distribuzione peer offre un set di API della piattaforma usate dagli editori che forniscono contenuto digitale e consumer che lo richiedono. Per distinguere facilmente questi ruoli, potrebbe essere più facile pensare al server di pubblicazione in un ruolo server e al consumer in un ruolo client. A parte questo, è importante ricordare che, a parte questi ruoli concettuali, il servizio Di distribuzione peer è un vero sistema peer, come indicato dalla possibilità per qualsiasi nodo di distribuzione peer di pubblicare e utilizzare contenuto digitale. Le API della piattaforma di distribuzione peer sono esposte agli editori e ai consumer da una libreria di importazione Win32 (PeerDist.Lib).

Il ciclo di vita del contenuto fornito da un server di pubblicazione e recuperato da un consumer con il servizio Di distribuzione peer è costituito dalle operazioni seguenti:

Descrizione
Pubblicazione contenuto La pubblicazione viene eseguita per produrre una descrizione del contenuto definita Informazioni sul contenuto o Informazioni sul contenuto per breve. Queste informazioni sul contenuto possono quindi essere usate da un'istanza del servizio Distribuzione peer per autenticare e ricompilare il contenuto. Quando il contenuto viene pubblicato da un'applicazione nel servizio Distribuzione peer, che è concettualmente un'operazione lato server, tale contenuto viene associato all'identità del server di pubblicazione, basata sul SID dell'utente associato al token di accesso al thread. Questa associazione viene eseguita per limitare l'accesso al contenuto da entità non autorizzate. Tuttavia, è importante notare che l'accesso alle informazioni sul contenuto equivale all'accesso al contenuto stesso, poiché le informazioni sul contenuto possono essere usate per ottenere il contenuto dai peer o da una cache ospitata.
È disponibile una nuova versione della struttura dei dati delle informazioni sul contenuto in Windows 8; tuttavia, la versione precedente è ancora supportata. Per interagire con i client Windows 7, un amministratore può configurare il servizio Distribuzione peer per usare la versione precedente della struttura dei dati delle informazioni sul contenuto.
Recupero contenuto Per recuperare il contenuto dal servizio Distribuzione peer, è necessario fornire l'accesso alle informazioni sul contenuto pubblicate associate a tale contenuto. Il servizio Di distribuzione peer usato per pubblicare il contenuto può fornire le informazioni sul contenuto associate. Una volta che il consumer dispone delle informazioni sul contenuto, è possibile usare altre API di distribuzione peer per richiedere contenuto dal servizio di distribuzione peer. Il servizio Distribuzione peer tenterà di recuperare il contenuto dalla rete locale. Se il contenuto non è disponibile, l'applicazione client è responsabile del recupero del contenuto dal server di origine.
Rimozione della pubblicazione Per le applicazioni che hanno pubblicato contenuto nel servizio Distribuzione peer, è stata fornita la funzione PeerDistServerUnpublish per consentire la pubblicazione del contenuto. Dopo che il contenuto non è stato pubblicato, il servizio distribuzione peer locale non fornirà più le informazioni sul contenuto associate a tale contenuto.

Completamento asincrono

L'API Distribuzione peer supporta un modello API asincrono e, di conseguenza, le API di distribuzione peer consentono l'uso di porte di completamento I/O o eventi come meccanismi di segnalazione per l'elaborazione dei completamento dell'operazione di distribuzione peer asincrona. Per entrambi i meccanismi, la distribuzione peer usa una struttura OVERLAPPED . In generale, la distribuzione peer accetta la proprietà di una struttura OVERLAPPED e qualsiasi parametro out passato dal client alle funzioni API asincrone. Il client non deve accedere a queste risorse fino al completamento della funzione asincrona specifica. Non appena le funzioni asincrone vengono completate, il servizio Distribuzione peer non richiede più l'accesso a queste risorse e può essere riutilizzato in quanto l'applicazione chiamante vede adatta.

Non sarà presente alcun completamento asincrono se la funzione restituisce codice di errore diverso da ERROR_IO_PENDING. La restituzione di un valore diverso da ERROR_IO_PENDING significa che la chiamata non è riuscita in modo sincrono. Se l'API di distribuzione peer restituisce ERROR_IO_PENDING, il chiamante deve attendere il completamento asincrono.

Il codice di errore del completamento asincrono può essere recuperato in uno dei due modi seguenti:

Completamento della porta di completamento di I/O

L'utente richiama il meccanismo di porta di completamento di I/O fornendo un handle di porta di completamento e una chiave di completamento alle funzioni API seguenti:

PeerDistRegisterForStatusChangeNotification
PeerDistServerPublishStream
PeerDistServerOpenContentInformation
PeerDistClientOpenContent

L'utente crea una porta di completamento chiamando CreateIoCompletionPort. Questo handle di porta di completamento può essere usato simultaneamente per altre operazioni di I/O asincrone e operazioni specifiche di distribuzione peer.

Il chiamante deve usare la funzione GetQueuedCompletionStatus per gestire il completamento asincrono. Se l'operazione asincrona ha esito negativo, la funzione GetQueuedCompletionStatus restituirà FALSE e GetLastError restituirà il codice di errore appropriato. Il chiamante deve ignorare tutti i campi della struttura OVERLAPPED se il codice di errore è diverso da ERROR_SUCCESS. L'operazione asincrona ha esito positivo se la funzione GetQueuedCompletionStatus restituisce TRUE.

Per altre informazioni, vedere Porte di completamento di I/O.

Completamento basato su eventi

Se il chiamante imposta un handle evento valido sul campo hEvent della struttura OVERLAPPED , la distribuzione peer lo usa per segnalare che l'operazione di I/O asincrona associata è stata completata.

Un chiamante thread può gestire operazioni sovrapposte specificando un handle per l'oggetto evento di reimpostazione manuale della struttura OVERLAPPED in una delle funzioni di attesa. Dopo che l'evento viene segnalato, il chiamante deve chiamare PeerGetOverlappedResult passando nella struttura OVERLAPPED appropriata. PeerGetOverlappedResult restituirà FALSE e il chiamante deve chiamare GetLastError per recuperare il codice di errore. Il chiamante deve ignorare tutti i campi della struttura OVERLAPPED se il codice di errore è diverso da ERROR_SUCCESS. L'operazione asincrona ha esito positivo se la funzione PeerGetOverlappedResult restituisce TRUE.

Se il chiamante fornisce una porta di completamento insieme a un evento, l'evento verrà usato come meccanismo di completamento.

Windows 7: Usare la funzione GetOverlappedResult anziché PeerGetOverlappedResult.

Informazioni di riferimento sulle API di distribuzione peer