Sto costruendo un client/server remoting .NET che trasmetterà migliaia di file, di varie dimensioni (da pochi byte a centinaia di MB) e vorrei un feedback sul metodo migliore per raggiungere questo obiettivo. Come la vedo io, ci sono un paio di opzioni:Il modo migliore per spostare file di varie dimensioni su reti lente usando .NET
- Serialize l'intero file nel mio oggetto i servizi remoti e trasmettere a tutti in una volta, indipendentemente dalle dimensioni. Questo probabilmente sarebbe il più veloce, ma un errore durante la trasmissione richiede che l'intero file sia ritrasmesso, senza alcun modo di riprendere.
- Se la dimensione del file è maggiore di qualcosa di piccolo (come 4KB), suddividerla in blocchi 4KB e remota, riassemblando il server. Oltre alla complessità di questo, è più lento a causa di continui viaggi di andata e ritorno, anche se un fallimento di un singolo pezzo non perde molto tempo.
- Includendo qualcosa come un server FTP o SFTP con la mia applicazione, il client informerà il server che sta iniziando a utilizzare il servizio remoto, caricherà il file, quindi utilizzerà il servizio remoto per notificare il completamento. Mi piacerebbe contenere tutto nella mia app invece di richiedere un servizio FTP separato, ma sono aperto a questa opzione se è necessario.
- Utilizzare una sorta di connessione TCP dichiarata o WPF o un altro metodo di trasmissione creato per gestire i guasti o in grado di eseguire una sorta di checkpoint/ripresa.
- Gli altri mi mancano?
Qual è il metodo di trasmissione più flessibile/affidabile? Non sono preoccupato per la velocità, ma per l'affidabilità, voglio che il file si muova, anche se lentamente. Poiché il client e il server saranno multi-thread, posso trasmettere più file contemporaneamente se la connessione lo consente.
Grazie per il vostro feedback - fornirò una taglia per ricevere alcune raccomandazioni sui modi in cui le persone lo realizzerebbero.
Non avevo considerato BITS, ma questa sembra essere la funzionalità esatta che sto cercando di replicare - non ha senso scriverlo quando già esiste. Sai se c'è un modo per fare un upload senza IIS? La mia ricerca iniziale (e incompleta) sembra dire che richiede IIS, non uno stop-show, ma speravo di non avere alcuna dipendenza esterna. – SqlRyan