У меня есть приложение, которое выполняет следующие действия:
- Создает домен приложений для выполнения процесса, когда API получает запрос на обработку.
- Загружает набор DLL, необходимых для выполнениянекоторые задачи в приложении Service Fabric.
- Выполняет весь процесс в этом домене приложения.
- Выгружает домен приложения и возвращает ответ.
Теперь есть несколько сценариев:
В большинстве случаев DLLS одинаковы для пользователей.Например, когда приложение выполняет какую-то работу по умолчанию для каждого арендатора, библиотеки DLL будут специфичны для этой работы, но есть также возможность добавить пользовательскую работу для каждого арендатора, которую они могут использовать сами.
Существует несколько версий одной и той же DLL, используемых разными арендаторами.
Теперь для этого приложения, поскольку мы постоянно загружаем и выгружаем dll через контейнер appdomain, API работают очень медленно.Кроме того, хотя приложение работает отлично, используемые ресурсы не оптимизированы.(Мы платим больше за память и вычисляем без получения производительности).
Так что мне нужна опция, чтобы оптимизировать это.
- Можем ли мы использовать Dll Caching, похожее на кэширование данных, чтобы одна и та же DLL загружалась только один раз, но когда запрос приходит от нескольких пользователей, мы можем создать экземпляр класса и вызвать ресурс?
- Когда загружается новый пользовательский dll, он будет загружен для этого конкретного арендатора, не затрагивая других.
Пожалуйста, предложите, какие варианты лучше всего использовать в этих сценариях.