Condividi tramite


Servizi di serializzazione

Microsoft RPC supporta due metodi per la codifica e la decodifica dei dati, denominati collettivamente serializzazione dei dati. La serializzazione indica che i dati vengono sottoposto a marshalling e non sincronizzati dai buffer che si controllano. Ciò è diverso dall'uso tradizionale di RPC, in cui gli stub e la libreria di runtime RPC hanno il controllo completo dei buffer di marshalling e il processo è trasparente. È possibile usare il buffer per l'archiviazione su supporti permanenti, crittografia e così via. Quando si codificano i dati, gli stub RPC esezionano i dati in un buffer e passano il buffer all'utente. Quando si decodificano i dati, si fornisce un buffer di marshalling con i dati in esso contenuti e i dati non sono separati dal buffer alla memoria. È possibile serializzare in base a una routine o a un tipo.

Nota

Il termine pickling viene comunemente usato tra gli sviluppatori per descrivere la serializzazione. Gli esempi di Windows SDK contengono infatti una directory denominata pickle che mantiene i programmi di esempio di serializzazione RPC.

 

La serializzazione sfrutta i meccanismi RPC per il marshalling e l'annullamento del marshalling dei dati per altri scopi. Ad esempio, anziché usare diverse operazioni di I/O per serializzare un gruppo di oggetti in un flusso, un'applicazione può ottimizzare le prestazioni serializzando diversi oggetti di tipi diversi in un buffer e quindi scrivendo l'intero buffer in una singola operazione. Le funzioni che modificano gli handle di serializzazione sono indipendenti dal tipo di serializzazione in uso.

Come altro esempio, se è necessario usare un meccanismo di trasporto di rete oltre a RPC, ad esempio Microsoft Windows Sockets (Winsock). Con la serializzazione RPC, il programma può effettuare chiamate alle funzioni che effettuano il marshalling dei dati in buffer e quindi trasmettono questi dati usando Winsock. Quando l'applicazione riceve dati, può usare il meccanismo di serializzazione RPC per annullare ilmarshal dei dati dai buffer riempiti dalle routine Winsock. Ciò offre molti dei vantaggi delle applicazioni in stile RPC e allo stesso tempo consente di usare meccanismi di trasporto non RPC.

È anche possibile usare la serializzazione per scopi non correlati alle comunicazioni di rete. Ad esempio, quando si usano le funzioni di codifica RPC per effettuare il marshalling dei dati in un buffer, è possibile archiviarlo in un file da usare da un'altra applicazione. È anche possibile crittografarla. È anche possibile usarlo per archiviare una rappresentazione indipendente dal sistema operativo e hardware dei dati in un database.

Gli argomenti seguenti illustrano i servizi di serializzazione supportati da Microsoft RPC: