.NET has this concept of Application Domains which from what I understand can be used to load an assembly into memory. I've done some research on Application Domains as well as go to my local book store for some additional knowledge on this subject matter but it seems very scarce.
All I know that I can do with Application Domains is to load assemblies in memory and I can unload them when I want.
What are the capabilities other that I have mentioned of Application Domains? Do Threads respect Application Domains boundaries? Are there any drawbacks from loading Assemblies in different Application Domains other than the main Application Domains beyond performance of communication?
Links to resources that discuss Application Domains would be nice as well. I've already checked out MSDN which doesn't have that much information about them.