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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поддержка совместимости вперёд не является целью .NET.NET Aspire.