2016-09-07 245 views

回答

1

这就是知道的向前兼容性向后兼容性。在Microsoft Windows中,您可以编写托管(C#,VB等)和本机(C/C++)代码(不包括非Microsoft技术(如Java))。本地代码大多使用本地Windows APIs。如果您使用在较新版本的Windows中引入的API,则您的应用程序将不会是向后兼容,并且不会在较早版本的Windows上运行。请始终检查所用API的Windows所需最低版本。
我知道没有解释为什么Windows API可能不是向前兼容。顺便说一下,微软的惯例是,当他们修改API的行为或接口时,他们保留旧的(可能为向后兼容性),并添加与旧的名称相同的新名称加上Ex扩展。

在托管的世界中,您使用.NET框架。为了解释.NET框架版本的兼容性我指的是Microsoft's document

.NET框架支持向前和向后兼容性。 在.NET Framework的上下文中,向后兼容意味着 使用早期版本的.NET 框架创建的应用程序将在更高版本上运行。相反,转发 兼容性意味着使用.NET Framework的更高版本 创建的应用程序将运行在较早版本上。

.NET框架为后向 兼容性提供了高度的支持。例如,使用版本 1.0创建的大多数应用程序都将在版本1.1上运行。 .NET Framework还支持向前兼容性。但是,为了向前兼容,您可能需要修改应用程序以使应用程序按预期运行。对于向后和向前兼容的 ,对有助于提高安全性,正确性或功能的.NET Framework更改也可能引发兼容性问题。

对于.NET框架的每个版本,Microsoft会为您提供有关可能会破坏应用程序兼容性的更改的指导。我提一些,你可以很容易地找到休息:

+0

艾哈迈德@:感谢您的输入。 – seccpur

+0

当从16位Windows(即Windows 3.x)迁移到32位Windows(Win9x)时,引入了Windows API的'Ex'版本。这是一次**的一次性交易。这不是一个惯例。通过引入新的参数或版本控制输入结构,大多数API都以向前兼容的方式进行扩展。但是,您忽略了* API表面,这对于版本控制来说是最灵活的:COM。COM接口一直都在添加,使用COM的代码既向前又向后兼容。另外,WinRT基于COM。 – IInspectable

+0

@IInspectable你确定它不是一个约定?我们甚至有带ExEx前缀的API;这在各种书中都有提及。 –

相关问题