.net core vs framework. производительность коллекций

Библиотека классов Net Framework

Это коллекция типов, тесно интегрирующихся со средой CLR. Библиотека классов объектно-ориентирована. Из предоставляемых ею типов управляемый пользовательский код нередко наследует функции. Благодаря этому упрощается работа и уменьшается время, затраченное на освоение новейших средств платформы. Помимо того, созданные независимыми авторами элементы можно с легкостью объединять со встроенными классами. К примеру, входящий в состав коллекций платформы набор интерфейсов можно применять при разработке пользовательских компонентов. Подобные классы легко объединятся со встроенными.

Совместимость

Среду выполнения создавали для будущего оборудования. Однако ею поддерживаются ранее написанные приложения. Благодаря взаимодействию управляемого и неконтролируемого кодов разработчики могут использовать нужные компоненты COM и элементы библиотеки DLL.

Среда выполнения увеличивает производительность. Она обеспечивает множество стандартных веб-служб. Управляемый код при этом нигде и никогда не интерпретируется. Ему дозволяется выполняться на машинном языке ПК средством компиляции по требованию (ЛТ). Для большего увеличения производительности в это время диспетчером памяти устраняется возможность ее фрагментации и увеличивается общий объем.

Код сторонних изготовителей

Что такое «Фреймворк» независимого автора? Это каркас сайтов, позволяющий избежать рутинной работы по переписыванию повторяющихся участков из проекта в проект. Главный упор делается на логику. Любой пользователь, занимающийся веб-разработкой довольно длительное время, имеет в распоряжении какие-либо готовые классы, применяемые в своих проектах. Подобный набор библиотек можно назвать «Фреймворком». Со временем программист начинает понимать, что старый код совершенно не годится, и его надо снова переделывать. Но пользователь может сэкономить время, воспользовавшись ранее написанным опытными разработчиками «Фреймворком».

Основные компоненты

Созданный компанией «Майкрософт» «Фреймворк» состоит из библиотеки классов и общеязыковой среды выполнения (CLR). Под последней подразумевается агент, руководящий кодами во время их реализации и предоставляющий несколько основных служб (сервисов управления памятью, потоками и удаленного взаимодействия).

Основными применяемыми условиями являются строгая типизация и различные проверки правильности написания шифров, гарантирующие безопасность и отсутствие сбоев. Среда выполнения создана для управления кодами.

Другим основным компонентом платформы является библиотека классов. Это полная объектно-ориентированная коллекция типов применяемых при создании приложений, начиная со стандартных, открывающихся с помощью командной строки или графического интерфейса пользователя, и заканчивая оборудованием, использующим последние возможности технологии ASP.NET, такие как XML-веб-службы и Web Forms.

Клей, который всё скрепляет вместе

Проницательный читатель заметит, что DI-контейнер, несмотря на все трудности его конфигурирования и сборки, на самом деле ничего не делает. Диспетчер и промежуточное ПО могут работать и без контейнера.

Так зачем он нужен?

А что, если — как это почти всегда бывает в реальных приложениях — у класса есть зависимость?

Давайте её добавим и посмотрим, что произойдёт.

Перезагрузим браузер, и…

Ой.

Видим .

Это происходит потому, что для функционирования требуется при его создании внедрить строковое значение, а у нас это повисло в воздухе. И здесь на помощь приходит контейнер.

Давайте определим зависимость в контейнере и передадим его в для .

Вуаля! При перезагрузке браузера вы должны увидеть Hello, bar world!.

Контейнер внедрения зависимостей

Поскольку мы настроили Composer, установка PHP-DI пройдёт практически безболезненно. Для этого снова обратимся к командной строке:

Обновите для конфигурирования и сборки контейнера.

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

Мы , поэтому нужно явно объявить зависимости (а не использовать автоматическое внедрение или аннотации) и извлечь из контейнера объект .

Заметка на полях: автоматическое внедрение зависимостей может быть полезной фичей в начале создания приложения, но в дальнейшем оно усложняет сопровождение, поскольку зависимости остаются относительно скрытыми. К тому же возможно, что через несколько лет другой разработчик подключит какую-нибудь библиотеку, и в результате несколько библиотек будут реализовывать один интерфейс. Это сломает автоматическое внедрение зависимостей и приведёт к непредсказуемому потоку багов. Разработчик, внёсший изменение, может их вообще не заметить.

