Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Background

I have recently been tasked with designing a rebuild of an existing .NET web application that currently uses a third-party company to handle large file transfers (as big as 50Gb).

Currently, the .NET app depends on a .JAR (Java Applet) provided by this third-party which is called up inside of an iFrame and exposes the appropriate file-system interaction for selecting entire directories for upload and so forth.

I realize that so far all of this is possible using some combination of .NET networking classes (ftp) and Flash or Silverlight for client access.

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. I have also been told that the third-party tool suite allows the IT folks to throttle bandwith (I don't even know what that means) and do a couple of other cool things.

Question

Assuming that we will use the latest version of C# and and the .NET framework (4.0), is it reasonably possible to replicate this UDP-based behavior? By reasonable, I mean could it be accomplished in less than, say, 240 dev hours.

Please note that the rebuilt app will ideally use all Microsoft technologies (including Silverlight for client access) and will run on Azure.

share|improve this question
1  
can you list the name of this third party app? like svick i have my doubts what you have been told is completely accurate. the easiest solution is to ask if that company makes a .net version though. –  Ryathal Jan 26 '12 at 19:15
    
Ask the "IT" folks what they mean by throttle bandwidth. The fact you don't know means we cannot use that part of the background information in any answer we provide. –  Ramhound Jan 26 '12 at 20:21
    
The third party is Signiant. signiant.com –  Matthew Patrick Cashatt Jan 26 '12 at 22:17
    
@Ramhound--I can ask them, but honestly, I don't know that they can explain it. It seems to me to be more of a turf thing--"we already bought into this vendor so that's what you will use" and that's fair enough. The difference now is that I have been approached at a higher level and asked, "is this possible in .NET alone?". I should have more fully baked my question before asking, however, and I am doing some reading into the subject now to better educate myself. Thanks again! –  Matthew Patrick Cashatt Jan 26 '12 at 22:20

2 Answers 2

up vote 5 down vote accepted

Yes, .Net fully supports UDP. You can create a UDP Socket and then wrap it in a 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.

That doesn't make any sense. For example HTTP, supports this too. And since it seems they are using some custom protocol over UDP, a custom protocol over, say, TCP could achieve the same effect too. There is nothing special about UDP in this regard.

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

This really sounds like it's some custom protocol. We can't tell you how hard that will be, because we don't know anything about it – i.e. how complex it is, how well documented it is, etc.

share|improve this answer
    
Fair enough. I knew I was being a bit vague which merely represents how much I don't know about the subject matter. I typically only deal with transfer of small files which is a piece of cake. Regardless, this answers my question. I will be looking into TCP vs HTTP vs UDP and also try to get a better feel for what this custom console is. You guys might hear more about this. THANK YOU! –  Matthew Patrick Cashatt Jan 26 '12 at 19:16

Disclaimer: I work for a company which produces UDP file transfer software, probably a competitor of the maker of the UDP plug-in you talk about.

Yes it is possible to build a UDP file transfer application using C#, but no it is not possible to do it well within 240 developer hours.

UDP/IP involves placing nearly raw datagrams onto the network wire. Things you take for granted with TCP/IP, like making sure the datagram gets there, avoiding duplicates, keeping messages in order, making sure you don't send data too fast or too slow, all have to be done by you.

UDP based file transfer solutions are becoming very popular because of the opportunity to develop all of the transport functionality from scratch, thereby avoiding a lot of the problems inherent in TCP. UDP is simply a blank slate upon which one can create a better (or worse) solution.

Throttling simply means making sure that the data rate does not exceed some set value. That's actually pretty easy by itself. All UDP transport solutions that I know of will do that.

Making sure that the network can actually handle going that fast is much harder and is a key differentiator amongst the various UDP solutions out there. Cramming too much data into a network path, even for a moment, can create huge disruptions. Setting a throttle limit is the simplest way to avoid that, but it only works if you know in advance what the network capacity happens to be.

share|improve this answer
    
+1, rolling your own WAN transfer utility not easy –  Wyatt Barnett Jan 31 '12 at 19:24

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.