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
- Bináris kompatibilitás
- Forráskompatibilitás
- Tervezési idő kompatibilitása
- Visszamenőleges kompatibilitás
- Kompatibilitás továbbítása (nem a .NET Core célja)
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.