it-swarm.it

Qual è la scelta migliore per la comunicazione tra processi di .NET?

Dovrei usare Named Pipes o .NET Remoting per comunicare con un processo in esecuzione sul mio computer?

81
mrbradleyt

WCF è la scelta migliore. Supporta na serie di diversi meccanismi di trasporto ( inclusoNamedPipes ) e può essere completamente guidato dalla configurazione. Consiglio vivamente di dare un'occhiata a WCF.

Ecco un blog che fa un WCF vs confronto delle prestazioni da remoto .

Una citazione dal blog:

WCF e .NET Remoting sono davvero comparabili nelle prestazioni. Le differenze sono così piccole (misurando la latenza del client) che non importa quale sia un po 'più veloce. WCF ha tuttavia un throughput del server molto migliore rispetto a .NET Remoting. Se avessi avviato un progetto completamente nuovo, avrei scelto il WCF. Ad ogni modo il WCF fa molto di più di Remoting e per tutte quelle caratteristiche mi piace moltissimo.

Sezione MSDN per WCF

58
Eric Schoonover

Se si trova su una singola macchina, Named Pipes offre prestazioni migliori e può essere implementato con infrastruttura remota e WCF. Oppure puoi semplicemente usare direttamente System.IO.Pipes .

15
Mark Cidade

Se intendi la comunicazione tra processi, finora ho usato .NET Remoting senza alcun problema. Se i due processi si trovano sulla stessa macchina, la comunicazione è piuttosto veloce.

I Named Pipes sono sicuramente più efficienti, ma richiedono la progettazione di almeno un protocollo applicativo di base, che potrebbe non essere fattibile. Il telecomando consente di richiamare facilmente metodi remoti.

5
Dario Solera

Se si utilizza .NET Framework 3.0 o versione successiva, utilizzare WCF. Utilizzando WCF, è possibile utilizzare diversi binding in base al compromesso tra performance/interop/ecc. di cui hai bisogno.

Se le prestazioni non sono fondamentali e è necessario interagire con altre tecnologie dei servizi Web, sarà necessario utilizzare l'associazione WS-HTTP. Nel tuo caso, puoi usare WCF con un'associazione net-tcp o un'associazione named pipe. O dovrebbe funzionare.

La mia opinione personale è che l'approccio WCF è più pulito in quanto è possibile eseguire servizi basati su contratto e concentrarsi sui messaggi, non sugli oggetti (sto facendo una generalizzazione qui basata sui modelli di programmazione predefiniti di WCF/.NET Remoting). Non mi piace inviare oggetti attraverso il filo perché molte informazioni semantiche si perdono o non sono chiare. Quando tutto ciò che stai facendo è inviare un messaggio come se fossi con WCF, diventa più facile separare le tue preoccupazioni tra la comunicazione e le classi/infrastrutture di cui è composto un singolo nodo.

3
Jason Olson

Remoting in .NET Framework 2.0 fornisce canale IPC per la comunicazione tra processi all'interno della stessa macchina.

3
icelava

WCF offre anche flessibilità. Modificando solo alcune configurazioni (associazione) puoi avere lo stesso servizio su qualche altra macchina invece di IPC sulla stessa macchina. Pertanto il tuo codice rimane flessibile.

2
Vikram I Code

Il telecomando .Net non è un protocollo in sé e per sé. Ti permette di scegliere quale protocollo usare: SOAP, named pipe, ecc.

1
Joel Coehoorn

.net remoting è integrato in .net per eseguire la comunicazione interna del processo. Se lo usi, continueranno a supportare e possibilmente migliorarlo nelle versioni future. Le pipe nominate non ti promettono miglioramenti nelle versioni future di .net

0
kemiller2002