Comunicazioni interprocesso

Il sistema operativo Windows fornisce meccanismi per facilitare la comunicazione e la condivisione dei dati tra le applicazioni. Collettivamente, le attività abilitate da questi meccanismi sono chiamate comunicazioni interprocesso (IPC). Alcune forme di IPC facilitano la divisione del lavoro tra diversi processi specializzati. Altre forme di IPC facilitano la divisione del lavoro tra i computer in una rete.

In genere, le applicazioni possono usare IPC classificati come client o server. Un client è un'applicazione o un processo che richiede un servizio da un'altra applicazione o processo. Un server è un'applicazione o un processo che risponde a una richiesta client. Molte applicazioni fungono sia da client che da server, a seconda della situazione. Ad esempio, un'applicazione per l'elaborazione di parole può fungere da client per richiedere una tabella di riepilogo dei costi di produzione da un'applicazione foglio di calcolo che funge da server. L'applicazione foglio di calcolo, a sua volta, può fungere da client per richiedere i livelli di inventario più recenti da un'applicazione di controllo dell'inventario automatizzato.

Dopo aver deciso che l'applicazione trarrà vantaggio da IPC, è necessario decidere quale dei metodi IPC disponibili usare. È probabile che un'applicazione usi diversi meccanismi IPC. Le risposte a queste domande determinano se un'applicazione può trarre vantaggio usando uno o più meccanismi IPC.

  • L'applicazione deve essere in grado di comunicare con altre applicazioni in esecuzione in altri computer in una rete o è sufficiente per l'applicazione comunicare solo con le applicazioni nel computer locale?
  • L'applicazione deve essere in grado di comunicare con le applicazioni in esecuzione in altri computer che potrebbero essere in esecuzione in sistemi operativi diversi ,ad esempio Windows o UNIX a 16 bit?
  • L'utente dell'applicazione deve scegliere le altre applicazioni con cui comunica l'applicazione o può trovare implicitamente i partner che collaborano con l'applicazione?
  • L'applicazione deve comunicare con molte applicazioni diverse in modo generale, ad esempio consentire operazioni taglia e incolla con qualsiasi altra applicazione o se i requisiti di comunicazione devono essere limitati a un set limitato di interazioni con altre applicazioni specifiche?
  • Le prestazioni sono un aspetto critico dell'applicazione? Tutti i meccanismi IPC includono una certa quantità di overhead.
  • L'applicazione deve essere un'applicazione GUI o un'applicazione console? Alcuni meccanismi IPC richiedono un'applicazione GUI.

I meccanismi IPC seguenti sono supportati da Windows:

Uso degli Appunti per IPC

Gli Appunti fungono da deposito centrale per la condivisione dei dati tra le applicazioni. Quando un utente esegue un'operazione di taglio o copia in un'applicazione, l'applicazione inserisce i dati selezionati negli Appunti in uno o più formati standard o definiti dall'applicazione. Qualsiasi altra applicazione può quindi recuperare i dati dagli Appunti, scegliendo tra i formati disponibili che riconosce. Gli Appunti sono un mezzo di scambio molto debole, in cui le applicazioni devono solo concordare il formato dei dati. Le applicazioni possono risiedere nello stesso computer o in computer diversi in una rete.

Punto chiave: Tutte le applicazioni devono supportare gli Appunti per i formati di dati che comprendono. Ad esempio, un editor di testo o un elaboratore di testi deve essere almeno in grado di produrre e accettare dati degli Appunti in formato testo puro. Per altre informazioni, vedere Appunti.

Uso di COM per IPC

Le applicazioni che usano OLE gestiscono documenti composti, ovvero documenti costituiti da dati provenienti da un'ampia gamma di applicazioni diverse. OLE offre servizi che semplificano la chiamata delle applicazioni ad altre applicazioni per la modifica dei dati. Ad esempio, un elaboratore di parole che usa OLE può incorporare un grafico da un foglio di calcolo. L'utente potrebbe avviare automaticamente il foglio di calcolo dall'interno del word processor scegliendo il grafico incorporato per la modifica. OLE si occupa dell'avvio del foglio di calcolo e della presentazione del grafico per la modifica. Quando l'utente chiude il foglio di calcolo, il grafico verrà aggiornato nel documento originale del elaboratore di testo. Il foglio di calcolo sembra essere un'estensione del word processor.

