Tutti dicono che .NET Remoting viene sostituito da WCF, ma mi chiedo quanto sia accurato. Non ho visto alcuna parola ufficiale secondo cui Remoting è stato deprecato e mi sembra che ci siano certamente scenari in cui il Remoting ha più senso di WCF. Nessuno degli oggetti o metodi relativi a Remoting è stato deprecato, anche nella versione 4.0 del framework. Sono anche consapevole del fatto che System.AddIn nei framework 3.5 e 4.0 utilizzi Remoting.
Qualcuno ha qualche parola ufficiale in contrario?
Nell'articolo, Scelta delle opzioni di comunicazione in .NET (per 3.0, poiché è l'ultima versione di quell'articolo), si afferma:
8 Comunicazioni tra domini applicativi
Se è necessario supportare la comunicazione tra oggetti in diversi domini dell'applicazione all'interno dello stesso processo, è necessario utilizzare .NET remoting.
Ora, questo, ovviamente, non è accurato, poiché WCF può certamente essere utilizzato per oltrepassare i confini del dominio app, ma fornisce la raccomandazione ufficiale per quello scenario?
Aggiornamento: ho inviato a Clemens Vasters (che faceva parte del team che possiede Remoting e WCF) questa domanda:
Clemens, mi risulta che tu faccia parte del team che possiede sia il controllo remoto che il wcf, e ho un paio di domande per le quali credo di dover andare alla fonte.
Innanzitutto, ho una domanda sul fatto che il telecomando stia andando via. Nello specifico, abbiamo un'applicazione piuttosto grande che utilizza ampiamente il telecomando per la comunicazione in-process tra domini di app e mi chiedevo se questo utilizzo del telecomando sia considerato "legacy". In tal caso, AppDomain.CreateInstance e gli amici verranno sostituiti con qualcos'altro?
Questa è la sua risposta:
Il servizio remoto fa parte di .Net Framework e come tale non scomparirà. COM è stato in Windows da Windows NT 3.5 / Windows 95 e non è andato via e non vedo che andrà via tanto presto.
Detto questo, l'investimento di sviluppo in Remoting è minimo. WCF è il successore di Remoting e sostituisce COM / DCOM per il codice gestito.
Per la comunicazione in-process, tra domini di app, il Remoting è il modo nativo di comunicazione di CLR. Se riscontri problemi di prestazioni durante il pompaggio di grandi quantità di dati o di molti messaggi in breve tempo, dovresti dare un'occhiata seria a WCF e NetNamedPipeBinding.