Давайте ещё больше всё упростим, импортировав пространства имён там, где это возможно.

Пока что выглядит всё так, словно мы устроили суматоху ради выполнения того, что уже делали раньше.

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

Разбираемся в общем понятии

Что такое «Фреймворк»? Эта платформа является интегрированным компонентом системы, поддерживающим создание и одновременное выполнение новых приложений и XML-веб-служб.

Первую версию выпустили в 2002 году. Платформа разрабатывалась с учетом нескольких целей.

Первая: гарантирование взаимосогласованной объектно-ориентированной среды веб-программирования. Она нужна при локальном сохранении и выполнении объектных кодов и шифров, распределенных в Интернете. При этом выполнять задачи можно и удаленно.

Вторая: предоставление среды выполнения кодов, сводящей к минимуму противоречия при развертывании программ и управлении различными версиями. Она должна быть гарантией безопасного выполнения команд, включая те, что написаны неизвестными или сторонними изготовителями.

Третья: гарантирование среды выполнения кодов без проблем с производительностью при реализации сценариев или интерпретируемых шифров.

.net core vs framework. производительность коллекций

Правильная отправка ответов

Помните, я упомянул о выражении в ?

Это простой способ удостовериться, что мы получили простой ответ, но всё же это не лучший способ отправки выходных данных в браузер. Такой грубый подход заставляет делать лишнюю работу по отдаче отчетов — а этим должен заниматься другой класс, — что слишком усложняет отправку заголовков и кодов статуса, а также приводит к закрытию приложения, не давая шансов запуститься промежуточному ПО, идущему после .

Помните, что каждый промежуточный слой имеет возможность модифицировать запрос по пути в приложение, а также (в обратном порядке) модифицировать ответ по пути из приложения. В дополнение к стандартному интерфейсу для определяет структуру ещё одного HTTP-сообщения, которое будет нам полезно на обратной ветке цикла: . Если хотите, можете почитать подробнее о HTTP-сообщениях и о том, чем хороши стандарты PSR-7 Request и Response.

Обновим для возвращения .

Обновим определение контейнера, чтоб предоставлялся со свежим объектом .

Если мы сейчас обновим страницу, то получим пустой экран. Приложение возвращает из диспетчера промежуточных слоев правильный объект , а потом… что?

Просто ничего с ним не делает.

Нам нужен ещё один инструмент: эмиттер. Он находится между приложением и веб-сервером (Apache, nginx и т. д.) и отправляет ваш ответ клиенту, сгенерировавшему запрос. Эмиттер просто берёт объект Response и преобразует в инструкции, доступные для понимания серверным API.

Хорошие новости! Пакет , который мы уже используем для управления запросами, включает в себя эмиттер для ответов PSR-7.

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

Обновим для получения от диспетчера и передачи в эмиттер.

Перезагрузим страницу — мы снова в деле! Пришло время для более надёжной обработки ответов.

В строке 15 заканчивается цикл запрос/ответ и вступает в работу веб-сервер.

Что такое .NET Framework?

Прежде всего, произносится это чудо-юдо, как «дот нет фреймворк». «Точка-нет» по-русски (ну, почти по-русски). Dot Net.

Чтобы ответить на вопрос, что такое .NET Framework для Windows, нужно понять, почему он вообще существует. Ссылки на скачивание программы расположены ниже (это официальные серверы Майкрософт) – пока закачивается, взгляните на объяснения. Всё довольно просто, хотя придётся нырнуть в кое-какие вопросы программирования. Нет, программистом для понимания «Дот-Нета» быть не нужно.

Так вот: программисты – те люди, которые создают программы. Их работа подразумевает, что они «пишут код». Пишут код они на разных языках программирования. Код – объяснения для компьютера, что делать в каждый момент его работы.

Любой язык программирования – довольно примитивная штука. В языках программирования есть выражения типа сложения или умножения, но ничего более сложного. Программист желает вывести на экран окно программы? Ему потребуется написать для этого кучу кода и потратить много времени.

Так выглядит код, на котором написаны программы. Если не скачать Net Framework для Windows, то компьютер тоже ничего не поймёт.

И тут на помощь программисту приходит .NET Framework для Windows: скачать его можно бесплатно. Суть этого программного обеспечения – огромная коллекция уже написанных для программистов библиотек кода, которые позволяют вывести на экран то же окно. Такой код написан специалистами Microsoft. Он позволяет программистам не отвлекаться на ненужные вещи, а создавать свои программы.

Наглядный пример. В недрах .NET Framework есть множество детально проработанных операций – скажем:

  • инструкция для Windows, как нарисовать на экране окно;
  • готовая функция, чтобы поместить кнопки внутри окна;
  • что именно делать компьютеру, когда происходит нажатие на эти кнопки;

Программисту достаточно включить такие операции в собственный код, и не тратить по несколько суток на объяснение компьютеру элементарных вещей. Но могущество .NET Framework простирается далеко за границы простых коллекций кода и готовых функций. Эта среда разработки предоставляет программистам шикарные возможности для ускорения создания программ, для того, чтобы эти программы глубже внедрялись в сервисы Windows.

Хорошо, «Net Framework» – палочка-выручалочка для программистов. Зачем он рядовому пользователю?

Дело в том, что пока на компьютере не установлен .NET Framework, Windows не знает, как работать с программами, написанными в этой среде. Так и выскакивают на экран ошибки: «Данная программа требует установки Net.Framework». Таких программ всё больше и больше – это драйверы видеокарт Radeon и GeForce, графические редакторы типа Paint.NET, многочисленные мессенджеры и т.д.

Итак, для нормальной работы многих программ в Windows требуется программа .NET Framework (точнее – её часть под названием Redistributable Package – «распространяемый пакет»). Она нужна  не для программистов – она нужна для обычных пользователей, чтобы на их машинах запускались скачанные программы.

Устранение возможных ошибок приложений

Инфраструктура точной типизации и проверки кодов, называющаяся CTS, реализуется с помощью среды выполнения, гарантирующей надежность написанного шифра. Благодаря подобной системе обеспечивается самоописание всех элементов. Различными языковыми компиляторами компании Microsoft и независимых авторов создается управляемый код. Он соответствует системе общих типов. Этот код также принимает иные управляемые экземпляры. При этом он гарантирует строгую типизацию.

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

.net core vs framework. производительность коллекций

Библиотека классов .NET Framework.NET Framework class library

Библиотека классов платформы .NET Framework представляет собой коллекцию типов, которые тесно интегрируются со средой CLR.The .NET Framework class library is a collection of reusable types that tightly integrate with the common language runtime. Библиотека классов является объектно-ориентированной. Она предоставляет типы, от которых управляемый код пользователя может наследовать функции.The class library is object oriented, providing types from which your own managed code derives functionality. Это не только упрощает работу с типами .NET Framework, но и сокращает время изучения новых средств платформы .NET Framework.This not only makes the .NET Framework types easy to use but also reduces the time associated with learning new features of the .NET Framework. Кроме того, компоненты независимых производителей можно легко объединять с классами платформы .NET Framework.In addition, third-party components integrate seamlessly with classes in the .NET Framework.

Например, в классах коллекций .NET Framework реализуется набор интерфейсов для разработки пользовательских классов коллекций.For example, the .NET Framework collection classes implement a set of interfaces for developing your own collection classes. Пользовательские классы коллекций легко объединяются с классами .NET Framework.Your collection classes blend seamlessly with the classes in the .NET Framework.

