兼容性分类

兼容性分类

什么是兼容

谈到兼容,少不了获得兼容收益的目标对象,以及提供兼容功能的组件这两个相互对应的概念。

如果一个目标对象,能否在同一组件的同个不同版本上协同工作,则移该组件的两个版本是兼容的,如下图所示:

兼容性分类

组件的两个版本是兼容的,那就会有新版本兼容旧版本,或者旧新版本兼容新版本这两个兼容方向

在旧版本上开发的目标,或者旧版本生成的数据,能够在新版本正确运行,或者正确处理,称为向后兼容。

换句话说:向后兼容是指向历史兼容,如下图所示:

向前兼容却相好相反,在新版本上开发的目标,或者新版本上生成的数据,能够在旧新版本上运行,或者处理,则称为向前兼容。

换句话说:向前兼容是指向未来兼容,如下图所示:

例解向后兼容

以软件为例子,说业界几个知名的向后兼容案例。

操作系统兼容应用程序

Ubuntu 16.04 向后兼容 Ubuntu 12.04

硬件兼容操作系统

Intel 64位处理器向后兼容32位处理器

软件兼容数据

Office 2010 向后兼容 Office 2003

更多的向后兼容例子,请访问维基百科Backward compatibility词条中的案例。

实现向后兼容有什么魔法

说个大实话,提供兼容性本身就是一种负担,它会制约着产品的设计。但在很多情况下,如果软件或者硬件不提供兼容性,客户是无法为你的产品买单的。

如何设计一个产品才能满足向后兼容呢,它的秘诀就是只新增接口,对现有接口不能做任何修改,同时可感知到的默认行为都要保持不变。

这约束太强了吧,在软件只新增接口或功能同时,怎么也会对现有的接口做修改吧?

如果真的需要修改接口,也请不要修改原来的接口,而是采用下面两种策略:

开发一个新接口,上层新版本软件请使用新接口;没有重编修改源代码和编译的老软件仍然使用老接口保留原有接口,开发一个同名的新接口,但接口版本号不同(Linux下的glibc就采用了版本机制实现应后兼容能力)

如果提供兼容性的组件的各个接口是相对独立的,比如Linux下的glibc运行库,实现向后兼容相对比较容易。但是如果组件对外提供的接口非常内聚,提供两个版本接口实现,是很难维护的。

小结

后向兼容是指向历史版本兼容,新版本完全兼容旧版本的接口和功能。

相关文章

365bet网络足球赌博 梦幻西游59/69/109各级抓鬼一轮能得多少钱和各个级别都得什么环之类的?
365bet网络足球赌博 神无月蒂利娅对比酷罗蒂 哪个法师更厉害
365bet账号被限制 洗照片不知洗多少尺寸?《标准照片尺寸像素对照表》给你答案!
365bet账号被限制 推荐三部日本R级爱情电影,不建议未成年观看_手机网易网
365bet网络足球赌博 4.47元/立方米!广州这类管道燃气销售价格有调整
365bet账号被限制 ipad用久了太卡怎么办

ipad用久了太卡怎么办

🗓️ 07-04 👁️ 7536