Informazioni sulla distribuzione peer

L'API di distribuzione peer, che supporta la funzionalità Branch Cache 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 sia dagli editori che forniscono contenuto digitale che consumer che lo richiedono. Per distinguere facilmente questi ruoli, può essere più semplice pensare al server di pubblicazione in un ruolo del 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 brevità. Queste informazioni sul contenuto possono quindi essere usate da un'istanza del servizio di distribuzione peer per autenticare e ricompilare il contenuto. Quando il contenuto viene pubblicato da un'applicazione nel servizio di distribuzione peer, che è concettualmente un'operazione sul lato server, tale contenuto viene associato all'identità Publisher, 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, ma la versione precedente è ancora supportata. Per interagire con Windows 7 client, un amministratore può configurare il servizio Di distribuzione peer per l'uso della versione precedente della struttura dei dati delle informazioni sul contenuto.
Recupero contenuto Affinché un consumer recuperi contenuto dal servizio di 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. Dopo che il consumer ha le informazioni sul contenuto, è possibile usare altre API di distribuzione peer per richiedere contenuto dal servizio di distribuzione peer. Il servizio di 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 di distribuzione peer, è stata fornita la funzione PeerDistServerUnpublish per consentire la pubblicazione del contenuto. Una volta che il contenuto non è stato pubblicato, il servizio di distribuzione peer locale non fornirà più le informazioni sul contenuto associate a tale contenuto.

Completamenti asincroni

L'API di 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 completamenti dell'operazione di distribuzione peer asincrona. Per entrambi i meccanismi, la distribuzione peer usa una struttura OVERLAPPED . In generale, la distribuzione peer acquisisce la proprietà di una struttura OVERLAPPED ed eventuali parametri out passati dal client alle funzioni API asincrone. Il client non deve accedere a queste risorse fino al completamento della funzione asincrona specifica. Non appena vengono completate le funzioni asincrone, il servizio di distribuzione peer non richiederà più l'accesso a queste risorse e potrebbe essere riutilizzato in quanto l'applicazione chiamante rileva le esigenze.

Se la funzione restituisce codice di errore diverso da ERROR_IO_PENDING, non sarà presente alcun completamento asincrono. La restituzione di un valore diverso da ERROR_IO_PENDING indica 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 basato su porta di I/O

L'utente richiama il meccanismo di porta di completamento 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 contemporaneamente per altre operazioni di I/O asincrone e per operazioni specifiche di distribuzione peer.

Il chiamante deve usare la funzione GetQueuedCompletionStatus per gestire il completamento asincrono. Se l'operazione asincrona non riesce, 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 I/O.

Completamento basato su eventi

Se il chiamante imposta un handle di 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 di 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 è stato 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