Как совместно использовать и кэшировать библиотеки DLL для мультитенантного приложения - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть приложение, которое выполняет следующие действия:

  1. Создает домен приложений для выполнения процесса, когда API получает запрос на обработку.
  2. Загружает набор DLL, необходимых для выполнениянекоторые задачи в приложении Service Fabric.
  3. Выполняет весь процесс в этом домене приложения.
  4. Выгружает домен приложения и возвращает ответ.

Теперь есть несколько сценариев:

  • В большинстве случаев DLLS одинаковы для пользователей.Например, когда приложение выполняет какую-то работу по умолчанию для каждого арендатора, библиотеки DLL будут специфичны для этой работы, но есть также возможность добавить пользовательскую работу для каждого арендатора, которую они могут использовать сами.

  • Существует несколько версий одной и той же DLL, используемых разными арендаторами.

Теперь для этого приложения, поскольку мы постоянно загружаем и выгружаем dll через контейнер appdomain, API работают очень медленно.Кроме того, хотя приложение работает отлично, используемые ресурсы не оптимизированы.(Мы платим больше за память и вычисляем без получения производительности).

Так что мне нужна опция, чтобы оптимизировать это.

  1. Можем ли мы использовать Dll Caching, похожее на кэширование данных, чтобы одна и та же DLL загружалась только один раз, но когда запрос приходит от нескольких пользователей, мы можем создать экземпляр класса и вызвать ресурс?
  2. Когда загружается новый пользовательский dll, он будет загружен для этого конкретного арендатора, не затрагивая других.

Пожалуйста, предложите, какие варианты лучше всего использовать в этих сценариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...