Насколько велики различные среды CLR? - PullRequest
2 голосов
/ 03 ноября 2008

Я подумываю о переносе проекта в управляемый код, но я слышал, что среда выполнения .NET огромна - фактически, в несколько раз больше, чем мой исполняемый файл. Это похоже на то, как хвост машет мне собакой. Но мне также сказали, что некоторые реализации CLR, такие как Mono, являются модульными, и вы можете создать собственный дистрибутив для них, который содержит только те части, которые вам действительно нужны.

Проблема в том, что мне трудно найти ответы в Google на простые вопросы по этому поводу. Насколько велики полные пакеты CLR в различных реализациях, какие поддерживают эту возможность модульного распределения, и насколько велика среда выполнения для стандартного приложения в стиле Windows (на основе форм), которое не использует тонны колоколов .NET а свистит? (В основном меня интересует способность системы Assembly легко создавать плагины и возможность встраивать скрипты в мою программу посредством JIT-компиляции.)

РЕДАКТИРОВАТЬ: Меня не интересуют размеры установщика или время загрузки. Я хочу знать размер фактической структуры, несжатой и готовой к работе, так как она будет в системах конечных пользователей.

Ответы [ 7 ]

2 голосов
/ 03 ноября 2008

Вы можете найти этот сайт интересным.

http://www.hanselman.com/smallestdotnet/

1 голос
/ 03 ноября 2008

Я вижу, вы хотите, чтобы "диск использовался при установке", а не "размер загрузки". Это не особенно полезная вещь для измерения, и ответ «Вы в принципе не можете сказать», но вот мои данные ради интереса:

Глядя в мой каталог Windows, в каталог Microsoft.NET\Framework (где все фреймворки живут), на моем компьютере с Windows Vista у меня есть следующие каталоги:

  • v1.0.3705: 400 k
  • v1.1.4322: 493 байта

Обратите внимание, однако, что на самом деле у меня не установлены эти фреймворки. Vista, вероятно, просто имеет псевдонимы для совместимости. В любом случае, вы бы никогда не разработали эти версии, так как они устарели (и, по сравнению с более новыми вещами, хламом)

Теперь вот где это становится интересным.

  • Сам каталог 'Framework' содержит 356 тыс. Файлов
  • v2.0.50727: 152 МБ
  • v3.0: 10,5 МБ
  • v3.5: 24,7 МБ

Существует также «глобальный кэш сборок» в C:\Windows\assembly, который на моем ПК работает с 530 МБ, НО , некоторые этих файлов жестко связаны с другими каталогами, поэтому они не учитываются.

Однако это вводит в заблуждение, поскольку 3.0 и 3.5 работают «поверх» 2.0, и вы не можете получить их сами.

Это необработанные данные, но это не так просто, как просто посмотреть на числа, подобные этому.

  1. У меня установлена ​​Visual Studio 2005 и 2008. Это дает мне сотни МБ отладочной библиотеки DLL.

  2. Существует также Microsoft Visual J# 2.0 Redistributable Package, который является частью установки visual studio и не требуется на клиентских ПК, если вы не используете J #, чего никто никогда не делает. Это 7 МБ

  3. В дополнение к отладочным копиям всех dll, есть также файлы документации XML, которые занимают 69 МБ в каталоге framework \ v2.0

  4. Любой пользователь Vista уже будет иметь каталоги v2.0 и v3.0, а каталог v2.0 будет немного меньше, если только он не установит .NET 3.5. Если только вы не нацелены на .NET 3.5 специально, то «затраты на развертывание» в Vista равны нулю.

Для более реалистичных «клиентских» данных у меня есть ПК с Windows XP SP2 с базовой установкой только .NET 2.0. Вот цифры на этом:

  • Windows \ Microsoft.NET \ Framework \ v2.0.50727: 64 МБ
  • Windows \ сборка: 92 МБ (обратите внимание, что из-за жестких ссылок это не так уж и много)

Я помню, как некоторое время назад для .NET 2.0 на winXP показывалось «требуется 130 мегабайт», что звучит примерно так.

Теперь, это звучит как много, но вот некоторые данные для сравнения:

Базовые dll VC ++ 2008 (vc, mfc, atl) - 10 мегабайт, и они дают вам очень мало возможностей. К тому времени, когда вы создаете приложение C ++ с любым приличным набором функций, по моему опыту вы видите около 4-5 мегабайт исполняемых файлов и dll, которые вы отправляете. Напротив, сравнительно представленное приложение .NET, которое я создал некоторое время назад, имело 800 тыс. Dll и исполняемых файлов, большинство из которых были заняты встроенными иконками и растровыми изображениями.

В наши дни совсем не требуется столько приложений, пока среда выполнения .NET не станет чистой победой.

1 голос
/ 03 ноября 2008

Как правило, вам не нужно беспокоиться о размере, поскольку на большинстве компьютеров, подключенных к Интернету, которые имеют подлинную Microsoft Windows и настроены на получение автоматических обновлений, должна быть установлена ​​платформа. Безусловно, я бы порекомендовал вам версию 2.0, так как кажется, что она самая популярная. Кроме того, имейте в виду, что существует меньшая версия (подмножество) .net Framework, называемая " client profile ".

Также подумайте об этом: если вы используете какие-либо внешние библиотеки (например, MFC / ATL / VB Runtime)? Если вы, с учетом этих зависимостей, ваше приложение может достигнуть того же размера, что и в .net framework, если не больше.

Действительно, могут быть проблемы со старыми системами (до 2000 SP4), но это зависит от вашего целевого клиента и, наконец, от ваших целей.

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

0 голосов
/ 03 ноября 2008

Маршрут, на который вы можете взглянуть, - это инструмент, который конвертирует в C ++, как http://www.codeplex.com/crossnet. Не является полной или совершенной функцией как таковой, но он позволит вам программировать на более высоком уровне, а затем иметь свободу.

0 голосов
/ 03 ноября 2008

Что вам нужно понять, так это то, что каждому языку потребуется своего рода CLR. Даже если это C / C ++, он зависит от встроенного в операционную систему. Версия Java - это JVM, и, конечно, есть версии .NET. Если вы действительно беспокоитесь о размере, кто-то связал самый маленький .NET, и это хорошее начало.

Просто помните, что у большинства людей уже установлен по крайней мере .NET1.0, и если переносимость не является для вас чрезвычайно важной, лучше всего заявить, что .NET framework - это зависимость.

0 голосов
/ 03 ноября 2008

Среда выполнения CLR устанавливается при установке инфраструктуры. Если я правильно помню, установщик .NET 2.o находится где-то в 35-40Mb. Я не уверен насчет 3.0 и 3.5, вы можете посмотреть на загрузки Microsoft, чтобы получить представление.

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

Я не знаю, как с версией Microsoft сделать ее "модульной"

0 голосов
/ 03 ноября 2008

Скотт Хансельман имеет полезную публикацию в блоге о размерах различных дистрибутивов .NET и их влиянии на распространение программного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...