Как и ожидается от объектно-ориентированной библиотеки классов, типы .NET Framework позволяют решать типовые задачи программирования, включая работу со строками, сбор данных, подключение к базам данных и доступ к файлам.As you would expect from an object-oriented class library, the .NET Framework types enable you to accomplish a range of common programming tasks, including string management, data collection, database connectivity, and file access. В дополнение к этим обычным задачам библиотека классов содержит типы, поддерживающие многие специализированные сценарии разработки.In addition to these common tasks, the class library includes types that support a variety of specialized development scenarios. Можете использовать платформу .NET Framework для разработки следующих типов приложений и служб:You can use .NET Framework to develop the following types of apps and services:

  • Консольные приложения.Console apps. См. статью Построение консольных приложений.See Building Console Applications.

  • Приложения с графическим интерфейсом Windows (Windows Forms).Windows GUI apps (Windows Forms). См. статью Windows Forms.See Windows Forms.

  • Приложения Windows Presentation Foundation (WPF).Windows Presentation Foundation (WPF) apps. См. статью Windows Presentation Foundation.See Windows Presentation Foundation.

  • Приложения ASP.NET.ASP.NET apps. См. статью Разработка веб-приложений с помощью ASP.NET.See Web Applications with ASP.NET.

  • службы Windows;Windows services. См. основные сведения о приложениях служб Windows.See Introduction to Windows Service Applications.

  • Сервисноориентированные приложения, использующие Windows Communication Foundation (WCF).Service-oriented apps using Windows Communication Foundation (WCF). См. статью Разработка сервисноориентированных приложений с помощью WCF.See Service-Oriented Applications with WCF.

  • Приложения, поддерживающие бизнес-процессы Windows Workflow Foundation (WF).Workflow-enabled apps using Windows Workflow Foundation (WF). См. Windows Workflow Foundation.See Windows Workflow Foundation.

Классы Windows Forms представляют собой полный набор типов, существенно упрощающих разработку графических интерфейсов пользователя Windows.The Windows Forms classes are a comprehensive set of reusable types that vastly simplify Windows GUI development. При написании приложения веб-форм ASP.NET можно использовать классы веб-форм.If you write an ASP.NET Web Form app, you can use the Web Forms classes.

.NET Framework для пользователейThe .NET Framework for users

Если вы не разрабатываете приложения .NET Framework, но используете их, вам не требуется обладать специальными знаниями о платформе .NET Framework или ее работе.If you don’t develop .NET Framework apps, but you use them, you aren’t required to have specific knowledge about .NET Framework or its operation. В большинстве случаев платформа .NET Framework совершенно прозрачна для пользователей.For the most part, the framework is completely transparent to users.

Если используется операционная система Windows, платформа .NET Framework, возможно, уже установлена на компьютере.If you’re using the Windows operating system, .NET Framework may already be installed on your computer. Кроме того, если устанавливается приложение, для работы которого требуется .NET Framework, программа установки приложения может установить нужную версию .NET Framework на компьютер.In addition, if you install an app that requires .NET Framework, the app’s setup program might install a specific version of the framework on your computer. В некоторых случаях отображается диалоговое окно с приглашением установить платформу .NET Framework.In some cases, you may see a dialog box that asks you to install .NET Framework. Если вы попытались запустить приложение и появилось это окно, при наличии подключения к Интернету можно перейти на веб-страницу, откуда можно установить отсутствующую версию .NET Framework.If you’ve just tried to run an app when this dialog box appears and if your computer has internet access, you can go to a webpage that lets you install the missing version of .NET Framework. Дополнительные сведения см. в руководстве по установке.For more information, see the Installation guide.

В общем случае не рекомендуется удалять версии платформы .NET Framework, установленные на компьютере.In general, you shouldn’t uninstall versions of .NET Framework that are installed on your computer. Для этого имеются две причины:There are two reasons for this:

  • Если приложение зависит от конкретной версии платформы .NET Framework, то при удалении этой версии его работа может быть нарушена.If an app that you use depends on a specific version of .NET Framework, that app may break if that version is removed.

  • В некоторых версиях платформы .NET Framework существуют обновления на месте на более ранние версии.Some versions of .NET Framework are in-place updates to earlier versions. Например, .NET Framework 3.5 представляет собой обновление на месте для версии 2.0, а .NET Framework 4.8 — обновление на месте для версий с 4 по 4.7.2.For example, .NET Framework 3.5 is an in-place update to version 2.0, and .NET Framework 4.8 is an in-place update to versions 4 through 4.7.2. Дополнительные сведения см. в разделе Платформа.NET Framework: версии и зависимости.For more information, see .NET Framework Versions and Dependencies.

Если вы решите удалить платформу .NET Framework в версии Windows, предшествующей Windows 8, всегда используйте для удаления средство Программы и компоненты.On Windows versions before Windows 8, if you do choose to remove .NET Framework, always use Programs and Features from Control Panel to uninstall it. Никогда не удаляйте версию платформы .NET Framework вручную.Never remove a version of .NET Framework manually. В ОС Windows 8 и более поздних версий .NET Framework представляет собой компонент операционной системы, который нельзя удалить отдельно.On Windows 8 and above, .NET Framework is an operating system component and cannot be independently uninstalled.

