A large client of mine wanted an automated way of delivery large files picture files throughout their network. After listening to their initial solution of FTP, I realized after some research that the Background Intelligent Transfer Service (BITS) would be a good alternative. I could programatically use BITS to transfer files automatically to the other computer using upload job types.
BITS has an advantage over FTP in several ways. The first word in the product says why it can be useful, Background. With this solution, BITS will use only the unused bandwidth for the particular machine it is hosted. This means ultimately that you will not face network load issues especially during mission critical operations.
This service also has an advantage as it uses HTTP instead of FTP to transfer files. This is an advantage in several regards. First, FTP uses clear text to transfer user names and passwords which can be problematic. BITS supports many types of authentication models such as Negotiate, NTLM, Digest, Basic and yes, even Passport. BITS also supports HTTPS which may add some latency and overhead, but for secure transmissions, it is a must.
The second advantage of BITS over FTP is that it is much harder to filter out FTP traffic at the firewall due to the client opening an arbitrary port to open an FTP session. FTP requires multiple TCP connections for directory listing, upload, download, etc. BITS traffic can be isolated to the standard ports of 80 and 443.
The third advantage of BITS over FTP is that BITS can suspend and resume jobs and begin again where it was suspended. The built in FTP functionality has no such built-in mechanism to support this functionality, although there are common extensions that will support it.
The second thing to do is familiarize ourselves with the BITS SDK which is available on the MSDN at this link:
Next lesson, we will talk more about the interfaces and classes involved.