Преимущества сборок
Сборки предназначены для упрощения развертывания приложений и для решения вопросов, связанных с управлением версиями, которые могут возникнуть при использовании приложений, основанных на компонентах.
Конечные пользователи и разработчики знакомы с проблемами управления версиями и развертывания, которые возникают в современных системах, основанных на компонентах. Некоторые конечные пользователи сталкивались с проблемами, когда после установки на компьютер нового приложения обнаруживалось, что старое приложение внезапно перестало работать. Многие разработчики тратили бесчисленные часы, пытаясь сохранить согласованность всех необходимых записей реестра, чтобы активировать COM-класс.
Многие проблемы разработки были решены с помощью сборок в платформе .NET Framework. Поскольку сборки являются компонентами с самоописанием, не зависящими от записей системного реестра, они позволяют устанавливать приложения, не влияя на другие компоненты. Кроме того, сборки упрощают удаление и репликацию приложений.
Вопросы управления версиями
На данный момент для приложений Win32 имеется две проблемы управления версиями.
Нельзя задать правила управления версиями для компонентов приложения и обеспечить их применение на уровне операционной системы. Существующий подход основывается на обратной совместимости, которую часто трудно гарантировать. Определения интерфейсов должны быть статическими и публикуемыми однократно, а для отдельных частей кода должна обеспечиваться обратная совместимость с предыдущими версиями. Более того, код обычно создается таким образом, что в любой момент времени на компьютере может присутствовать и выполняться только одна версия кода.
Не существует способа обеспечить согласованность между наборами компонентов, собранных вместе, и набором, присутствующим на компьютере в момент выполнения.
Эти две проблемы управления версиями вместе порождают конфликты DLL-библиотек, когда установка одного приложения может случайно нарушить работу другого существующего приложения, поскольку некоторый установленный программный компонент или DLL-библиотека не полностью совместимы с предыдущей версией. В такой ситуации в системе отсутствуют средства поддержки для диагностики и исправления ошибок.
Устранение конфликтов DLL-библиотек
В Microsoft® Windows® 2000 предприняты первые попытки решения этих проблем. В данной ОС имеются два средства, которые частично разрешают конфликты, связанные с DLL-библиотеками
В Windows 2000 можно создавать клиентские приложения, в которых зависимые DLL-файлы располагаются в той же папке, что и EXE-файл приложения. Windows 2000 можно настроить таким образом, чтобы проверка наличия компонента в папке с EXE-файлом проводилась перед проверкой полного пути или поиском по обычному пути. Это позволяет обеспечить независимость компонентов от установленных и используемых другими приложениями компонентов.
В Windows 2000 выполняется блокировка файлов, поставляемых вместе с операционной системой, в папке "System32" таким образом, чтобы их нельзя было случайно заменить при установке приложений.
В среде CLR для полного разрешения конфликтов DLL-библиотек используются сборки.
Решение на основе сборок
Чтобы решить проблемы управления версиями и другие проблемы конфликтов DLL-библиотек, в среде выполнения используются сборки, которые дают следующие возможности.
Позволяют разработчикам указывать правила управления версиями для различных программных компонентов.
Предоставляют инфраструктуру для применения правил управления версиями.
Предоставляют инфраструктуру, позволяющую выполнять несколько версий компонента одновременно (так называемое параллельное выполнение).