AppDomains allow you to save memory by unloading assemblies that are no longer being needed, and therefore lead themselves to being a good foundation for a plugin architecture.
But to communicate across boundaries, you need your classes to be MBR (MarshallableByRef)