Очень хороший вопрос. Если бы я столкнулся с этой проблемой, я бы, вероятно, использовал бы Buffered Stream / Memory Stream и перенаправил поток в AppDomain, который потребляет объект, чтобы уменьшить маршалинг или сериализацию многих графов объектов, которые были созданы в другом AppDomain.
Но, опять же, похоже, что вы почти полностью дублируете функциональность IIS, так что я бы заглянул / отразил в пространство имен System.Web.Hosting и увидел, как они справляются с этим, их WorkerThreadPool и т. Д. ...