Background Intelligent Transfer Service (BITS)


 


BITS is Earth’s most widely used file transfer service, with more than 600 million unique users across the planet. It has shipped “in the box” since Windows XP and is used by numerous applications for large file transfers. Both uploads and downloads are supported. Its resilience is validated everyday as Windows & Microsoft update distributes software updates to millions of customers worldwide. BITS is “the” easiest way to reliably and politely transfer files over HTTP/HTTPS.


BITS asynchronously transfers files in the foreground or background (default) and automatically resumes file transfers after network disconnects and machine restarts. Background transfers use only idle network bandwidth in an effort to preserve the user’s interactive experience with other network applications, such as Internet Explorer. BITS does this by examining the network traffic, and using only the idle portion of the network bandwidth. BITS throttles its use of the bandwidth as the user increases or decreases their use of the bandwidth. BITS performs the transfers asynchronously, which means your application does not need to be running for BITS to perform the transfer.


Applications use the BITS application program interface (API) to create transfer jobs and to monitor the progress of jobs in the transfer queue. The BITS API is included in the Microsoft® Platform Software Development Kit (SDK). In Win7 BITS also provides a scriptable interface via PowerShell cmdlets.


 BITS users will greatly benefit from new features coming in Win7. Subsequent blog entries will be covering these features in more detail, but here is a teaser:


1.       BITS Compact Server: Easy to manage “lightweight” HTTP server, compliments BITS client to provide ubiquitous file transfers. Enables Admin’s to orchestrate secure file transfers remotely.


2.       BITS PowerShell Cmdlets: An in-box file transfer solution for PowerShell users. Provides a simple yet rich scripting interface to the BITS service.


3.       BITS Peercaching: Leverages the BranchCaching infrastructure to provide authenticated and authorized shared cached based content distribution.


4.       Network Bandwidth Management: Allows enterprises to more granularly allocate/schedule available network bandwidth to applications using BITS.


For more information about BITS please visit http://msdn.microsoft.com/en-us/library/aa362708.aspx


Vipul Bansal [MSFT] 

Comments (9)

  1. This is cool stuff! BITS PowerShell Cmdlets seems exiting.

  2. JTBS says:

    Thanks for all details. Quick question?

    Q1. Do you know if ClickOnce also uses BITS in background and there by getting most of the benefits that BITS provide. (I understand BITS is more powerful and not trying to say ClickOnce is better)

    Q2. If I want to do something very similar to Windows Update, Is BITS is the only component that I can re-use? Are there other libraries/tools that Microsoft will let us re-use. Because with BITS, we only get part of functionality [Mainly download] required for updating application. I am just wondering if there is any additional UI/Tools/Libraries that supports installation of downloaded components etc.

    Q3. Is it responsibility of developer to not to add a file to BITS job -if remote and local file versions are same OR does BITS job do any checking in this area?

  3. Abhang says:

    I have the exact same questons as JTBS. Since my application would have quite a few heavy dll’s, BITS is an excellent solution to use. If we could make the ClickOnce framework to download files using BITS it would be awesome.

  4. question on file verification says:

    If we are transferring an 80GB VHD (Virtual Hard Drive) from one Hyper-V node to another Hyper-V R2 node (using SCVMM 2008 R2) how can we be 100% absolutely certain the BITS transfer did not corrupt the VHD during the transfer. I looked into it and all i see is filesize and timestamp verifications are performed natively.

    Thanks,

  5. Drwfus says:

    How can BITS be made to download a file only if the version on the server is newer than the same file name in the download directory?

  6. mdelcerro says:

    I wrote a C++ program using the BITS API to download files from a server. It works on a public server (ftp.gnu.org) but I’m having problems downloading files from my company’s (intranet) Windows 2003 server(SP2). It errors when it tries to download a file: "URL does not exist on the server". I use an URL like: http://server_name.mycompany.com/mydir/myfile.txt”>http://server_name.mycompany.com/mydir/myfile.txt

    I installed IIS and BITS on the server and created a virtual directory for the web site. I have very little experience setting up web services so there’s probably some settings that still need to be configured.

    More hints: when I type http://ftp.gnu.org in a web brower I see the directory structure and files. But when I type http://server_name.mycompany.com in the browser I get an error.

    Any help would be greatly appreciated.

    Thanks,

    Mark (newbie)

  7. Sandeep says:

    I have a Question:

    I have a problem while using Background Intelligent Transfer Service (BITS). I have a code that Upload/download the file in virtual directory. I have tested that code in my local domain on IIS6 its working very fine but when I am trying to upload the file to the external network its not working its give the error “request URL not found on the server”, I am able to download from same external URL. I have also done the entire configuration in IIS like enable Upload using BITS Server Extension and create rule using WebDev. But I am still getting the same error. Please Help…

  8. Bish says:

    We have BITS configured background. I have a support group that needs to force updates from WSUS, but quicker than the general population BITS settings. Is there a way the support group can run the updates in the foreground, or without the throttle?

  9. JMH says:

    BITS is completely missing from Control Panel/Administrative Tools/Services on this Windows 7 computer, so no Windows updates can be downloaded or installed.  How can this be fixed?