About the author

J Sawyer is a developer based in Houston, TX and loves to write code, especially ASP.NET and other web-related stuff. He is currently working on implementing Team Foundation Server at a large energy company in Houston and is loving that too.

He also loves to ride his Yamaha FZ1. And sometimes his Ninja 650.

But he doesn't code and ride at the same time. That would be bad.

My First CodePlex Project

October 30, 2007 2:06 PM
No, not the first one I've been involved with, but the first one that I started.  You can find it here: http://www.codeplex.com/BITSDownloadMgr
It's call BITS Download Manager.  It was a tool that I wrote some time ago to download large files over a VPN connection and have shared it inside of Microsoft for a couple of years as "JarJar BITS" (don't ask).  As the name implies, it uses BITS (Background Intelligent Transfer Service) to do the downloads.  This gives you network-friendly resumable file copies ... definitely better than Windows Explorer. 
Wrapping the BITS API in .NET was something of a challenge.  I didn't use TLBIMP because the RCW that it generated was somewhat "messy" (gets and sets instead of properties, whacked data types and marshalling, etc) ... it seems that the BITS API isn't very friendly with that tool.  So I used the hand-crafted RCW from the original App Updater block and made additional modifications to it for newer revs of BITS, added the event callback support and did a bit "cleaning up" some of the marshalling.  There are also disposable wrapper classes around the native COM objects to ensure that they get cleaned up.
Things on the list that I want to do:
  • Multi-threaded folder search for the folder copy job
  • Splitting large folder copies into multiple BITS jobs (BITS has a practical limitation of about 100 files per job)
  • New UI based on WPF
  • Additional job creator plug-ins.  Would like HTTP and SharePoint document library jobs.
  • Possibly look into an upload job as well. 

If you are interested in helping out, sign up and join the project. 



Tags:

Open Source