La base di OLE è il Component Object Model (COM). Un componente software che utilizza COM può comunicare con un'ampia gamma di altri componenti, anche quelli che non sono ancora stati scritti. I componenti interagiscono come oggetti e client. COM distribuito estende il modello di programmazione COM in modo che funzioni in una rete.

Punto chiave: OLE supporta documenti composti e consente a un'applicazione di includere dati incorporati o collegati che, quando scelto, avvia automaticamente un'altra applicazione per la modifica dei dati. In questo modo l'applicazione può essere estesa da qualsiasi altra applicazione che usa OLE. Gli oggetti COM consentono l'accesso ai dati di un oggetto tramite uno o più set di funzioni correlate, note come interfacce. Per altre informazioni, vedere COM e ActiveX Object Services.

Uso della copia dei dati per IPC

La copia dei dati consente a un'applicazione di inviare informazioni a un'altra applicazione usando il messaggio WM_COPYDATA . Questo metodo richiede la cooperazione tra l'applicazione di invio e l'applicazione ricevente. L'applicazione ricevente deve conoscere il formato delle informazioni e essere in grado di identificare il mittente. L'applicazione di invio non può modificare la memoria a cui fanno riferimento i puntatori.

Punto chiave: La copia dei dati può essere usata per inviare rapidamente informazioni a un'altra applicazione tramite la messaggistica di Windows. Per altre informazioni, vedere Copia dati.

Uso di DDE per IPC

DDE è un protocollo che consente alle applicazioni di scambiare dati in diversi formati. Le applicazioni possono usare DDE per scambi di dati una tantum o per scambi in corso in cui le applicazioni si aggiornano l'una all'altra man mano che diventano disponibili nuovi dati.

I formati di dati usati da DDE sono gli stessi usati dagli Appunti. DDE può essere considerato come un'estensione del meccanismo degli Appunti. Gli Appunti vengono quasi sempre usati per una risposta monouso a un comando utente, ad esempio scegliendo il comando Incolla da un menu. DDE viene in genere avviato anche da un comando utente, ma spesso continua a funzionare senza ulteriori interazioni dell'utente. È anche possibile definire formati di dati DDE personalizzati per IPC per scopi speciali tra applicazioni con requisiti di comunicazione più strettamente associati.

Gli scambi DDE possono verificarsi tra applicazioni in esecuzione nello stesso computer o in computer diversi in una rete.

Punto chiave: DDE non è altrettanto efficiente quanto le tecnologie più recenti. Tuttavia, è comunque possibile usare DDE se altri meccanismi IPC non sono adatti o se è necessario interfacciarsi con un'applicazione esistente che supporta solo DDE. Per altre informazioni, vedere Dynamic Data Exchange e Dynamic Data Exchange Management Library.

Uso di un mapping di file per IPC

Il mapping dei file consente a un processo di considerare il contenuto di un file come se fosse un blocco di memoria nello spazio indirizzi del processo. Il processo può usare semplici operazioni di puntatore per esaminare e modificare il contenuto del file. Quando due o più processi accedono allo stesso mapping di file, ogni processo riceve un puntatore alla memoria nel proprio spazio indirizzi che può usare per leggere o modificare il contenuto del file. I processi devono usare un oggetto di sincronizzazione, ad esempio un semaforo, per evitare il danneggiamento dei dati in un ambiente multitasking.

È possibile usare un caso speciale di mapping dei file per fornire la memoria condivisa denominata tra i processi. Se si specifica il file di scambio di sistema durante la creazione di un oggetto di mapping di file, l'oggetto di mapping file viene considerato come blocco di memoria condiviso. Altri processi possono accedere allo stesso blocco di memoria aprendo lo stesso oggetto di mapping file.

Il mapping dei file è abbastanza efficiente e fornisce anche attributi di sicurezza supportati dal sistema operativo che consentono di evitare danneggiamenti non autorizzati dei dati. Il mapping dei file può essere usato solo tra processi in un computer locale; non può essere usata in rete.

Punto chiave: Il mapping dei file è un modo efficiente per due o più processi nello stesso computer per condividere i dati, ma è necessario fornire la sincronizzazione tra i processi. Per altre informazioni, vedere Mapping esincronizzazione dei file.

Uso di mailslot per IPC

I mailslot forniscono comunicazioni unidirezionale. Qualsiasi processo che crea un mailslot è un server mailslot. Altri processi, denominati client mailslot, inviano messaggi al server mailslot scrivendo un messaggio nel relativo mailslot. I messaggi in arrivo vengono sempre accodati alla mailslot. Mailslot salva i messaggi fino a quando il server mailslot non li ha letti. Un processo può essere sia un server mailslot che un client mailslot, quindi la comunicazione bidirezionale è possibile usando più mailslot.

