我的团队正试图找出在我们的自定义程序集中管理集中常量(可能是只读静态变量)的最佳方法。我们构建了一个处理架构,其中程序集被动态加载到运行时中。当数据通过我们的系统时,一些程序集将信息写入字典,然后将其传递给另一个程序集,该程序集将读取数据并对其进行处理。随着我们产品的成熟和我们的客户需要不同的处理能力,我们将需要添加将被写入/读取的新数据字段。到目前为止,我们已经在核心 dll 中定义了常量,但这不会长期有效,因为当我们获得一条新数据时,我们将不得不重新编译核心 dll,在这样做的过程中,我们的测试团队将不得不对整个应用程序进行全面的回归测试,而不仅仅是测试新程序集提供的新功能。试图找出一种方法来添加新常量并知道正在写入什么数据,而无需重新编译/部署我们绝对不需要的任何东西。
我们考虑了两种选择:
创建一个常量 dll,它只保存常量。当我们需要新字段时,我们将它们添加(从不删除)到 dll 中。不利的一面是对 dll 的更改仍然会影响整个系统,因此可能需要进行完整的回归测试。
让每个程序集公开它读取/写入的所有字段,然后在开发人员集成期间查找名称不匹配。例如,Assembly1 写入 (Field1, Field2),Assembly2 读取 (field1, Filed2),由于字典键区分大小写,导致 (Field1 与 field1) 不匹配。这将阻止我们使用常量程序集,但它需要一些额外的代码来验证不匹配,并且似乎会导致一些耦合。
注意:当我说常量时,我并不是说常量。根据我们最终使用的解决方案,我们可能会使用只读静态。
如果有人做过这样的事情,或者对实现这一点的方法有任何想法,我将不胜感激您的意见。我们的基本目标是能够通过仅部署新程序集来提供新功能。