c# - 如何为多租户应用程序共享和缓存 DLL
问题描述
我有一个执行以下操作的应用程序:
- 创建一个 AppDomain 用于在 API 接收到处理请求时执行进程。
- 加载在 Service Fabric 应用程序上执行某些任务所需的一组 dll。
- 在该应用程序域中执行整个过程。
- 卸载 AppDomain 并返回响应。
现在有一些场景,
在大多数情况下,DLLS 对用户来说是相同的。例如,当应用程序为每个租户执行一些默认工作时,DLL 将特定于该工作,但也有一项规定可以为每个租户添加他们可以自己使用的自定义工作。
不同租户使用相同 dll 的多个版本。
现在对于这个应用程序,由于我们不断地通过 appdomain 容器加载和卸载 dll,API 的执行速度非常慢。此外,即使应用程序运行良好,所使用的资源也没有得到优化。(我们在内存和计算上付出了更多而没有获得性能)。
所以我需要一些选项来优化它。
- 我们是否可以使用类似于数据缓存的 Dll Caching,这样同一个 dll 只加载一次,但是当请求来自多个用户时,我们可以创建类的实例并调用资源?
- 加载新的自定义 dll 时,将为该特定租户加载相同的内容,而不会影响其他人。
请建议在这些情况下可以有哪些最佳选择。
解决方案
推荐阅读
- java - 使用 MapR MultipleOutputs 写入 OrcNewOutputFormat 时出错
- symfony - 替换继承另一个服务的参数
- delphi - 在 4K 显示器上缩放 DbGrid 指示器和 DbNavigator 图标
- android - com.android.builder.internal.aapt.v2.Aapt2Exception 将 android studio 更新到 3.2 后
- android - BadPaddingException:尝试解码时垫块损坏
- php - 无法在 Woocommerce 中保存自定义注册字段值
- javascript - Django 表单或自己的 html 表单?
- ruby-on-rails - Sidekiq 从控制台工作但不能从应用程序工作
- python - 在python中设置模式以防止mongodb中的嵌套值
- python - seaborn 热图自动排序标签以平滑颜色变化