Side-by-side assembly

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Side-by-side Assembly (SxS) — технология устранения конфликтов между глобальными DLL в ОС Microsoft Windows.

Причина создания[править | править исходный текст]

Технология SxS стала очередной попыткой решения проблемы DLL hell путём замены поиска библиотек по имени файла поиском по уникальному идентификатору сборки.

Реализация[править | править исходный текст]

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

Сборки обычно создаются из динамически подключаемых библиотек (DLL), однако в состав сборки могут входить любые файлы.

Сборки активно используются в .NET Framework.

На уровне операционной системы технология впервые введена в Windows XP, однако широкое применение получила, начиная с Windows Vista.

Достоинства[править | править исходный текст]

  • Программы получили возможность однозначно указывать необходимые им ресурсы общего пользования (например, конкретные версии системных DLL).

Недостатки[править | править исходный текст]

  • Подготовка и установка сборки является более сложным и трудоемким процессом по сравнению с созданием DLL и традиционным размещением ее в системном каталоге System32.
  • Сборка, содержащая даже единственную DLL, занимает больше дискового пространства, чем собственно DLL, и требует места для регистрации в системном реестре.
  • В системах, начиная с Windows Vista, присутствует множество сборок, содержащих как различные версий системных DLL, так и другие ресурсы (например, управляющую информацию для многоязыковой поддержки). Все сборки всегда устанавливаются на диск, даже если бо́льшая часть из них не используется. Общий объем этих сборок занимает несколько гигабайт дискового пространства, что составляет немногим меньше половины всего пространства, занятого системой после установки на диск. Способы корректного удаления неиспользуемых сборок неизвестны.
  • Язык XML использует описания в текстовой форме, непонятной человеку, но доступной для изменения любым текстовым редактором (при размещении манифеста в отдельном файле).