Nick Wienholt has an article on the topic up at developer.com, check it out:

http://www.developer.com/net/cplus/article.php/3588311