问题标签 [backwards-compatibility]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 升级到 JUnit4 并通过一起运行来保留旧的 JUnit 3 测试和测试套件
我很惊讶到目前为止还没有找到答案。如果我缺少一些基本的东西,我会很高兴知道这一点。
有一个大型遗留代码库已升级到 Java 6(从 1.4 开始)。代码中存在大量 JUnit 3 测试,并被组织成测试套件,这些测试套件在 Eclipse 中使用 JUnit 4 默认运行程序成功运行。
现在,我添加了纯 JUnit 4 测试的新测试(注释、无 TestCase 等)。什么方法可以同时运行旧的 JUnit 3 测试套件和新的 JUnit 4 测试?
database - 保持与我的对象数据库的向后兼容性?
我正在使用对象数据库 ( db4o ) 编写应用程序,并且将以敏捷的方式从一个小的、最小的实现开始并从那里迭代地添加功能,同时发布新版本的软件。
我的主要问题是如何保持数据库的向后兼容性,随着模型类的新实现的开发,用户将能够使用第 10 版软件保存的第一版数据。
是否有一些标准方法可以做到这一点,尤其是使用对象数据库?
web-services - 向后兼容性和 Web 服务
所以我对 Web 服务有点陌生,最近出现了一种情况,我们向返回给客户端的数据类型添加了一个元素。客户抱怨这破坏了他们的实施,因为它阻塞了它没想到的新元素。(我们通过 Axis2 提供服务)。
对我来说,这似乎是一个无害的更改,客户端应该能够优雅地处理(我使用过一些非 Web 服务框架,在这些框架中添加可选信息是完全可以接受的)。如果我们删除或重命名了一些会导致客户出现问题的字段,我可以理解。
基本上我希望 wsdl 像一个接口一样工作。如果我们进行实质上为该接口子类型的更改,我希望客户端会愉快地忽略无关元素。这只是 Web 服务的一个短板,还是有一种理智的方式对服务进行被动更改,以便新客户可以获得额外的数据,而老客户可以在闲暇时更新?
enterprise-library - 最新版本的 MS 企业库是否与 3.1 等旧版本兼容
我被分配的这个当前项目使用 3.1 版本的级别:
当我尝试更多地了解 Ent Lib 的功能时,我遇到了很多关于各种版本(我认为是 3.1、4.0 和 5.0)的文章和文档。
一般来说,较新的版本是否适用于为早期版本的 Ent Lib 编写的应用程序代码?我没有调查我继承的这个应用程序中的所有源代码,但我认为只有数据访问应用程序块的“基础”被使用。这是一段典型的代码:
坦率地说,这似乎并没有提供超出常规 ADO.Net 的功能,但也许较新的版本使事情变得更简单(我听说过一些关于 Unity 的非常好的东西)。
c# - 变更容限建议
背景:
我将开发依赖于快速变化的 API 和快速变化的数据模型的工具,我将对其零控制。
数据模型和 API 更改很常见,这里的问题是我的代码必须继续与当前和所有过去的版本一起使用(即 100% 反向兼容),因为所有这些都将继续在内部使用。
当它遇到丢失/未知的功能等时,它还必须优雅地降级。
这些工具将使用 C# 和 WinForms 编写,用于测试自定义硬件。
我的目标是只需要创建类来添加功能,当数据模型发生变化时,创建一组新的数据模型类,这些类将由基于 API 版本的工厂创建。
我面临的挑战是,未来的功能可能取决于特定的数据模型,这些模型可能会混合和匹配(直到达到最终组合)。你会如何优雅地处理这件事?
当然,一旦产品交付,我想重用该工具并为新产品添加代码。在我开始之前,每个产品周期都意味着重写(从头开始)所有工具,我打算在未来防止这种情况:)
问题:
为了保持与 API/数据模型的多个版本的兼容性,您会建议或已成功使用哪些设计技术和模式?
我应该注意哪些陷阱?
c++ - 用于检测 C++ 中 ABI 中断的静态分析工具
打破带有 C++ 接口的 DSO/共享库的二进制向后兼容性并不难。也就是说,是否有一个静态分析工具可以帮助检测这种 ABI 中断,如果它有两组不同的头文件:DSO 的早期状态和当前状态的那些(也许还有 DSO)?欢迎免费和商业产品建议。
如果它还可以警告不良做法,例如 DSO 接口中的内联函数和默认函数参数,那就太好了。
c++ - 如何自动测试二进制兼容性?
可以在编译之前通过比较代码来完成吗?是否有任何工具已经这样做了?
sql-server - 2000 兼容模式下的 SQL Server 2005 上的 READ_COMMITTED_SNAPSHOT?
在调查一个我认为与锁升级有关的问题并认为 READ_COMMITTED_SNAPSHOT 将是解决方案时,我检查了它是否已经启用。令我惊讶的是,该数据库的兼容性级别为 80(SQL Server 2000,我是新来的,似乎没有人或文档知道为什么!)。
但是 READ_COMMITTED_SNAPSHOT 是 2005 年的新功能。所以即使启用了,在 2000 兼容模式下运行时是否有任何影响?
iphone - 在 2.2.1 设备上运行具有 3.0 功能的 iPhone 应用程序
我被要求向应用程序添加 3.0 功能(媒体选择器)。
但该应用程序必须继续在 2.2.1 设备上运行。(禁用该功能)
我如何编译它,使其在 2.2.1 上运行,而不会出现编译器错误,包括 3.0 功能?
根据 MailComposer 示例中的说明,我已将目标设置设置为 2.2.1,将基本 SDK 设置为 3.1.2。
我看过弱链接,但这显然只是链接器步骤,对编译器错误没有任何作用。
iphone - iPhone OS 3.1.2 和 2.2.1 的问题
我试图让我的应用程序在 2.2.1 设备上运行,尽管它是针对 3.1.2 SDK 构建的。
下表列出了我的结果
第 3 行证明我的代码在 sdk 之间没有不兼容的。我已经删除了所有需要弱链接的东西,试图找到问题的根源。
程序开始后中断很快出现,但不是立即出现。它发生的关键在于与 3.0 特性没有任何关系的代码
它停止的那一行是一个简单的数学运算,涉及 4 个浮点数 (ab)/(c/d),其中任何一个似乎都没有问题。(它在 C++ 中)
在这些情况下还有什么可能导致中断信号?
更新:
似乎它中断的确切点是将 u64 转换为浮点数。