Поделиться через


Как изменения кода могут повлиять на совместимость

Совместимость относится к возможности компиляции или выполнения кода в версии реализации .NET, отличной от той, с которой изначально разработан код. Определенное изменение может повлиять на совместимость в шести разных способах:

Изменение поведения

Изменение поведения представляет собой изменение поведения члена. Изменение может быть внешним видимым (например, метод может вызвать другое исключение), или может представлять собой измененную реализацию (например, изменение способа вычисления возвращаемого значения, добавление или удаление внутренних вызовов методов или даже значительное улучшение производительности).

Когда изменения в поведении становятся видимыми и изменяется публичный контракт типа, их легко оценить, так как они влияют на двоичную совместимость. Изменения реализации гораздо сложнее оценивать; В зависимости от характера изменения и частоты и шаблонов использования API влияние изменения может варьироваться от серьезного до ненурядного.

Совместимость двоичных файлов

Двоичная совместимость относится к способности потребителя API использовать API в новой версии без повторной компиляции. Такие изменения, как добавление методов или добавление новой реализации интерфейса в тип, не влияют на совместимость двоичных файлов. Тем не менее, удаление или изменение общедоступных подписей сборки, чтобы потребители больше не могли получить доступ к тому же интерфейсу, который предоставляется сборкой, влияет на совместимость двоичных файлов. Изменение такого рода называется бинарным несовместимым изменением.

Совместимость с исходным кодом

Совместимость по исходным кодам относится к способности существующих потребителей API выполнять повторную компиляцию с более новой версией без каких-либо изменений в исходном коде. Несовместимое с исходным кодом изменение возникает, когда потребитель должен изменить исходный код, чтобы успешно собрать его с более новой версией API.

Совместимость в процессе проектирования

Совместимость во время проектирования относится к сохранению опыта проектирования в разных версиях Visual Studio и других средах проектирования. Хотя это может включать поведение или пользовательский интерфейс конструкторов, наиболее важный аспект совместимости во время разработки касается совместимости проектов. Проект или решение должны быть в состоянии открываться и использоваться в более новой версии среды разработки.

Обратная совместимость

Обратная совместимость означает способность существующего клиента API работать с новой версией, при этом сохраняя прежнее поведение. Изменения поведения и изменения в двоичной совместимости влияют на обратную совместимость. Если потребитель не может запускаться или ведет себя по-другому при работе с более новой версией API, это означает, что API обладает обратной несовместимостью.

Изменения, влияющие на обратную совместимость, не рекомендуется, так как разработчики ожидают обратной совместимости в более новых версиях API.

Совместимость с будущими версиями

Прямая совместимость обозначает способность уже существующего потребителя API работать с более старой версией, при этом сохраняя то же поведение. Если потребитель не может выполняться или работает иначе при использовании с более старой версией API, API несовместим вперед.

Поддержка совместимости с будущими версиями практически исключает любые изменения или дополнения из версии в версию, так как эти изменения препятствуют тому, чтобы потребитель, рассчитанный на более позднюю версию, работал в более ранней версии. Разработчики ожидают, что потребитель, который использует более новый API, может не работать правильно с более старым API.

Поддержка совместимости с будущими версиями не является целью .NET Core.