.NET Remoting è davvero deprecato?

Tutti dicono che .NET Remoting è stato sostituito da WCF, ma mi chiedo quanto sia preciso. Non ho visto alcuna parola ufficiale che Remoting sia stato deprecato, e mi sembra che ci siano certamente degli scenari in cui il Remoting ha più senso della WCF. Nessuno degli oggetti o metodi correlati a Remoting è stato deprecato, anche nella versione 4.0 del framework. Inoltre, mi risulta che System.AddIn nei framework 3.5 e 4.0 utilizzi i servizi remoti.

Qualcuno ha qualche parola ufficiale in contrario?

Nell’articolo, Scelta delle opzioni di comunicazione in .NET (per 3.0, poiché questa è l’ultima versione di quell’articolo), afferma:

8 Comunicazioni di domini cross-application

Se è necessario supportare la comunicazione tra oggetti in domini applicativi diversi all’interno dello stesso processo, è necessario utilizzare il servizio remoto .NET.

Ora, questo, ovviamente, non è accurato, dato che WCF può certamente essere usato per attraversare i confini dell’appodino, ma sta dando la raccomandazione ufficiale per quello scenario?

Aggiornamento: Ho inviato Clemens Vasters (che era nella squadra che possiede Remoting e WCF) questa domanda:

Clemens, capisco che tu sia nella squadra che possiede sia remoting che wcf, e ho un paio di domande che credo debbano andare alla fonte.

Per prima cosa, ho una domanda sul fatto che la comunicazione remota stia andando via. Nello specifico, abbiamo un’applicazione piuttosto grande che utilizza ampiamente il servizio di remoting per le comunicazioni cross-app in-process in-process e mi chiedevo se questo uso di remote sia considerato “legacy”. In tal caso, AppDomain.CreateInstance e gli amici saranno sostituiti con qualcos’altro?

Questa è la sua risposta:

Il servizio remoto è parte del .Net Framework e come tale non sta andando via. COM è stato in Windows da Windows NT 3.5 / Windows 95 e non è andato via e non vedo che andare via in qualunque momento presto, sia.

Detto questo, c’è un investimento di sviluppo molto basso in Remoting. WCF è il successore di Remoting e sostituisce COM / DCOM per il codice gestito.

Per la comunicazione in-process, cross-appdomain Remoting è il modo nativo di comunicazione del CLR. Se si riscontrano problemi di prestazioni che pompano grandi quantità di dati o moltissimi messaggi in breve tempo, si dovrebbe dare un’occhiata seria a WCF e NetNamedPipeBinding.

Definirla una tecnologia legacy è una descrizione più accurata.

http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx

Questo argomento è specifico per una tecnologia legacy che viene mantenuta per compatibilità con le versioni precedenti e non è consigliata per nuovi sviluppi. Le applicazioni distribuite dovrebbero ora essere sviluppate utilizzando Windows Communication Foundation (WCF).

Aggiornamento: WCF non distingue tra inter / intra / process / inter / intra-appdomain. Se si utilizza la comunicazione a macchina singola in WCF, si utilizzano pipe denominate: l’utilizzo di tale funzione dovrebbe fornire buone prestazioni in quasi tutti gli scenari realistici.

Per un confronto delle prestazioni di varie tecnologie di comunicazione distribuita, vedere qui .

Sì. Il servizio remoto è deprecato … ed è ufficiale da Microsoft. Ecco il link:

Remoting .NET

La prima riga nell’articolo dice in grassetto:

Questo argomento è specifico per una tecnologia legacy che viene mantenuta per compatibilità con le versioni precedenti e non è consigliata per nuovi sviluppi. Le applicazioni distribuite dovrebbero ora essere sviluppate utilizzando Windows Communication Foundation (WCF).

Pensavo che la verbosità fosse “deprecata” ma a quanto pare si riferiscono ad essa come “legacy”

Clemens Vasters, il responsabile tecnico per Microsoft .NET Service Bus (che significa sia Remoting che WCF) parla di WCF e di Remoting in questo post sul forum . Per riassumere il post finisce per raccomandare WCF su Remoting.

Non sono sicuro che .NET 4.0 utilizzi i servizi remoti internamente ma potresti provare a inviare a Clemens la domanda … Sono certo che conosce la risposta.

Penso che ora (2015) sia abbastanza chiaro anche per i domini cross-application: https://msdn.microsoft.com/en-us/library/vstudio/ms180984(v=vs.100).aspx

Remoting Cross AppDomains Questo argomento è specifico di una tecnologia legacy che viene mantenuta per compatibilità con le versioni precedenti delle applicazioni esistenti e non è consigliata per nuovi sviluppi. Le applicazioni distribuite dovrebbero ora essere sviluppate utilizzando Windows Communication Foundation (WCF).

Quindi WCF dovrebbe essere usato anche per domini cross-application.