欢迎任何有趣的评论或建议。
我们的应用程序通过 View 使用第 3 方供应商数据。企业要求我们的应用程序绑定(bind)到以前版本的 View 应该能够继续使用它们,而不是必须与 View 的每个更新的供应商版本同步。应用程序“A”应该能够使用 v.1.1 的 View ,而应用程序“B”使用 v.1.2 的 View ,两者都与全局模式/命名空间中的相同表交互。
人们建议用版本号命名 View ,但这对于与更新的 View 版本保持同步的应用程序来说似乎很麻烦。这个问题有更好的解决方案吗?也许将每个受支持的 View 版本保留在它自己的模式中,并让 View 从定义表和数据所在的全局模式中提取?
如果您要维护 View 层,您通常会通过将 v1.2 更改限制为向现有 View 添加额外的列或添加额外的 View 来保持版本之间的兼容性。不想升级的应用程序将继续使用现有 View 的现有列,而想要升级的应用程序可以使用新 View 。 Oracle 数据字典 View 是这种方法的一个很好的例子。在每个新版本中,都有许多新 View 为需要它的应用程序公开新功能。但是针对 Oracle 7 中的数据字典 View 编写的脚本将很乐意针对 11.2 数据库运行(效率可能较低)。
这实际上与维护任何其他类型的 API 没有什么不同。当您发布 1.2 版本时,您通常不会取消现有的 API 调用或强制用户向 API 传递额外的参数。相反,您将旧 API 调用引入新版本。当然,有时您可能不得不弃用 API 的某些部分并强制现有应用程序进行小幅升级。但这些情况相对较少,只需要应用程序更改进行该弃用调用的代码——应用程序不需要完全升级到新的 v1.2 API。