I came into the office today to find zero emails generated from my exception management engine. This is a particularly good thing as I had just setup a windows service to archive data from SharePoint to the file system. But I am getting ahead of my self...
When this project was originally defined, the customer stated that they wanted a web part that would handle archiving documents from SharePoint document libraries to the file system. After evaluating the amount of data that is moving in an archive we pushed back. Our position was that a smart client application that uses the SharePoint object model makes more sense in this case as we basically just pulling data out of the SharePoint database and placing it on disc. Yes we have no banannas. This proposal was rejected as the client doesn't want to have to login to the server just to run an archive.
The next option was to create a windows service that polls for flags in a SharePoint list. When an item is marked as queued, then the archive job inititates. Now it all works perfectly.
An important point to make is that we didn't consider SharePoint or the Windows service or anything until the very END. I mean this to say all of the functionality was written first in business objects against test fixtures running in NUnit. You have probably heard me sing the praises of automated testing before and I can not emphasize enough how key these techniques are to sucess in an application of this nature.
For more goodness in application architecture check out the latest podcast:
Architecting for Extensibility