Share via


Hogyan befolyásolhatják a kódmódosítások a kompatibilitást?

A kompatibilitás azt jelenti, hogy a kód lefordítható vagy végrehajtható egy .NET-implementáció azon verzióján, amellyel a kódot eredetileg fejlesztették. Egy adott változás hat különböző módon befolyásolhatja a kompatibilitást:

Viselkedésbeli változás

A viselkedésbeli változás egy tag viselkedésének változását jelenti. A változás külsőleg látható lehet (például egy metódus eltérő kivételt okozhat), vagy egy megváltozott implementációt jelölhet (például a visszatérési érték kiszámításának változását, a belső metódushívások hozzáadását vagy eltávolítását, vagy akár jelentős teljesítménybeli javulást).

Ha a viselkedésbeli változások külsőleg láthatók, és módosítják egy típus nyilvános szerződését, könnyen kiértékelhetőek, mivel hatással vannak a bináris kompatibilitásra. A implementáció változásait sokkal nehezebb kiértékelni; A változás jellegétől, valamint az API használatának gyakoriságától és mintáitól függően a változás hatása súlyostól az ártalmatlanig terjedhet.

Bináris kompatibilitás

A bináris kompatibilitás azt jelenti, hogy az API egy felhasználója újrafordítás nélkül használhatja az API-t egy újabb verzióban. Az olyan módosítások, mint a metódusok hozzáadása vagy egy új felületi implementáció hozzáadása egy típushoz, nem befolyásolják a bináris kompatibilitást. A szerelvény nyilvános aláírásainak eltávolítása vagy módosítása azonban, hogy a felhasználók többé ne férhessenek hozzá a szerelvény által közzétett felülethez, hatással van a bináris kompatibilitásra. Az ilyen típusú módosításokat bináris inkompatibilis változásnak nevezzük.

Forráskompatibilitás

A forráskompatibilitás azt jelenti, hogy az API meglévő felhasználói a forrásváltozások nélkül újrafordíthat egy újabb verziót. A forráskompatibil változás akkor fordul elő, ha a fogyasztónak módosítania kell a forráskódot ahhoz, hogy sikeresen buildeljen egy API újabb verziójával.

Tervezési idő kompatibilitása

A tervezési idő kompatibilitása a Visual Studio és más tervezési idejű környezetek különböző verzióiban a tervezési idő megőrzését jelenti. Bár ez magában foglalhatja a tervezők viselkedését vagy felhasználói felületét, a tervezési idő kompatibilitásának legfontosabb aspektusa a projektkompatibilitásra vonatkozik. A projekteket vagy megoldásokat meg kell nyitni és használni kell a tervezési időkörnyezet egy újabb verziójában.

Visszamenőleges kompatibilitás

A visszamenőleges kompatibilitás azt jelenti, hogy az API egy meglévő felhasználója ugyanúgy futtathat egy új verziót, miközben ugyanúgy viselkedik. A bináris kompatibilitás viselkedésbeli változásai és változásai egyaránt befolyásolják a visszamenőleges kompatibilitást. Ha egy felhasználó nem tud másként futni vagy viselkedni, amikor az API újabb verzióján fut, az API visszafelé nem kompatibilis.

A visszamenőleges kompatibilitást befolyásoló módosítások nem ajánlottak, mivel a fejlesztők visszamenőleges kompatibilitást várnak az API újabb verzióiban.

Kompatibilitás továbbítása

A továbbítási kompatibilitás azt jelenti, hogy az API egy meglévő felhasználója futtathat egy régebbi verziót, miközben ugyanazt a viselkedést mutatja. Ha egy felhasználó nem tud másként futni vagy viselkedni, amikor az API egy régebbi verzióján fut, az API nem kompatibilis.

A továbbküldési kompatibilitás fenntartása gyakorlatilag kizárja a verzióról verzióra történő módosításokat vagy kiegészítéseket, mivel ezek a módosítások megakadályozzák, hogy a későbbi verziót célzó felhasználók egy korábbi verzió alatt fussanak. A fejlesztők azt várják, hogy az újabb API-t használó felhasználók nem feltétlenül működnek megfelelően a régebbi API-val szemben.

A továbbítási kompatibilitás fenntartása nem célja a .NET Core-nak.