Vliv změn kódu na kompatibilitu

Kompatibilita odkazuje na schopnost zkompilovat nebo spouštět kód v jiné verzi implementace .NET, než je verze, se kterou byl kód původně vyvinut. Konkrétní změna může ovlivnit kompatibilitu šesti různými způsoby:

Změna chování

Změna chování představuje změnu chování člena. Změna může být externě viditelná (například metoda může vyvolat jinou výjimku) nebo může představovat změněnou implementaci (například změna ve způsobu výpočtu návratové hodnoty, přidání nebo odebrání volání interní metody nebo dokonce významné zlepšení výkonu).

Pokud jsou změny chování externě viditelné a upravují veřejný kontrakt typu, je snadné je vyhodnotit, protože ovlivňují binární kompatibilitu. Provádění změn je mnohem obtížnější vyhodnotit; v závislosti na povaze změny a četnosti a vzorech použití rozhraní API může dopad změny v rozsahu od závažných až po neškodné.

Binární kompatibilita

Binární kompatibilita odkazuje na schopnost příjemce rozhraní API používat rozhraní API v novější verzi bez rekompilace. Změny, jako je přidání metod nebo přidání nové implementace rozhraní do typu, nemají vliv na binární kompatibilitu. Odebrání nebo změna veřejných podpisů sestavení tak, aby uživatelé již neměli přístup ke stejnému rozhraní vystaveného sestavením, má vliv na binární kompatibilitu. Změna tohoto typu se označuje jako binární nekompatibilní změna.

Kompatibilita zdroje

Kompatibilita zdroje označuje schopnost stávajících příjemců rozhraní API překompilovat proti novější verzi bez jakýchkoli změn zdroje. Ke změně zdroje nekompatibilní dojde v případě, že uživatel potřebuje upravit zdrojový kód, aby se úspěšně sestavil s novější verzí rozhraní API.

Kompatibilita v době návrhu

Kompatibilita v době návrhu se týká zachování prostředí návrhu napříč verzemi sady Visual Studio a dalšími prostředími v době návrhu. I když to může zahrnovat chování nebo uživatelské rozhraní návrhářů, nejdůležitější aspekt kompatibility v době návrhu se týká kompatibility projektů. Projekt nebo řešení musí být možné otevřít a použít v novější verzi prostředí v době návrhu.

Zpětná kompatibilita

Zpětná kompatibilita odkazuje na schopnost existujícího příjemce rozhraní API běžet na nové verzi a přitom se chovat stejným způsobem. Změny chování i změny binární kompatibility ovlivňují zpětnou kompatibilitu. Pokud uživatel nemůže spustit nebo se při spuštění proti novější verzi rozhraní API chová odlišně, rozhraní API je zpětně nekompatibilní.

Změny, které mají vliv na zpětnou kompatibilitu, se nedoporučuje, protože vývojáři očekávají zpětnou kompatibilitu v novějších verzích rozhraní API.

Přesměrová kompatibilita

Dopředná kompatibilita odkazuje na schopnost existujícího příjemce rozhraní API běžet ve starší verzi a vykazuje stejné chování. Pokud uživatel nemůže spustit nebo se chová jinak při spuštění ve starší verzi rozhraní API, je rozhraní API nekompatibilní.

Zachování kompatibility vpřed prakticky vylučuje jakékoli změny nebo dodatky z verze na verzi, protože tyto změny brání příjemci, který cílí na novější verzi, aby běžel v dřívější verzi. Vývojáři očekávají, že uživatel, který spoléhá na novější rozhraní API, nemusí správně fungovat se starším rozhraním API.

Zachování kompatibility vpřed není cílem .NET Core.