2010-07-02 13 views
9

Posso capire che WCF è in generale migliore di Remoting, ma i due mi sembrano molto diversi. MS rendono questa bella immagine per mostrare quanto grande WCF è (o forse come poveri gli altri tecnici sono per controllare una sola casella ciascuno): alt text http://i.msdn.microsoft.com/dynimg/IC371617.jpgWCF sostituisce davvero .NET Remoting?

Ma, WCF è centrata intorno SOA e non credo che sia corretto supponiamo che ogni applicazione in rete desideri per esporre i servizi.

Nel mio caso sto cercando modi per replicare oggetti tra due istanze di un'applicazione server su PC diversi. WCF sembra dare solo una versione moderna di COM ... ottenere un oggetto e chiamare metodi e chiama magicamente la versione sull'altro PC. Ma i Remoting sembravano fare qualcosa di completamente diverso e non sono chiaro perché fosse deprecato senza essere sostituito da una tecnologia simile.

Quindi, MS dichiara che il servizio di remoting è morto? O lo supportano ancora, riconoscendo che ha il suo posto insieme a WCF?

+0

Vedere http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated, Inoltre, è abbastanza semplice generare un endpoint WCF nell'app e inviare oggetti avanti e indietro. – nos

+0

Non sto dicendo che questo è un duplicato esatto, a causa della descrizione specifica della tua situazione. Ma (come nn pubblicato sopra) questa domanda discute se il remoting è deprecato http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ

+0

@nos, per inviare gli oggetti avanti e indietro hai ancora bisogno di un'API anche se mi piace newForumPos (ForumPost), ecc ... devi scrivere codice per trasferire gli oggetti oi loro campi piuttosto che farlo automaticamente in modo simile a come funziona XSTM (http://xstm.net/) –

risposta

6

Sostituisce .Net remoto. È possibile utilizzare un formattatore binario con un canale Tcp e ottenere la stessa esperienza del servizio remoto.

Per il tuo caso, il servizio remoto non sembra essere la scelta giusta. Se vuoi replicare oggetti, come farne copie in una posizione diversa, allora vuoi serializzarli e inviarli come un bundle (un "messaggio" nel gergo WCF) per essere caricato in un tipo (potrebbe essere lo stesso digitare nello stesso assembly, ma distribuito su un server diverso) sull'endpoint remoto. Questo è il punto in cui WCF eccelle. Remoting ti darebbe una connessione ad un oggetto "live" da un endpoint all'altro.

+0

Forse non capisco il remoting ... fa _replicare_ oggetti o mantenere una copia del server che è _accessed_ remotamente? –

+0

@John: né né - WCF si occupa di inviare messaggi serializzati - messaggi che sono solo dati, nessun comportamento/codice/metodi. A tale riguardo, sì, WCF non può sostituire il remoting in quanto non è un tipo di tecnologia "remote control objects" –

+3

@John - con .Net Remoting, è quest'ultimo: si accede allo stato di un oggetto da remoto e si effettuano solo le chiamate di marshalling dall'endpoint -to-end point. Se si desidera inviare l'oggetto effettivo, ciò che si desidera è più di qualcosa orientato al servizio, che serializza lo stato dell'oggetto e lo invia come messaggio da endpoint a endpoint. WCF può fare entrambe le cose, ma è più naturale inviare messaggi. Il motivo è che abbiamo imparato, tramite DCOM, che l'accesso trasparente allo stato dell'oggetto oltre i limiti è un cattivo progetto. – codekaizen