Domanda

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

È stato utile?

Soluzione

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

Ecco un blog che fa a Confronto delle prestazioni di WCF e servizi remoti.

Una citazione dal blog:

WCF e .NET Remoting sono davvero comparabili in termini di prestazioni.Le differenze sono così piccole (misurando la latenza del client) che non importa quale sia un po' più veloce.WCF tuttavia ha una velocità effettiva del server molto migliore rispetto a .NET Remoting.Se dovessi iniziare un progetto completamente nuovo, sceglierei il WCF.Ad ogni modo, il WCF fa molto di più che la comunicazione remota e per tutte queste funzionalità lo adoro.

Sezione MSDN per WCF

Altri suggerimenti

Se si trova su una singola macchina, Named Pipes offre prestazioni migliori e può essere implementato con infrastruttura di teleremotazione così come il WCF.Oppure puoi semplicemente usarlo direttamente System.IO.Pipes.

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

Le Named Pipes sono sicuramente più efficienti, ma richiedono la progettazione almeno di un protocollo applicativo di base, il che potrebbe non essere fattibile.La gestione remota consente di richiamare facilmente metodi remoti.

La gestione remota in .NET Framework 2.0 fornisce il Canale IPC per la comunicazione tra processi all'interno della stessa macchina.

Se utilizzi .NET Framework 3.0 o versioni successive, utilizzerei WCF.Utilizzando WCF, è possibile utilizzare associazioni diverse a seconda del compromesso tra prestazioni/interoperabilità/ecc.di cui hai bisogno.

Se le prestazioni non sono critiche e hai bisogno dell'interoperabilità con altre tecnologie di servizi Web, ti consigliamo di utilizzare l'associazione WS-HTTP.Nel tuo caso, puoi utilizzare WCF con un'associazione net-tcp o un'associazione denominata pipe.Entrambi dovrebbero 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 (qui sto facendo una generalizzazione basata sui modelli di programmazione predefiniti di WCF/.NET Remoting).Non mi piace mandare oggetti attraverso il filo perché molte informazioni semantiche vanno perse o non sono chiare.Quando tutto ciò che stai facendo è inviare un messaggio come con WCF, diventa più semplice separare le tue preoccupazioni tra la comunicazione e le classi/infrastruttura di cui è composto un singolo nodo.

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

La comunicazione remota .Net non è un protocollo in sé e per sé.Ti consente di scegliere quale protocollo utilizzare:SOAP, pipe nominate, ecc.

La comunicazione remota .net è integrata in .net per eseguire la comunicazione del processo interno.Se lo usi, continueranno a supportarlo e possibilmente a migliorarlo nelle versioni future.Le pipe denominate non ti promettono miglioramenti nelle versioni future di .net

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top