Un client mailslot può inviare un messaggio a un mailslot nel computer locale, a un mailslot in un altro computer o a tutti i mailslot con lo stesso nome in tutti i computer di un dominio di rete specificato. I messaggi trasmessi a tutti i mailslot in un dominio non possono essere più di 400 byte, mentre i messaggi inviati a un singolo mailslot sono limitati solo dalla dimensione massima del messaggio specificata dal server mailslot al momento della creazione del mailslot.

Punto chiave: Mailslots offre un modo semplice per l'invio e la ricezione di messaggi brevi da parte delle applicazioni. Offrono anche la possibilità di trasmettere messaggi in tutti i computer in un dominio di rete. Per altre informazioni, vedere Mailslots.

Uso di pipe per IPC

Esistono due tipi di pipe per la comunicazione bidirezionale: pipe anonime e named pipe. Le pipe anonime consentono ai processi correlati di trasferire le informazioni tra loro. In genere, viene usata una pipe anonima per reindirizzare l'input standard o l'output di un processo figlio in modo che possa scambiare dati con il processo padre. Per scambiare dati in entrambe le direzioni (operazione duplex), è necessario creare due pipe anonime. Il processo padre scrive i dati in una pipe usando il relativo handle di scrittura, mentre il processo figlio legge i dati da tale pipe usando il relativo handle di lettura. Analogamente, il processo figlio scrive i dati nell'altra pipe e il processo padre legge da esso. Le pipe anonime non possono essere usate in rete né tra processi non correlati.

Le named pipe vengono usate per trasferire dati tra processi non correlati e tra processi in computer diversi. In genere, un processo del server named pipe crea una named pipe con un nome noto o un nome che deve essere comunicato ai client. Un processo client named-pipe che conosce il nome della pipe può aprire l'altra estremità, soggetto alle restrizioni di accesso specificate dal processo del server named-pipe. Dopo che il server e il client sono connessi alla pipe, possono scambiare dati eseguendo operazioni di lettura e scrittura sulla pipe.

Punto chiave: Le pipe anonime offrono un modo efficiente per reindirizzare l'input standard o l'output ai processi figlio nello stesso computer. Le named pipe forniscono una semplice interfaccia di programmazione per il trasferimento di dati tra due processi, indipendentemente dal fatto che risiedano nello stesso computer o in rete. Per altre informazioni, vedere Pipe.

Uso di RPC per IPC

RPC consente alle applicazioni di chiamare le funzioni in remoto. Pertanto, RPC semplifica la chiamata di una funzione a IPC. RPC opera tra processi in un singolo computer o in computer diversi in una rete.

La rpc fornita da Windows è conforme a Open Software Foundation (OSF) Distributed Computing Environment (DCE). Ciò significa che le applicazioni che usano RPC sono in grado di comunicare con le applicazioni in esecuzione con altri sistemi operativi che supportano DCE. RPC supporta automaticamente la conversione dei dati per tenere conto di architetture hardware diverse e per l'ordinamento dei byte tra ambienti diversi.

I client e i server RPC sono strettamente associati, ma mantengono comunque prestazioni elevate. Il sistema usa ampiamente RPC per facilitare una relazione client/server tra parti diverse del sistema operativo.

Punto chiave: RPC è un'interfaccia a livello di funzione, con supporto per la conversione automatica dei dati e per le comunicazioni con altri sistemi operativi. Usando RPC, è possibile creare applicazioni distribuite strettamente associate ad alte prestazioni. Per altre informazioni, vedere Componenti RPC Microsoft.

Uso di Windows Sockets per IPC

Windows Sockets è un'interfaccia indipendente dal protocollo. Sfrutta le funzionalità di comunicazione dei protocolli sottostanti. In Windows Sockets 2, un handle socket può essere usato facoltativamente come handle di file con le funzioni di I/O standard del file.

Windows Sockets si basa sui socket diffusi per la prima volta da Berkeley Software Distribution (BSD). Un'applicazione che usa Windows Sockets può comunicare con altre implementazioni socket su altri tipi di sistemi. Tuttavia, non tutti i provider di servizi di trasporto supportano tutte le opzioni disponibili.

Punto chiave: Windows Sockets è un'interfaccia indipendente dal protocollo in grado di supportare le funzionalità di rete correnti ed emergenti. Per altre informazioni, vedere Windows Sockets 2.