На одном компьютере могут одновременно существовать несколько версий платформы .NET Framework.Multiple versions of .NET Framework can coexist on a single computer at the same time. То есть при установке более поздних версий удалять предыдущие версии не требуется.This means that you don’t have to uninstall previous versions in order to install a later version.

Что такое внедрение зависимостей?

Внедрение зависимостей — это методика, при которой каждая зависимость предоставляется объекту, которому она требуется, вместо того чтобы объект обращался наружу за получением какой-то информации или функциональности.

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

Но это не лучшее решение. На чуждый метод возлагается ответственность за создание объекта нового подключения к БД, получения учётных данных и обработки любых проблем в случае сбоя подключения. В результате в приложении дублируется масса кода. А если вы попытаетесь прогнать этот класс через модульное тестирование, то не сможете. Класс тесно взаимосвязан со средой приложения и базой данных.

Давайте с самого начала не будем усложнять работу с тем, что требуется классу. Просто в первую очередь потребуем, чтобы объект PDO был внедрён в класс.

Получилось гораздо чище и проще для понимания, меньше вероятность ошибок. Благодаря подсказке типов и внедрению зависимостей метод объявляет именно то, что ему нужно для выполнения задачи, и получает необходимое без вызова из себя внешней зависимости. А когда речь пойдёт о модульном тестировании, мы окажемся готовы к моделированию подключения к БД и спокойно пройдём тест.

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

Мы воспользуемся самым популярным DI-контейнером для PHP с изобретательным названием PHP-DI. (Надо отметить, что в его документации внедрение зависимостей описано иначе, и кому-то так будет понятнее.)

Как работает PHP?

Прежде всего важно понять, как PHP-приложения взаимодействуют с внешним миром. PHP исполняет серверные приложения в цикле запрос/ответ

Всё взаимодействие с приложением — из браузера, командной строки или REST API — приходит в него в качестве запросов. При получении запроса приложение загружается, обрабатывает запрос и генерирует ответ, который передаётся обратно клиенту, а приложение закрывается. И так происходит при каждом обращении

PHP исполняет серверные приложения в цикле запрос/ответ. Всё взаимодействие с приложением — из браузера, командной строки или REST API — приходит в него в качестве запросов. При получении запроса приложение загружается, обрабатывает запрос и генерирует ответ, который передаётся обратно клиенту, а приложение закрывается. И так происходит при каждом обращении.

Улучшения в Preview 1

Улучшение качества кода в RyuJIT

  • Улучшения для фолдинга null checks – Удалите необходимость генерировать null checks в большем количестве случаев, наблюдая больше шаблонов, где null checks, вероятно, не нужны.
  • Настройка общего подвыражения (CSE) – JIT ищет и сворачивает дублирующиеся выражения, которые нужно оценивать только один раз.
  • Оптимизация «constant_string».Length – Оптимизация этого шаблона и свертывание кода до правильного целочисленного значения.
  • JIT: создание базовых списков блоков перед морфингом – Переупорядочевание фазы в JIT, чтобы раньше можно было использовать ключевые оптимизации, что привело к лучшему качеству кода и меньшему количеству работы для следующих фаз, что увеличивает пропускную способность JIT («TP» в ссылочном PR).

Консолидация репозиториев GitHub

сократили количество репозиториев на GitHub

  • dotnet/runtime (были dotnet/corefx, dotnet/coreclr, и dotnet/core-setup)
  • dotnet/aspnetcore (было множество репозиториев в aspnet org)
  • dotnet/sdk (были dotnet/sdk, dotnet/cli)

Javascript «Фреймворки»: разновидности

.net core vs framework. производительность коллекций

При разработке веб-приложений (не стоит путать с сайтами с интерактивным UI) пользователю приходится изобретать «велосипед», сначала отделяя информацию от UI-части приложения, а затем определяя ответственного за их взаимодействие. Поэтому рано или поздно программист начинает искать готовые решения для обеспечения взаимосвязи между этими компонентами. Устранить проблему помогает Javascript «Фреймворк». Он имеет более 30 разновидностей.

.net core vs framework. производительность коллекций

