Я написал очень простой веб-сервер на C #, который загружает пользовательские модули, которые обрабатывают запросы к определенному имени домена, как указано в файле конфигурации.Пользовательские модули загружаются в новый домен приложений, потому что мне нужна возможность их динамической выгрузки (тоже хорошо для безопасности).Поскольку модули загружаются в новый домен приложений, все параметры и типы возвращаемых значений - MarshalByRefObject.Это работает нормально, и я передаю объект HttpRequest, который наследуется от MarshalByRefObject, и возвращаю LinkedList, который отправляется обратно клиенту веб-сервером.
Все это работает хорошо, но большая часть данных передается какbyte [], и я полагаю, что прокси-сервер для MarshalByRefObject скопирует все байты из нового AppDomain в основной AppDomain вместо прямого доступа к ним.Итак, если я прав в этом, если один из модулей отправит файл 5 МБ в качестве ответа, тогда 5 МБ будет загружено / сгенерировано в модуле, затем скопировано из модуля AppDomain в основной AppDomain и, наконец, отправлено через сокетназад к клиенту.
Итак, мой вопрос: могу ли я как-то обойти это, чтобы он не копировал столько данных между AppDomain?Или есть лучший способ сделать это, не используя MarshalByRefObject?