替换应用程序存储库程序集的推荐方法

蓝移

我有一个包含存储库程序集的应用程序。最初安装应用程序时,存储库非常简单:本地 JSON 文件存储。但我想让我的最终用户能够使用不同的存储库(SQL、Oracle 等)。

它会像用新的存储库 DLL 替换应用程序目录中的原始存储库 DLL 一样简单吗?如果是这样,用户是否会简单地将新的存储库 DLL 复制并粘贴到应用程序的目录中,覆盖原始 DLL?有没有更好的方法来做到这一点?

请注意,我在应用程序中还有另一个程序集,其中包含应用程序使用的所有接口(这是一个好习惯吗?)。应用程序将验证存储库程序集是否实现了所有必需的接口。

我相信我不想要插件架构/框架。我不希望能够从一组加载的存储库程序集中选择一个。但是我会听取任何支持我的应用程序的插件策略的论点。

贪婪

有几种方法可以解决这个问题,从问题中我不确定哪一种更适合您的需求。

  1. 如果您只需要在位于应用程序启动时加载的 DLL 中的多个实现中选择一个行为,您可以静态引用这些。启动时,您可以浏览 AppDomain 以获取加载的程序集(检查 AppDomain.GetAssemblies() 方法)和程序集中的类,并构建可用行为字典。此字典以后可用于在行为之间切换。

  2. 如果您确实需要在运行时让用户处理 DLL 文件,请检查 AppDomain.Load() 方法。这些方法允许在当前 AppDomain 中动态加载新程序集。这些程序集中的类可以转换为相应的公共接口以进行实际调用。但是,请注意,加载程序集很容易,但卸载程序集(如果需要)则不然。

  3. 因此,如果您需要动态加载和卸载程序集,则需要在不同的 AppDomain 中处理这些程序集(检查 AppDomain.Unload() 方法)。此外,AppDomains 之间的方法调用不能直接完成,这些需要编组,这增加了代码的复杂性。

这是这些解决方案的简要总结,有文章详细介绍了每个解决方案......

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为独立应用程序调用存储库方法?

推荐的做法,用于存储应用程序临时配置

为Web应用程序(角色,用户)初始化`aspnetdb`数据库的推荐方法?

检索存储在msi中的应用程序的程序集版本

在Ember.JS ember-cli应用程序中包含引导程序库的推荐方法

推荐对Python GUI应用程序进行单元测试的推荐方法是什么?

推荐对Python GUI应用程序进行单元测试的推荐方法是什么?

使用ADB替换应用程序SQLite数据库

在Node.Js / Express应用程序中存储数据库配置的最佳方法

将数据库从/ assets复制到应用程序的专用存储的正确方法

无法在Spring Boot应用程序的Main方法中使用@Autowired JPA存储库

在MVC应用程序中的存储库层上的查询

与iis应用程序同步git远程存储库

Spring REST应用程序中的存储库

具有多个应用程序存储库的 CDK 管道

如何识别“主要” Ubuntu存储库应用程序

安装应用程序时自动更新存储库

如何从github存储库运行节点js应用程序?

Web 应用程序的大型数据集 - 为每个查询使用 API 还是本地存储在数据库中?

清除应用程序存储

运行期间是否可以替换ASP.NET Web应用程序程序集

将Bunyan应用于大型节点应用程序的推荐方法?

由多个存储库组成的Docker应用程序的Git存储库设置

如何从 Gitlab CD 中的应用程序存储库链接部署脚本/存储库?

在应用程序中存储机密的最佳方法

为React应用程序存储获取的数据的常用方法?

清除Silverlight应用程序存储的脚本方法?

存储iOS应用程序数据的最佳方法?

OS X应用程序。哪种存储数据的最佳方法?