'Windows Folder web part' published to GotDotNet

I have just posted a sample SharePoint web part to GotDotNet (note: since moved to MSDN Code Gallery) , which I've called the "Windows Folder web part". This is the result of a project I worked on some time ago which I'm now able to share.

 

What does it do?

The Windows Folder web part allows users to store files within a standard Windows (NTFS) folder in a shared network location and display a list of those files in a SharePoint page via a consistent ‘document library’-style interface.

This means that if your users need to work with file types that do not work well when stored within SharePoint, you can now continue to store them in NTFS, but users can locate them in SharePoint alongside the rest of their files that are stored within SharePoint, via a consistent interface. (Note that NTFS does not natively support all the SharePoint features such as check-in, check-out, version history etc so these options are not available for files accessed via the Windows Folder web part.)

The initial requirement for which I developed this solution was for a company which was migrating all user files from NTFS to SharePoint, but were heavy users of Microsoft Access, with hundreds of small databases stored in NTFS used for various adhoc custom purposes. They would often have multiple users reading and editing data from an Access database simultaneously. When accessed via SMB (i.e. over the local network), Access is capable of handling this type of 'simultaneous access' pretty seamlessly. However, if accessed via HTTP (such as if stored within SharePoint), due to the stateless nature of HTTP, each user perhaps unknowingly downloads a local copy of the database. Any editing they perform happens only on their local copy. If they even realise this, there is no easy way to synchronise their changes back to the version stored in SharePoint and resolve any conflicts. My solution - keep doing it the old way behind the scenes but pretend to store them in SharePoint :-). This way users still have a single place to go to find all their files. 

I'm sure you can think of other scenarios where this could be useful. Note that even with this web part available, you should continue to store most file types within SharePoint to take advantage of check-in, check-out, version history and all the other benefits SharePoint adds over NTFS. Use this solution only when there is something blocking you from otherwise using SharePoint.

 

Sounds hard to manage?

This is the cool bit: When a SharePoint site administrator adds the Windows Folder web part to the site, a new NTFS sub-folder representing the site is automatically created underneath a 'root' NTFS shared folder (configured by the server administrator when first installing the web part). The NTFS security ACLs for each sub-folder are automatically synchronised to match the list of SharePoint users for the site, so the site administrator experience is simply to "drag and drop" the web part. New users added later to the SharePoint site will also be added to the NTFS folder next time the site admin visits the site.

Works best (most securely) if Kerberos authentication is used.

 

Where can I get it?

You can download the entire solution from GotDotNet the MSDN Code Gallery, including install files, source code and full documentation (hence I'm not going into great detail in this post as to how it works :-). Please note that the solution is only provided "as is", i.e. as a sample with no support provided, and I'd encourage you to evaluate it thoroughly and make any changes required before deploying into production to determine if it meets your needs and security requirements. If you review the source code you may find that you can improve it in some (possibly many ;-) ways - if so please go ahead - I'd welcome any feedback on the solution or advice on how it could be further improved! Hope that you find it useful. If you have any questions, please post them on the GotDotNet MSDN Code Gallery message board (or use the contact form on this blog).

 

[UPDATE: 3rd Sept 2007 - changed the hyperlinks from this article to point to a new download location after the GotDotNet CodeGallery was phased out - solution is now located in the GotDotNet User Samples area. Thanks to those who pointed out the original links no longer worked. ]

[UPDATE: 22nd Feb 2008 - changed the links again after the whole of GotDotNet was shut down :-), code was migrated to the MSDN Code Gallery. ]