воскресенье, 18 апреля 2010 г.

Улучшения в программе установки .NET Framework 4

Основное на чем сосредоточились разработчики – это Размер, Устойчивость к ошибкам и Производительность.

Размер распространяемого пакета был значительно уменьшен.

Сравнение размеров распространяемого пакета, начиная с 3.5 SP1

  3.5 SP1 4 Beta1 4 Beta2 4 RTM
32bit Client Profile X 34.5 MB 31.5 MB 28.8 MB
32bit Full X 77.5 MB 38.5 MB 35.3 MB
32+64bit Client Profile X 72.5 MB 48.2 MB 41 MB
32+64bit Full 237 MB 162.6 MB 55.9 MB 48.1 MB

Для достижения такого результата были предприняты следующие шаги:

- улучшена используемая технология сжатия, что позволило сократить размер на 15%;
- разделены пакеты для AMD64 и IA64, так как в большинстве случаев они не требуются вместе;
- были идентифицированы сборки функционально идентичные, но включенные ранее в нескольких вариантах под разные архитектуры, несмотря на то, что они были процессорно-нейтральными (без зависимостей от x86 или amd64 архитектуры). Теперь эти сборки включены в одном экземпляре.


Устойчивость к ошибкам значительно повысилась по сравнению с предыдущими релизами. Этого удалось добиться за счет следующего:

- удаление большого числа зависимостей и объединение инсталлятора в единый MSI;

- упрощение MSI за счет удаления и упрощения большого числа скриптов (custom actions);

- было проанализировано огромное число вариантов сбоев при установке, которые поддаются исправлению тем или иным способом, и реализованы шаги, предложенные в соответствующих KB, тем самым добавилась возможность исправить многие известные проблемы при установке, приведя ПК в порядок и, при необходимости, успешно повторить установку;

- после исследования проблем загрузки было решено использовать все три доступных способа для получения файлов: Winhttp, URLMon, и BITS, так как они сбоят в разных ситуациях и в тех случаях, когда один из способов недоступен, второй или третий может исправить ситуацию;

- Client Profile инсталлятор так же упрощен за счет того, что конфигурирование компонентов наподобие ASP.NET и WCF было вынесено в полную версию, так как она зачастую они использовались только при установке на сервер и не использовались клиентскими приложениями.


Производительность
. Ключевым показателем производительности является общее время установки. 3.5 SP1 устанавливался в среднем 12-15 минут. В 4й версии среднее время составляет 3-5 минут для клиентского профиля и 5-7 минут для полного. Проведены были следующие работы:

- исправлены ошибки при обработке файлов, устанавливающихся в несколько мест одновременно (Smart Cabbing), ранее их наличие в проекте (WiX) приводило к заметному падению производительности;

- одной из целей при разработке было упростить установку .NET Framewok, удалив различные зависимости, тем самым уменьшая и полное время установки, за счет уменьшения количества устанавливаемых компонентов. В некоторых случаях, это стало возможным, потому что требуемый функционал был встроен во все поддерживаемые ОС, либо был достаточно распространенным с тем, чтобы не беспокоиться о его наличии;

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

- в CLR была реализована возможность генерации образов в машинном коде на нескольких ядрах параллельно, инсталлятор теперь использует эту возможность, значительно увеличивая скорость работы на многоядерных машинах. Кроме того, на 64битных системах большинство .NET кода по-прежнему использует 32бит, поэтому была убрана синхронная (во время установки) генерация образов в машинных кодах для 64битных сборок;

- можно использовать Web-вариант установки как для клиентского профиля, так и полной версии , при этом для полной версии происходит распараллеливание процессов: пока ставится клиентский профиль .NET Framework, продолжается загрузка остальной части, недостающей до полной версии и если ширина канала достаточна, то вполне может получиться значительная экономия времени, так как к окончанию установки клиентского профиля будет загружено все необходимое для продолжения установки.

Подробнее:

Блог Peter Marcu, пост об улучшениях в инсталляторе

Комментариев пока нет