Jquery – это интересный Js-«Фреймворк», подкупающий относительной простотой понимания и возможностью комфортного использования. В последнее время он стал довольно популярным. Jquery-«Фреймворк» обладает вполне достойным функционалом. Для него создано множество плагинов и инструкций. Начинающие веб-разработчики могут с легкостью освоить Jquery. Поэтому он используется все чаще и чаще.

Топ-цели .NET 5

  • Унифицированный опыт .NET SDK:
    • Один BCL (библиотека базовых классов) для всех приложений .NET 5. Сегодня приложения Xamarin используют Mono BCL, но перейдут на использование .NET Core BCL, улучшая совместимость между нашими моделями приложений.
    • Мобильная разработка (Xamarin) интегрирована в .NET 5. Это означает, что .NET SDK будет поддерживать mobile. Например, вы можете использовать «dotnet new XamarinForms» для создания мобильного приложения.
  • Нативные приложения, поддерживающие несколько платформ: проект «Одно устройство», который поддерживает приложение, которое может работать на нескольких устройствах, например Window Desktop, Microsoft Duo (Android) и iOS, с использованием собственных элементов управления, поддерживаемых на этих платформах.
  • Веб-приложения, поддерживающие несколько платформ: один проект Blazor, который поддерживает приложение, которое может работать в браузерах, на мобильных устройствах и как собственное настольное приложение (например, Windows 10x).
  • Собственные облачные приложения: высокопроизводительные микросервисы с одним файлом (.exe) <50 МБ и поддержка создания нескольких проектов (API, веб-интерфейсов, контейнеров) как локально, так и в облаке.
  • Непрерывные улучшения, такие как: ускорение алгоритмов в BCL, улучшения поддержки контейнеров во время выполнения, поддержка HTTP3.

Где скачать .NET Framework. Какие версии подходят для Windows 7, 8 и 10

На большинстве компьютеров с Windows на борту уже установлен .NET Framework – обычно старые версии. А именно:

  • в Windows 7 уже встроен установленный .Net Framework версии 3.5.
  • Windows 8 и 8.1 поставляются с версиями 4.5-4.5.1;
  • Windows 10 включает в себя версию 4.6.

Современные приложения требуют свежак. Да и для общей безопасности лучше скачать .NET Framework свежей версии (на конец 2019 года это 4.8). Подходит для Windows вплоть до старенькой уже «семёрки». Установка предельно простая.

Вообще-то свежие версии программы скачиваются автоматически, через службу обновлений (Windows Update). Но слишком часто она отключена (как отключить обновления в Windows 10 – этому ремеслу была посвящена целая статья на Woocomp), поэтому можно воспользоваться обычным скачиванием с сайта Microsoft. Всё бесплатно, разумеется.

Наиболее свежая версия .NET Framework 4.8 (2020 год) подходит для скачивания и установки на Windows 10, Windows 8.1 и Windows 7 SP1. Выбор разрядности (x86 или x64) не требуется. Полная версия дистрибутива занимает около 60 мегабайт.

На сайте Microsoft есть две версии инсталлятора:

  1. Онлайн-инсталлятор. Крохотная утилита под 2 Мб, которая докачивает оставшиеся файлы в фоновом режиме. Не рекомендуем, совсем.
  2. Оффлайн-инсталлятор – не более 60 Мб. Закачайте именно его – и сохраните на будущее. Возможно, пригодится при переустановке Винды или для других компьютеров.

Установка

Сама установка предельно простая, занимает 2-3 минуты в зависимости от мощности компьютера.

  1. Скачиваем .NET Framework 4.8 Runtime с сайта Microsoft (полная версия, 111,9 Мбайт). Выбираем русский язык из списка, если он есть.
  2. Запускаем скаченный файл.
  3. Готово!

.net core vs framework. производительность коллекций

Скачать .NET Framework с официального сайта Майкрософт

Версия 4.8 самостоятельно удаляет с компьютера предыдущие релизы .NET Framework, начиная с версии 4.0 (конкретнее – версии 4, 4.5, 4.5.1, 4.5.2, 4.6.2, 4.7 и так далее, будут удалены при установке). Их не нужно деинсталлировать вручную. Более старые версии (3.5 SP1 к примеру) – отдельные программы. Они не удалятся самостоятельно, да и вообще их лучше оставить для совместимости со старыми программами.