È possibile integrare il trasferimento di file UDP in un'applicazione Web .NET?

2

Sfondo

Recentemente mi è stato affidato il compito di progettare una ricostruzione di un'applicazione Web .NET esistente che attualmente utilizza una società di terze parti per gestire trasferimenti di file di grandi dimensioni (fino a 50 GB).

Attualmente, l'app .NET dipende da un .JAR (Java Applet) fornito da questa terza parte che viene richiamato all'interno di un iFrame e espone l'interazione del file system appropriata per la selezione di intere directory per il caricamento e così via.

Mi rendo conto che finora tutto ciò è possibile utilizzando una combinazione di classi di rete .NET (ftp) e Flash o Silverlight per l'accesso client.

Mi è stato detto che la ragione per cui il plug-in di terze parti è così speciale è che usa il protocollo UDP in modo tale che se un upload o un download viene interrotto, può essere ripreso più avanti nel punto in cui era stato interrotto. Mi è stato anche detto che la suite di strumenti di terze parti consente alla gente dell'IT di rallentare la larghezza di banda (non so nemmeno cosa significhi) e fare un paio di altre cose interessanti.

Domanda

Supponendo che useremo l'ultima versione di C # e .NET Framework (4.0), è ragionevolmente possibile replicare questo comportamento basato su UDP? In termini ragionevoli, intendo dire che potrebbe essere realizzato in meno di, ad esempio, 240 ore di sviluppo.

Nota che l'app ricostruita utilizzerà idealmente tutte le tecnologie Microsoft (incluso Silverlight per l'accesso client) e verrà eseguita su Azure.

    
posta Matt Cashatt 26.01.2012 - 19:37
fonte

2 risposte

5

Sì, .Net supporta pienamente UDP. Puoi creare un UDP Socket e quindi racchiuderlo in un NetworkStream .

I have been told that the reason that the third-party plugin is so special is that it uses UDP protocol so that if an upload or download is interrupted, it can be resumed later right where it left off.

Questo non ha alcun senso. Ad esempio HTTP, supporta anche questo. E poiché sembra che stiano usando un protocollo personalizzato su UDP, un protocollo personalizzato su, per esempio, TCP potrebbe ottenere lo stesso effetto. A questo proposito, non c'è niente di speciale in UDP.

I have also been told that the third-party tool suite allows the IT folks to […] do a couple of other cool things.

Questo suona davvero come se fosse un protocollo personalizzato. Non possiamo dirvi quanto sarà difficile, perché non ne sappiamo nulla - cioè quanto sia complesso, quanto sia ben documentato, ecc.

    
risposta data 26.01.2012 - 20:02
fonte
5

Disclaimer: lavoro per un'azienda che produce software di trasferimento file UDP, probabilmente un concorrente del produttore del plug-in UDP di cui si parla.

Sì, è possibile creare un'applicazione di trasferimento file UDP usando C #, ma non è possibile farlo bene entro 240 ore di sviluppo.

UDP / IP comporta l'immissione di datagrammi quasi grezzi sul cavo di rete. Cose che date per scontato con TCP / IP, come assicurarsi che il datagramma arrivi, evitare duplicati, tenere i messaggi in ordine, assicurarvi di non inviare dati troppo veloci o troppo lenti, tutto deve essere fatto da voi.

Le soluzioni di trasferimento file basate su UDP stanno diventando molto popolari a causa dell'opportunità di sviluppare tutte le funzionalità di trasporto da zero, evitando in tal modo molti dei problemi inerenti al TCP. UDP è semplicemente una lista vuota su cui è possibile creare una soluzione migliore (o peggiore).

Throttling significa semplicemente assicurarsi che la velocità dei dati non superi il valore impostato. Questo è in realtà abbastanza semplice da solo. Tutte le soluzioni di trasporto UDP che conosco lo faranno.

Garantire che la rete sia in grado di gestire la velocità è molto più difficile ed è un elemento chiave di differenziazione tra le varie soluzioni UDP disponibili. Cramming troppi dati in un percorso di rete, anche per un momento, può creare enormi interruzioni. Impostare un limite di accelerazione è il modo più semplice per evitarlo, ma funziona solo se sai in anticipo quale sarà la capacità della rete.

    
risposta data 31.01.2012 - 19:59
fonte

Leggi altre domande sui tag