Для чего нужен microsoft net framework в windows 7

В статье подробно рассматривается Microsoft NET Framework - что это такое, зачем он нужен и как установить его на Windows.

Если вы часто устанавливаете программы, то наверняка сталкивались с ошибками Microsoft .NET Framework. Две самых распространённых — он либо не установлен, либо установлена не та версия.

Почему так происходит? Что это такое и зачем нужен NET Framework?

  • Microsoft NET Framework — что это такое?
  • Как установить Microsoft NET Framework
  • Ещё кое-что о Microsoft Net Framework

Наверное, вы знаете, что основное занятие программистов — написание кода. При этом они используют различные языки программирования, позволяющие сказать компьютеру, что он должен делать:

Microsoft NET Framework - что это такое?

Но есть одна проблема — языки программирования довольно примитивны. С их помощью можно легко выполнять простые действия вроде сложения и умножения. А всё остальное требует долгой и усердной работы. Хотите вывести текст или изображения на экран? Тогда придётся написать много кода, используя самые простые элементы языка.

Здесь на помощь приходит .NET Framework. По сути, это обширный набор написанных фрагментов кода (созданный и поддерживающийся Microsoft), который программисты могут использовать, чтобы быстрее писать программы.

К примеру, .NET Framework берёт на себя все операции по отрисовке окон на экране. Программисту остаётся только вставить текст, продумать меню программы, задать поведение кнопок, когда на них нажимает пользователь и т.д.

Но .NET Framework — намного больше, чем просто набор дополнительного кода. Он включает в себя инструменты, призванные сократить время разработки и дополнительные API, которые программисты могут использовать для простого взаимодействия с такими сервисами как Windows Store. Вместо того чтобы вручную писать весь необходимый код для поддержки универсальной платформы Windows, можно воспользоваться .NET Framework:

Microsoft NET Framework - что это такое? - 2

Есть только один недостаток разработки приложений с использованием .NET Framework — их невозможно запустить, если .NET не установлен в вашей системе.

.NET Framework состоит из двух частей. Первая часть включает в себя набор заранее написанного кода (официально именуемого SDK, Dev Packs или «Пакеты разработчика»). Вторая часть включает в себя программу, которая может интерпретировать код .NET Framework в команды для операционной системы. Эта часть, которую называют «средой выполнения», позволяет запускать программы, написанные с использованием .NET Framework.

В этом отношении .NET Framework напоминает Java — для использования написанных на нём приложений необходимо скачать среду выполнения Java Runtime Environment.

Говоря кратко, зачем нужен Microsoft NET Framework: если вы простой пользователь, который не собирается заниматься программированием, вам потребуется только среда выполнения .NET Framework.

На большинстве компьютеров на Windows уже установлен Microsoft NET Framework, но его версия может быть устаревшей. Например, с Windows 8 и 8.1 поставляется версия 4.5.1, а с Windows 10 — версия 4.6, 4.6.1 или 4.6.2.

На момент написания статьи самая свежая версия — Microsoft NET Framework 4,7. Именно её мы и будем устанавливать:

Как установить Microsoft NET Framework

Microsoft Net Framework можно установить и через Центр обновления Windows. Но многие отключают обновление Windows, поэтому данный метод будет предпочтительнее.

Перед установкой — Microsoft Net Framework  можно установить на Windows 10, Windows 8.1 и Windows 7 SP1 как на 32-битные, так и на 64-битные системы. Чтобы установка прошла без ошибок, Microsoft рекомендует иметь на жестком диске минимум 2.5 ГБ свободного пространства.

Microsoft предлагает два вида установщиков: веб-установщик и автономный установщик. Веб-установщик весит меньше 2 МБ, и скачивает все необходимые компоненты во время инсталляции. Поэтому вам потребуется стабильное соединение с интернетом.

Автономный установщик весит около 60 МБ, и не требует доступа к интернету во время инсталляции.

Оба установщика содержат одинаковые версии NET Framework, но мы предпочитаем использовать автономный установщик. Он надёжнее, и всегда будет под рукой, если потребуется переустановить NET Framework. После скачивания процесс установки не должен вызвать затруднений — просто следуйте инструкциям, появляющимся на экране. И тогда вы быстрее поймете, зачем нужен NET Framework 4.

.NET Framework 4.7 Веб-установщик

.NET Framework 4.7 Автономный установщик

Как установить Microsoft NET Framework - 2

Обратите внимание, что версия 4.7 — это выполняемое обновление версий 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1 и 4.6.2. Поэтому не удаляйте предыдущие версии после установки. NET Framework 3.5 SP1 и более старые версии устанавливаются отдельно.

По умолчанию NET Framework инсталлирует английскую версию независимо от того, какой вы используете установщик. Для локализации нужно скачать соответствующий языковой пакет. На данный момент языковые пакеты для версии 4.7 доступны только в виде автономных установщиков.

Перейдя по ссылке, приведенной ниже, выберите необходимый язык, дождитесь, пока страница перезагрузится, и нажмите «Скачать».

Языковой пакет .NET Framework 4.7

Еще одна причина, зачем нужен NET Framework. Несколько лет назад Microsoft открыла исходный код NET Framework, позволив всем желающим вносить свой вклад в разработку платформы. В результате Microsoft стала самой активной организацией на GitHub.

Что это значит для вас? В сущности, то, что приложения, написанные на .NET Framework в будущем станут только популярнее и качественнее. Поэтому, почему бы не установить .NET Framework прямо сейчас?

Содержание:

  • 1 NET Framework – для чего он нужен и можно ли удалить
  • 2 Как узнать, какая версия NET Framework установлена
    • 2.1 С помощью Проводника и командной строки
    • 2.2 Через редактор реестра
    • 2.3 С помощью сторонних утилит
  • 3 Как скачать NET Framework для Windows 7/10
  • 4 Значение NET Framework

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

Ошибка из-за отсутствия нужной версии NET Framework

Мы уже выяснили, что многие программы не будут нормально работать без кое-каких дополнительных модулей, таких как NET Framework. Пользователи Winfows 7/10, наверняка, не раз встречались с этим компонентом, однако вряд ли задумывались о его роли и выполняемых функциях. Спешим восполнить этот пробел.

Итак, что такое Microsoft .NET Framework, для чего он нужен и можно ли без него обойтись? Если говорить простым языком, то NET Framework представляет собой набор DLL-библиотек или универсальный программный код, используемый разными программами. Правда, такое определение вряд ли прольет достаточно света на тему предмета, поэтому мы немного углубимся в историю.

Дело в том, что изначально система Windows, как платформа, была ориентирована на язык программирования С, на котором должны были разрабатываться предназначенные для нее приложения. Однако этот язык оказался не слишком удобным и к тому же мало подходящим для создания сложных конструкций. Появление ОПП и С++ существенно упростило разработку программного обеспечения, но по мере появление новых операционных систем и моделей процессоров программисты всё чаще стали сталкиваться с проблемами несовместимости.

Нужна была некая общая платформа, позволявшая работать самым разным приложениям в разных версиях и редакциях Windows. На тот момент в системе уже имелся набор DLL-библиотек, но они опять же поддерживали только приложения, написанные на языке С. Имелись и более серьезные проблемы, которые предстояло решить Microsoft, например, неуправляемый код, препятствующий разграничению прав для запускаемых программ.

Решением стала интеграция виртуальной машины Java, разработанной компанией Sun и служивший как бы прослойкой между Windows, сторонними приложениями и аппаратной частью компьютера. Однако сотрудничество Microsoft и Sun оказалось недолгим, и в 2001 году компания Microsoft представила собственную универсальную платформу для разработки приложений, получившую название .NET Framework и поставившую точку в вопросе совместимости.

NET Framework

Будучи универсальным, модуль NET Framework позволяет запускать поддерживающие технологию NET программы не только на Windows, но и в других системах, причем программа может быть разработана на любом языке программирования, включая те языки, которая Windows не «понимает». Конечно, для работы такого ПО требуются определенные условия, но сам факт, что такое возможно, является большим плюсом платформы NET Framework.

На вопрос, что это за программа NET Framework и нужна ли она, мы, надо полагать, ответили. Можно ли ее удалить, скажем, ради экономии места на жестком диске? Да, за исключением той версии, которая поставляется вместе с Windows. Делать это, однако, не рекомендуется без особой нужды, так как некоторые сторонние программы, зависящие от NET Framework, могут перестать запускаться.

Как узнать, какая версия NET Framework установлена

Теперь переходим к следующему не менее важному вопросу. В требованиях к программному обеспечению нередко указывается, что программа нуждается в такой-то версии фреймворка. В связи с этим у пользователя может возникнуть необходимость узнать, какой NET Framework установлен в его Windows 7/10. Сделать это нетрудно – существует несколько способов выяснить, какая версия компонента имеется в системе.

С помощью Проводника и командной строки

Все пакеты NET Framework устанавливаются в каталоги C:/Windows/Microsoft.NET/Framework и /Framework64 (в 64-разрядных ОС). Каждой версии соответствует отдельная директория, название которой начинается на V (версия), например, v3.0, v3.5 и так далее. Соответственно, определить редакцию компонента не составит труда, если перейти в Проводнике по указанному адресу и посмотреть названия папок.

Папка с пакетами NET Framework

Как вариант, содержимое каталогов можно вывести в командной строке, выполнив команду dir %WINDIR%/Microsoft.Net/Framework/v* /O:-N /B. По итогам запроса в консоли будут показаны все установленные версии фреймворка за исключением версии 4.5, находящейся в папке v4.0.ХХХХ.

Вывод всех версий Microsoft NET Framework в командной строке

Через редактор реестра

Еще одна методика предполагает использование реестра. Запустив командой regedit редактор реестра, разверните в левой колонке ветку HKLM/SOFTWARE/Microsoft/NET Framework Setup/NDP. В последнем подразделе вы увидите папки, имена которых будут соответствовать имеющимся в Windows версиям NET Framework.

Просмотр установленных версий NET Framework в реестре

Чтобы определить, установлена ли в системе версия NET Framework 4.5 и выше, зайдите в расположение v4/Full и обратите внимание на параметры Install и Version. Значение 1 для первого параметра будет означать, что компонент установлен и активен, значение второго параметра содержит полный номер версии компонента. Это же касается и других редакций фреймворка. Отсутствие подкаталога Full укажет на то, что компонент NET Framework 4.5 или более поздней версии не установлен.

Узнаем через реестр, установлена ли в системе версия NET Framework 4.5 или выше

С помощью сторонних утилит

Тем, кто не желает утруждать себя копанием в реестре, рекомендуем воспользоваться сторонними инструментами. Скачайте с сайта разработчика www.asoft.be/prod_netver.html утилиту «ASoft .NET Version Detector» и запустите. Утилита выведет список установленных версий фреймворка в нижней части окна в поле с голубым фоном. Также тулза покажет обновления компонента.

Утилита ASoft .NET Version Detector

Как скачать NET Framework для Windows 7/10

Многие сторонние программы, требующие для своей работы наличие NET Framework той или иной редакции, способны инициировать скачивание и установку пакета, но целом ряде случаев этим придется заниматься самому пользователю. Найти и скачать NET Framework можно без проблем на официальном сайте Microsoft, перейдя по адресу www.microsoft.com/ru-ru/search?q=NET+Framework и выбрав нужную версию компонента.

Пакеты NET Framework на сайте Microsoft

Скачивание NET Framework с сайта Microsoft

Набор библиотек также доступен на сторонних ресурсах, например, на dlltop.ru/soft/135-microsoft-net-framework.

Как скачать NET Framework с сайта dlltop.ru

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

Установка NET Framework в Windows

Значение NET Framework

Даже зная, что такое NET Framework, обычные пользователи как-то не задумываются о ценности и значимости этого компонента. Иначе относятся к нему разработчики программного обеспечения. Для них, и в особенности для тех, кто программирует на Visual Basic .NET и C# NET Framework, это нечто большее, чем просто набор библиотек. Это полноценная среда разработки, скрывающая в себе массу возможностей и инструментов, без которых создание современных приложений для операционной системы Windows было бы трудновыполнимой задачей.

.NET and .NET Framework

.NET is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.

There are various implementations of .NET. Each implementation allows .NET code to execute in different places—Linux, macOS, Windows, iOS, Android, and many more.

  1. .NET Framework is the original implementation of .NET. It supports running websites, services, desktop apps, and more on Windows.
  2. .NET is a cross-platform implementation for running websites, services, and console apps on Windows, Linux, and macOS. .NET is open source on GitHub. .NET was previously called .NET Core.
  3. Xamarin/Mono is a .NET implementation for running apps on all the major mobile operating systems, including iOS and Android.

.NET Standard is a formal specification of the APIs that are common across .NET implementations. This allows the same code and libraries to run on different implementations.

Each .NET programming language has a compiler that turns your code into Common Intermediate Language. At runtime, the Common Language Runtime turns the compiled code into machine code and runs it.

Architecture of .NET Framework

The two major components of .NET Framework are the Common Language Runtime and the .NET Framework Class Library.

  • The Common Language Runtime (CLR) is the execution engine that handles running applications. It provides services like thread management, garbage collection, type-safety, exception handling, and more.
  • The Class Library provides a set of APIs and types for common functionality. It provides types for strings, dates, numbers, etc. The Class Library includes APIs for reading and writing files, connecting to databases, drawing, and more.

.NET applications are written in the C#, F#, or Visual Basic programming language. Code is compiled into a language-agnostic Common Intermediate Language (CIL). Compiled code is stored in assemblies—files with a .dll or .exe file extension.

When an app runs, the CLR takes the assembly and uses a just-in-time compiler (JIT) to turn it into machine code that can execute on the specific architecture of the computer it is running on.

Read more: What is the .NET Framework

Release history

The following releases have reached end of life, meaning they’re no longer supported. We recommend moving to a supported release.

Version Release date End of support
.NET Framework 4.6.1 November 30, 2015 April 26, 2022
.NET Framework 4.6 July 20, 2015 April 26, 2022
.NET Framework 4.5.2 May 5, 2014 April 26, 2022
.NET Framework 4.5.1 October 17, 2013 January 12, 2016
.NET Framework 4.5 August 15, 2012 January 12, 2016
.NET Framework 4.0 April 12, 2010 January 12, 2016

.NET Framework FAQ

What is .NET Framework used for?

.NET Framework is used to create and run software applications. .NET apps can run on many operating systems, using different implementations of .NET. .NET Framework is used for running .NET apps on Windows.

Who uses .NET Framework?

Software developers and the users of their applications both use .NET Framework:

  • Users of applications built with the .NET Framework need to have .NET Framework installed. In most cases, .NET Framework is already installed with Windows. If needed, you can download .NET Framework.
  • Software developers use .NET Framework to build many different types of applications—websites, services, desktop apps, and more with Visual Studio. Visual Studio is an integrated development environment (IDE) that provides development productivity tools and debugging capabilities. See the .NET customer showcase for examples of what people are building with .NET.

Why do I need .NET Framework?

You need .NET Framework installed to run applications on Windows that were created using .NET Framework. It’s already included in many versions of Windows. You only need to download and install .NET Framework if prompted to do so.

How does .NET Framework work?

.NET Framework applications are written in C#, F#, or Visual Basic and compiled to Common Intermediate Language (CIL). The Common Language Runtime (CLR) runs .NET applications on a given machine, converting the CIL to machine code. See Architecture of .NET Framework for more info.

What are the main components/features of .NET Framework?

The two major components of .NET Framework are the Common Language Runtime (CLR) and the .NET Framework Class Library. The CLR is the execution engine that handles running applications. The Class Library provides a set of APIs and types for common functionality. See Architecture of .NET Framework for more info.

What is the difference between .NET and .NET Framework?

.NET and .NET Framework share many of the same components and you can share code across the two. Some key differences include:

  • .NET is cross-platform and runs on Linux, macOS, and Windows. .NET Framework only runs on Windows.
  • .NET is open-source and accepts contributions from the community. The .NET Framework source code is available but doesn’t take direct contributions.
  • All of the innovation happens in .NET.
  • .NET Framework is included in Windows and automatically updated machine-wide by Windows Update. .NET is shipped independently.

See .NET vs. .NET Framework for server apps for more details.

Can you have multiple .NET Frameworks installed?

Some versions of .NET Framework are installed side-by-side, while others will upgrade an existing version (known as an in-place update). In-place updates occur when two .NET Framework versions share the same CLR version.

For example, installing .NET Framework 4.8 on a machine with .NET Framework 4.7.2 and 3.5 installed will perform an in-place update of the 4.7.2 installation and leave 3.5 installed separately.

CLR version used by .NET Framework versions

.NET Framework version CLR version
.NET Framework 4.x 4.0
.NET Framework 2.x and 3.x 2.0
.NET Framework 1.1 1.1
.NET Framework 1.0 1.0

How much does .NET Framework cost?

.NET Framework is free, like the rest of the .NET platform. There are no fees or licensing costs, including for commercial use. See .NET is free for more details.

Which version of .NET Framework should I use?

In most cases, you should use the latest stable release. Currently, that’s .NET Framework 4.8.1 .

Applications that were created with any 4.x version of .NET Framework will run on .NET Framework 4.8.1 . To run an application that was created for an earlier version (for example, .NET Framework 3.5), you should install that version. See Download .NET Framework for a complete list.

What is the support policy for .NET Framework?

.NET Framework 4.8.1 is the latest version of .NET Framework and will continue to be distributed with future releases of Windows. As long as it is installed on a supported version of Windows, .NET Framework 4.8.1 will continue to also be supported.

See the .NET Framework support policy for more details

Содержание

    • Framework Class Library
    • Language Integrated Query
    • Windows Presentation Foundation
    • Windows Communication Foundation
    • ADO.NET
    • ASP.NET
    • Достоинства
    • Недостатки
  • Скачать Microsoft .NET Framework бесплатно
  • Вопросы и ответы

Логотип программы Microsoft .Net Framework (2)

Практически каждый пользователь, при установке некоторых программ, сталкивался с сообщением следующего содержания: «На компьютере отсутствует Microsoft .Net Framework». Однако, мало кто понимает, что это такое и зачем его он нужен.

Microsoft .Net Framework — это специальное ПО, так называемая платформа, которая нужна для функционирования многих программ написанных по технологии «.Net». В его состав входит библиотека классов (FCL) и среда исполнения (CLR). Главный замысел производителя — это активное взаимодействие различных компонентов между собой. Например, если какой то запрос был написан на языке C++, то с использованием платформы, он без проблем сможет обратиться к классу языка Delfy и т.п. Это очень удобно и экономит программистам время.

Framework Class Library

Framework Class Library (FCL) — библиотека включает в себя компоненты, которые нужны в разных направлениях работы. Это и редактирование интерфейса пользователя, работа с файлами, серверами, базой данных и т.п.

Language Integrated Query

Это специальный язык запросов, который состоит из нескольких компонентов. В зависимости от источника, для которого составлен запрос, подбирается тот или иной компонент LINQ. Очень похож на другой язык SQL.

Windows Presentation Foundation

WPF- включает средства визуальных оболочек. Технология использует собственный язык XAML. С помощью компонента WPF разрабатываются клиентские программы с графической оболочкой. Это могут быть как самостоятельные приложения так и различные дополнительные компоненты и плагины для браузеров.

Microsoft .Net Framework

При разработке должны использоваться определенные языки программирования, например: C#, VB, C++, Ruby, Python, Delphi. Также обязательно наличие технологии DirectX. Работать можно в Expression Blend или Visual Studio.

Windows Communication Foundation

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

ADO.NET

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

Microsoft .Net Framework

ASP.NET

Неотъемлемая часть Microsoft .Net Framework. Данная технология пришла на смену Microsoft ASP. Компонент, в основном, нужен для работы в Веб. С его помощью создаются различные Веб-приложения от производителя Microsoft. Он значительно облегчает разработку, за счет включения в состав многих функций и возможностей.

Достоинства

  • Отличная совместимость с программами;
  • Бесплатность;
  • Легкая установка.
  • Недостатки

    Не обнаружено.

    Для установки программ на компьютер нужна определенная версия Microsoft .Net Framework. Но это не говорит о том, что для 10 программ вы должны поставить 10 фреймверков. Имеется в виду, что для установки ПО, на компьютере должна присутствовать версия Microsoft .Net Framework не ниже какой-то, например, 4.5. Многие приложения устанавливают Framework автоматически при его отсутствии.

    Скачать Microsoft .NET Framework бесплатно

    Загрузить веб-установщик Microsoft .NET Framework 4 с официального сайта
    Загрузить автономный установщик Microsoft .NET Framework 4.7.2 с официального сайта

    Lumpics.ru

    Похожие программы и статьи:

    Для чего нужна программа .NET Framework

    Рейтинг:
    3.63
    из 5
    (43 голосов)

    Система: Windows 7, 8, 8.1, 10, XP, Vista

    Категория: Обзоры программ

    Размер: 50 MB

    Язык: Русский

    Версия: 4.7.2

    Microsoft .Net Framework представляет собой набор библиотек и системных компонентов, необходимых для корректного запуска и работы приложений, основанных на технологии Net Framework

    .NET Framework

    Microsoft .NET logo.svg
    Dot-Net.svg

    .NET Framework component stack

    Developer(s) Microsoft
    Initial release February 13, 2002; 20 years ago
    Final release

    4.8.1
    / August 9, 2022; 5 months ago[1]

    Operating system Windows 98 or later, Windows NT 4.0 or later
    Platform IA-32, x86-64, and ARM
    Successor .NET
    Type Software framework
    License Mixed; see § Licensing
    Website dotnet.microsoft.com Edit this on Wikidata

    The .NET Framework (pronounced as «dot net») is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment (in contrast to a hardware environment) named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called «managed code». FCL and CLR together constitute the .NET Framework.

    FCL provides the user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. Programmers produce software by combining their source code with .NET Framework and other libraries. The framework is intended to be used by most new applications created for the Windows platform. Microsoft also produces an integrated development environment for .NET software called Visual Studio.

    .NET Framework began as proprietary software, although the firm worked to standardize the software stack almost immediately, even before its first release. Despite the standardization efforts, developers, mainly those in the free and open-source software communities, expressed their unease with the selected terms and the prospects of any free and open-source implementation, especially regarding software patents. Since then, Microsoft has changed .NET development to more closely follow a contemporary model of a community-developed software project, including issuing an update to its patent promising to address the concerns.[2]

    In April 2019, Microsoft released .NET Framework 4.8, the last version of the framework as a proprietary offering. Only monthly security and reliability bug fixes to that version have been released since then. No further changes to that version are planned.[3]

    History[edit]

    Microsoft began developing .NET Framework in the late 1990s, originally under the name of Next Generation Windows Services (NGWS), as part of the .NET strategy. By early 2000, the first beta versions of .NET 1.0 were released.

    In August 2000, Microsoft, and Intel worked to standardize Common Language Infrastructure (CLI) and C#. By December 2001, both were ratified Ecma International (ECMA) standards.[4][5] International Organization for Standardization (ISO) followed in April 2003. The current version of ISO standards are ISO/IEC 23271:2012 and ISO/IEC 23270:2006.[6][7]

    While Microsoft and their partners hold patents for CLI and C#, ECMA and ISO require that all patents essential to implementation be made available under «reasonable and non-discriminatory terms». The firms agreed to meet these terms, and to make the patents available royalty-free. However, this did not apply to the part of the .NET Framework not covered by ECMA-ISO standards, which included Windows Forms, ADO.NET, and ASP.NET. Patents that Microsoft holds in these areas may have deterred non-Microsoft implementations of the full framework.[8]

    On October 3, 2007, Microsoft announced that the source code for .NET Framework 3.5 libraries was to become available under the Microsoft Reference Source License (Ms-RSL[a]).[9] The source code repository became available online on January 16, 2008, and included BCL, ASP.NET, ADO.NET, Windows Forms, WPF, and XML. Scott Guthrie of Microsoft promised that LINQ, WCF, and WF libraries were being added.[10]

    The .NET Compact Framework and .NET Micro Framework variants of the .NET Framework provided support for other Microsoft platforms such as Windows Mobile, Windows CE and other resource-constrained embedded devices. Silverlight provided support for web browsers via plug-ins.

    Microsoft .NET Framework v4.5 logo

    In November 2014, Microsoft also produced an update to its patent grants, which further extends the scope beyond its prior pledges. Prior projects like Mono existed in a legal grey area because Microsoft’s earlier grants applied only to the technology in «covered specifications», including strictly the 4th editions each of ECMA-334 and ECMA-335. The new patent promise, however, places no ceiling on the specification version, and even extends to any .NET runtime technologies documented on MSDN that have not been formally specified by the ECMA group, if a project chooses to implement them. This allows Mono and other projects to maintain feature parity with modern .NET features that have been introduced since the 4th edition was published without being at risk of patent litigation over the implementation of those features. The new grant does maintain the restriction that any implementation must maintain minimum compliance with the mandatory parts of the CLI specification.[11]

    On March 31, 2016, Microsoft announced at Microsoft Build that they will completely relicense Mono under an MIT License even in scenarios where formerly a commercial license was needed.[12] Microsoft also supplemented its prior patent promise for Mono, stating that they will not assert any «applicable patents» against parties that are «using, selling, offering for sale, importing, or distributing Mono.»[13][14] It was announced that the Mono Project was contributed to the .NET Foundation. These developments followed the acquisition of Xamarin, which began in February 2016 and was finished on March 18, 2016.[15]

    Microsoft’s press release highlights that the cross-platform commitment now allows for a fully open-source, modern server-side .NET stack. Microsoft released the source code for WPF, Windows Forms and WinUI on December 4, 2018.[16]

    Architecture[edit]

    Visual overview of the Common Language Infrastructure (CLI)

    Common Language Infrastructure[edit]

    Common Language Infrastructure (CLI) provides a language-neutral platform for application development and execution. By implementing the core aspects of .NET Framework within the scope of CLI, these functions will not be tied to one language but will be available across the many languages supported by the framework.

    Common Language Runtime[edit]

    .NET Framework includes the Common Language Runtime (CLR). It serves as the execution engine of .NET Framework and offers many services such as memory management, type safety, exception handling, garbage collection, security and thread management. All programs written for .NET Framework are executed by the CLR.

    Programs written for .NET Framework are compiled into Common Intermediate Language code (CIL), as opposed to being directly compiled into machine code. During execution, an architecture-specific just-in-time compiler (JIT) turns the CIL code into machine code.

    Assemblies[edit]

    Compiled CIL code is stored in CLI assemblies. As mandated by the specification, assemblies are stored in Portable Executable (PE) file format, common on Windows platform for all dynamic-link library (DLL) and executable EXE files. Each assembly consists of one or more files, one of which must contain a manifest bearing the metadata for the assembly. The complete name of an assembly (not to be confused with the file name on disk) contains its simple text name, version number, culture, and public key token. Assemblies are considered equivalent if they share the same complete name.

    A private key can also be used by the creator of the assembly for strong naming. The public key token identifies which private key an assembly is signed with. Only the creator of the key pair (typically the person signing the assembly) can sign assemblies that have the same strong name as a prior version assembly, since the creator possesses the private key. Strong naming is required to add assemblies to Global Assembly Cache.

    Starting with Visual Studio 2015, .NET Native compilation technology allows for the compilation of .NET code of Universal Windows Platform apps directly to machine code rather than CIL code, but the app must be written in either C# or Visual Basic.NET.[17]

    Class library[edit]

    .NET Framework includes an implementation of the CLI foundational Standard Libraries. The .NET Framework Class Library (FCL) is organized in a hierarchy of namespaces. Most of the built-in application programming interfaces (APIs) are part of either System.* or Microsoft.* namespaces. These class libraries implement many common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation. The class libraries are available for all CLI compliant languages. The FCL implements the CLI Base Class Library (BCL) and other class libraries—some are specified by CLI and other are Microsoft specific.

    BCL includes a small subset of the entire class library and is the core set of classes that serve as the basic API of CLR.[18] For .NET Framework most classes considered being part of BCL reside in mscorlib.dll, System.dll and System.Core.dll. BCL classes are available in .NET Framework as well as its alternative implementations including .NET Compact Framework, Microsoft Silverlight, .NET Core and Mono.

    FCL refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including BCL, Windows Forms, ASP.NET, and Windows Presentation Foundation (WPF) but also extensions to the base class libraries ADO.NET, Language Integrated Query (LINQ), Windows Communication Foundation (WCF), and Workflow Foundation (WF). FCL is much larger in scope than standard libraries for languages like C++, and comparable in scope to standard libraries of Java.

    With the introduction of alternative implementations (e.g., Silverlight), Microsoft introduced the concept of Portable Class Libraries (PCL) allowing a consuming library to run on more than one platform. With the further proliferation of .NET platforms, the PCL approach failed to scale (PCLs are defined intersections of API surface between two or more platforms).[19] As the next evolutionary step of PCL, the .NET Standard Library was created retroactively based on the System.Runtime.dll based APIs found in UWP and Silverlight. New .NET platforms are encouraged to implement a version of the standard library allowing them to re-use extant third-party libraries to run without new versions of them. The .NET Standard Library allows an independent evolution of the library and app model layers within the .NET architecture.[20]

    NuGet is the package manager for all .NET platforms. It is used to retrieve third-party libraries into a .NET project with a global library feed at NuGet.org.[21] Private feeds can be maintained separately, e.g., by a build server or a file system directory.

    C++/CLI[edit]

    Microsoft introduced C++/CLI in Visual Studio 2005, which is a language and means of compiling Visual C++ programs to run within the .NET Framework. Some parts of the C++ program still run within an unmanaged Visual C++ Runtime, while specially modified parts are translated into CIL code and run with the .NET Framework’s CLR.

    Assemblies compiled using the C++/CLI compiler are termed mixed-mode assemblies since they contain native and managed code in the same DLL.[22] Such assemblies are more complex to reverse engineer since .NET decompilers such as .NET Reflector reveal only the managed code.

    Design principle[edit]

    Interoperability[edit]

    Because computer systems commonly require interaction between newer and older applications, .NET Framework provides means to access functions implemented in newer and older programs that execute outside .NET environment. Access to Component Object Model (COM) components is provided in System. Runtime. InteropServices and System. Enterprise Services namespaces of the framework. Access to other functions is via Platform Invocation Services (P/Invoke). Access to .NET functions from native applications is via the reverse P/Invoke function.

    Interoperability enables you to preserve and take advantage of existing investments in unmanaged code. Code that runs under the control of the common language runtime (CLR) is called managed code, and code that runs outside the CLR is called unmanaged code

    Language independence[edit]

    .NET Framework introduces a Common Type System (CTS) that defines all possible data types and programming constructs supported by CLR and how they may or may not interact conforming to CLI specifications. Because of this feature, .NET Framework supports the exchange of types and object instances between libraries and applications written using any conforming .NET language.

    Type safety[edit]

    CTS and the CLR used in .NET Framework also enforce type safety. This prevents ill-defined casts, wrong method invocations, and memory size issues when accessing an object. This also makes most CLI languages statically typed (with or without type inference). However, starting with .NET Framework 4.0, the Dynamic Language Runtime extended the CLR, allowing dynamically typed languages to be implemented atop the CLI.

    Portability[edit]

    While Microsoft has never implemented the full framework on any system except Microsoft Windows, it has engineered the framework to be cross-platform,[23] and implementations are available for other operating systems (see Silverlight and § Alternative implementations). Microsoft submitted the specifications for CLI (which includes the core class libraries, CTS, and CIL),[24][25][26] C#,[27] and C++/CLI[28] to both Ecma International (ECMA) and International Organization for Standardization (ISO), making them available as official standards. This makes it possible for third parties to create compatible implementations of the framework and its languages on other platforms.

    Security[edit]

    .NET Framework has its own security mechanism with two general features: Code Access Security (CAS), and validation and verification. CAS is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine or has been downloaded from the Internet). CAS uses evidence to determine the permissions granted to the code. Other codes can demand that calling code be granted a specified permission. The demand causes CLR to perform a call stack walk: every assembly of each method in the call stack is checked for the required permission; if any assembly is not granted the permission a security exception is thrown.

    Managed CIL bytecode is easier to reverse-engineer than native code, unless obfuscated.[29] .NET decompiler programs enable developers with no reverse-engineering skills to view the source code behind unobfuscated .NET assemblies. In contrast, apps compiled to native machine code are much harder to reverse-engineer, and source code is almost never produced successfully, mainly because of compiler optimizations and lack of reflection.[30] This creates concerns in the business community over the possible loss of trade secrets and the bypassing of license control mechanisms. To mitigate this, Microsoft has included Dotfuscator Community Edition with Visual Studio .NET since 2002.[b] Third-party obfuscation tools are also available from vendors such as VMware, V.i. Labs, Turbo, and Red Gate Software. Method-level encryption tools for .NET code are available from vendors such as SafeNet.

    Memory management[edit]

    CLR frees the developer from the burden of managing memory (allocating and freeing up when done); it handles memory management itself by detecting when memory can be safely freed. Instantiations of .NET types (objects) are allocated from the managed heap; a pool of memory managed by CLR. As long as a reference to an object exists, which may be either direct, or via a graph of objects, the object is considered to be in use. When no reference to an object exists, and it cannot be reached or used, it becomes garbage, eligible for collection.

    .NET Framework includes a garbage collector (GC) which runs periodically, on a separate thread from the application’s thread, that enumerates all the unusable objects and reclaims the memory allocated to them. It is a non-deterministic, compacting, mark-and-sweep garbage collector. GC runs only when a set amount of memory has been used or there is enough pressure for memory on the system. Since it is not guaranteed when the conditions to reclaim memory are reached, GC runs are non-deterministic. Each .NET application has a set of roots, which are pointers to objects on the managed heap (managed objects). These include references to static objects, objects defined as local variables or method parameters currently in scope, and objects referred to by CPU registers.[31] When GC runs, it pauses the application and then, for each object referred to in the root, it recursively enumerates all the objects reachable from the root objects and marks them as reachable. It uses CLI metadata and reflection to discover the objects encapsulated by an object, and then recursively walk them. It then enumerates all the objects on the heap (which were initially allocated contiguously) using reflection. All objects not marked as reachable are garbage.[31] This is the mark phase.[32] Since the memory held by garbage is of no consequence, it is considered free space. However, this leaves chunks of free space between objects which were initially contiguous. The objects are then compacted together to make free space on the managed heap contiguous again.[31][32] Any reference to an object invalidated by moving the object is updated by GC to reflect the new location.[32] The application is resumed after garbage collection ends. The latest version of .NET framework uses concurrent garbage collection along with user code, making pauses unnoticeable, because it is done in the background.[33]

    The garbage collector used by .NET Framework is also generational.[34] Objects are assigned a generation. Newly created objects are tagged Generation 0. Objects that survive one garbage collection are tagged Generation 1. Generation 1 objects that survive another collection are Generation 2. The framework uses up to Generation 2 objects.[34] Higher generation objects are garbage collected less often than lower generation objects. This raises the efficiency of garbage collection, as older objects tend to have longer lifetimes than newer objects.[34] By ignoring older objects in most collection runs, fewer checks and compaction operations are needed in total.[34]

    Performance[edit]

    When an application is first launched, the .NET Framework compiles the CIL code into executable code using its just-in-time compiler, and caches the executable program into the .NET Native Image Cache.[35][36] Due to caching, the application launches faster for subsequent launches, although the first launch is usually slower. To speed up the first launch, developers may use the Native Image Generator utility to manually ahead-of-time compile and cache any .NET application.[36]

    The garbage collector, which is integrated into the environment, can introduce unanticipated delays of execution over which the developer has little direct control. «In large applications, the number of objects that the garbage collector needs to work with can become very large, which means it can take a very long time to visit and rearrange all of them.»[37]

    .NET Framework provides support for calling Streaming SIMD Extensions (SSE) via managed code from April 2014 in Visual Studio 2013 Update 2. However, Mono has provided support for SIMD Extensions as of version 2.2 within the Mono.Simd namespace in 2009.[38] Mono’s lead developer Miguel de Icaza has expressed hope that this SIMD support will be adopted by CLR’s ECMA standard.[39] Streaming SIMD Extensions have been available in x86 CPUs since the introduction of the Pentium III. Some other architectures such as ARM and MIPS also have SIMD extensions. In case the CPU lacks support for those extensions, the instructions are simulated in software.[40][41]

    Alternative implementations[edit]

    .NET Framework was the predominant implementation of .NET technologies, until the release of .NET. Other implementations for parts of the framework exist. Although the runtime engine is described by an ECMA-ISO specification, other implementations of it may be encumbered by patent issues; ISO standards may include the disclaimer, «Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO shall not be held responsible for identifying any or all such patent rights.»[42] It is harder to develop alternatives to FCL, which is not described by an open standard and may be subject to copyright restrictions. Also, parts of FCL have Windows-specific functions and behavior, so implementation on non-Windows platforms can be problematic.

    Some alternative implementations of parts of the framework are listed here.

    • .NET Micro Framework is a .NET platform for extremely resource-constrained devices. It includes a small version of CLR and supports development in C# (though some developers were able to use VB.NET,[43] albeit with an amount of hacking, and with limited functionalities) and debugging (in an emulator or on hardware), both using Microsoft Visual Studio. It also features a subset of .NET Framework Class Library (about 70 classes with about 420 methods), a GUI framework loosely based on WPF, and additional libraries specific to embedded applications.
    • Mono is an implementation of CLI and FCL, and provides added functions. It is licensed as free software under the MIT License. It includes support for ASP.NET, ADO.NET, and Windows Forms libraries for a wide range of architectures and operating systems. It also includes C# and VB.NET compilers.
    • Portable.NET (part of DotGNU) provides an implementation of CLI, parts of FCL, and a C# compiler. It supports a variety of CPUs and operating systems. The project was discontinued, with the last stable release in 2009.
    • Microsoft Shared Source Common Language Infrastructure is a non-free implementation of CLR. However, the last version runs on Windows XP SP2 only, and has not been updated since 2006. Thus, it does not contain all features of version 2.0 of .NET Framework.
    • CrossNet[44] is an implementation of CLI and parts of FCL. It is free software using an open source MIT License.

    Licensing[edit]

    Microsoft managed code frameworks and their components are licensed as follows:

    See also[edit]

    • .NET (formerly .NET Core)
    • List of CLI languages
    • Standard Libraries (CLI), the .NET standard libraries
    • Base Class Library (BCL)

    Notes[edit]

    1. ^ a b The license was formerly abbreviated Ms-RL, but Ms-RL now refers to the Microsoft Reciprocal License.
    2. ^ Dotfuscator Community Edition 4.0

    References[edit]

    1. ^ «Download .NET Framework 4.8 Offline Installer». Microsoft. Archived from the original on August 15, 2019. Retrieved August 15, 2019.
    2. ^ «Microsoft gets on board with open source». Opensource.com. November 19, 2014. Retrieved January 2, 2020.
    3. ^ gewarren. «.NET Framework & Windows OS versions». docs.microsoft.com. Retrieved November 21, 2020.
    4. ^ «Standard ECMA-335: Common Language Infrastructure (CLI)». ecma-international.org (6 ed.). ECMA. June 2012. Archived from the original on June 29, 2013. Retrieved August 31, 2005.
    5. ^ «Standard ECMA-334: C# Language Specification». ecma-international.org (4 ed.). ECMA. June 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
    6. ^ «ISO/IEC 23271:2012 Information technology – Common Language Infrastructure». iso.org (3 ed.). International Organization for Standardization. February 13, 2012.
    7. ^ «ISO/IEC 23270:2006 – Information technology – Programming languages – C#». iso.org (2 ed.). International Organization for Standardization. January 26, 2012. Archived from the original on December 6, 2010. Retrieved April 1, 2008.
    8. ^ «Microsoft’s Empty Promise». Free Software Foundation. 16 July 2009. Archived from the original on August 19, 2009. Retrieved August 3, 2009. However, there are several libraries that are included with Mono, and commonly used by applications like Tomboy, that are not required by the standard. And just to be clear, we’re not talking about Windows-specific libraries like ASP.NET and Windows Forms. Instead, we’re talking about libraries under the System namespace that provide common functionality programmers expect in modern programming languages
    9. ^ a b Guthrie, Scott (3 October 2007). «Releasing the Source Code for the NET Framework». Scott Guthrie’s Blog. Microsoft. Archived from the original on September 7, 2010. Retrieved September 15, 2010.
    10. ^ Guthrie, Scott (January 16, 2008). «.NET Framework Library Source Code now available». Scott Guthrie’s Blog. Microsoft. Retrieved February 28, 2015.
    11. ^ «Microsoft Patent Promise for .NET Libraries and Runtime Components». GitHub. Archived from the original on February 21, 2021. Retrieved November 16, 2014.
    12. ^ Krill, Paul (April 1, 2016). «Xamarin’s Mono runtime gets a looser license». InfoWorld. IDG.
    13. ^ Ferraira, Bruno (March 31, 2016). «Xamarin now comes free with Visual Studio». The Tech Report. Archived from the original on April 2, 2016. Retrieved April 12, 2016.
    14. ^ «Microsoft Patent Promise for Mono». Mono on GitHub. Mono Project. 28 March 2016. Archived from the original on April 16, 2016. Retrieved April 16, 2016.
    15. ^ «Xamarin for Everyone». Xamarin Blog. Xamarin. March 31, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
    16. ^ «Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect 2018». Windows Developer Blog. Microsoft. December 4, 2018. Archived from the original on December 15, 2018. Retrieved December 24, 2018.
    17. ^ rpetrusha. «Compiling Apps with .NET Native». docs.microsoft.com. Archived from the original on December 3, 2017. Retrieved December 2, 2017.
    18. ^ «Base Class Library». Retrieved June 1, 2008.
    19. ^ «.NET Platform Standard». GitHub. Archived from the original on May 19, 2016. Retrieved April 23, 2016.
    20. ^ «An update on ASP.NET Core 1.0 RC2». Retrieved April 23, 2016.
    21. ^ «NuGet Gallery – Home». nuget.org. Archived from the original on February 21, 2021. Retrieved February 21, 2021.
    22. ^ Mixed (Native and Managed) Assemblies Archived October 22, 2014, at the Wayback Machine, MSDN
    23. ^ «Scott Guthrie: Silverlight and the Cross-Platform CLR». Channel 9. 30 April 2007. Archived from the original on May 22, 2015. Retrieved April 16, 2016.
    24. ^ «ECMA 335 – Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006)». ECMA. June 1, 2006. Archived from the original on June 14, 2008. Retrieved June 1, 2008.
    25. ^ «ISO/IEC 23271:2006». Standards.iso.org. September 29, 2006. Archived from the original on July 1, 2018. Retrieved April 17, 2012.
    26. ^ «Technical Report TR/84 Common Language Infrastructure (CLI) – Information Derived from Partition IV XML File». ECMA. 1 June 2006. Archived from the original on March 7, 2015. Retrieved April 16, 2016.
    27. ^ «ECMA-334 C# Language Specification». ECMA. June 1, 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
    28. ^ «Standard ECMA-372 C++/CLI Language Specification». ECMA. December 1, 2005. Archived from the original on August 10, 2008. Retrieved January 16, 2008.
    29. ^ Gartner, Inc. as reported in «Hype Cycle for Cyberthreats, 2006», September 2006, Neil MacDonald; Amrit Williams, et al.
    30. ^ Cifuentes, Cristina (July 1994). «6: Control Flow Analysis» (PDF). Reverse Compilation Techniques (Thesis). Queensland University of Technology. Archived from the original (PDF) on 22 November 2016.
    31. ^ a b c «Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework». Archived from the original on July 3, 2007. Retrieved June 1, 2008.
    32. ^ a b c «Garbage collection in .NET». Archived from the original on May 25, 2008. Retrieved June 1, 2008.
    33. ^ «The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps». July 20, 2012. Retrieved October 2, 2015.
    34. ^ a b c d «Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework». Archived from the original on June 26, 2007. Retrieved June 1, 2008.
    35. ^ «Understanding .NET Just-In-Time Compilation». telerik.com. May 28, 2013. Archived from the original on June 11, 2013. Retrieved May 21, 2015.
    36. ^ a b Compiling MSIL to Native Code Archived April 19, 2015, at the Wayback Machine, MSDN, Microsoft
    37. ^ «Understanding Garbage Collection in .NET». June 17, 2009.
    38. ^ «Release Notes Mono 2.2 – Mono». mono-project.com.
    39. ^ «Mono’s SIMD Support: Making Mono safe for Gaming». Tirania.org. November 3, 2008. Archived from the original on November 4, 2010. Retrieved April 17, 2012.
    40. ^ «Mono’s SIMD Support: Making Mono safe for Gaming – Miguel de Icaza». tirania.org. Retrieved May 6, 2022.
    41. ^ «SIMD-accelerated types in .NET». docs.microsoft.com. Retrieved May 6, 2022.
    42. ^ ISO 9001:2008, Foreword
    43. ^ Fairbairn, Christopher (April 1, 2008). «Using VB.NET with the .NET Micro Framework «/dev/mobile». /dev/mobile. Archived from the original on February 27, 2018. Retrieved April 17, 2012.
    44. ^ «CrossNet». Codeplex.com. Archived from the original on January 25, 2010. Retrieved April 17, 2012.
    45. ^ «Microsoft .NET Framework Redistributable EULA». MSDN. Microsoft. Archived from the original on April 2, 2015. Retrieved February 28, 2015.
    46. ^ Bray, Brandon (August 15, 2012). «Announcing the release of .NET Framework 4.5 RTM – Product and Source Code». .NET Framework Blog. Microsoft. Archived from the original on October 4, 2016. Retrieved August 18, 2016.
    47. ^ «Announcing .NET 2015 Preview: A New Era for .NET». .NET Framework Blog. Microsoft. November 12, 2014. Archived from the original on August 19, 2016. Retrieved August 18, 2016.
    48. ^ «Xamarin for Everyone». Xamarin Blog. Microsoft. April 17, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
    49. ^ «.NET Core 5». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    50. ^ «.NET Micro Framework». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    51. ^ «Roslyn License». GitHub. .NET Foundation. February 5, 2020. Archived from the original on March 24, 2018. Retrieved April 14, 2018.
    52. ^ «ASP.NET MVC, Web API and Web Pages (Razor)». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    53. ^ «ASP.NET Core License». GitHub. .NET Foundation. July 5, 2017. Archived from the original on February 21, 2021. Retrieved April 14, 2018.
    54. ^ «ASP.NET Ajax Control Toolkit». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    55. ^ «ASP.NET SignalR». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    56. ^ «Entity Framework». dotnetfoundation.org. .NET Foundation. Archived from the original on 18 April 2016. Retrieved 16 April 2016.
    57. ^ «NuGet». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.

    External links[edit]

    • Official website
    • Overview of .NET Framework (MSDN)
    • .NET Github repository
    .NET Framework

    Microsoft .NET logo.svg
    Dot-Net.svg

    .NET Framework component stack

    Developer(s) Microsoft
    Initial release February 13, 2002; 20 years ago
    Final release

    4.8.1
    / August 9, 2022; 5 months ago[1]

    Operating system Windows 98 or later, Windows NT 4.0 or later
    Platform IA-32, x86-64, and ARM
    Successor .NET
    Type Software framework
    License Mixed; see § Licensing
    Website dotnet.microsoft.com Edit this on Wikidata

    The .NET Framework (pronounced as «dot net») is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment (in contrast to a hardware environment) named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called «managed code». FCL and CLR together constitute the .NET Framework.

    FCL provides the user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. Programmers produce software by combining their source code with .NET Framework and other libraries. The framework is intended to be used by most new applications created for the Windows platform. Microsoft also produces an integrated development environment for .NET software called Visual Studio.

    .NET Framework began as proprietary software, although the firm worked to standardize the software stack almost immediately, even before its first release. Despite the standardization efforts, developers, mainly those in the free and open-source software communities, expressed their unease with the selected terms and the prospects of any free and open-source implementation, especially regarding software patents. Since then, Microsoft has changed .NET development to more closely follow a contemporary model of a community-developed software project, including issuing an update to its patent promising to address the concerns.[2]

    In April 2019, Microsoft released .NET Framework 4.8, the last version of the framework as a proprietary offering. Only monthly security and reliability bug fixes to that version have been released since then. No further changes to that version are planned.[3]

    History[edit]

    Microsoft began developing .NET Framework in the late 1990s, originally under the name of Next Generation Windows Services (NGWS), as part of the .NET strategy. By early 2000, the first beta versions of .NET 1.0 were released.

    In August 2000, Microsoft, and Intel worked to standardize Common Language Infrastructure (CLI) and C#. By December 2001, both were ratified Ecma International (ECMA) standards.[4][5] International Organization for Standardization (ISO) followed in April 2003. The current version of ISO standards are ISO/IEC 23271:2012 and ISO/IEC 23270:2006.[6][7]

    While Microsoft and their partners hold patents for CLI and C#, ECMA and ISO require that all patents essential to implementation be made available under «reasonable and non-discriminatory terms». The firms agreed to meet these terms, and to make the patents available royalty-free. However, this did not apply to the part of the .NET Framework not covered by ECMA-ISO standards, which included Windows Forms, ADO.NET, and ASP.NET. Patents that Microsoft holds in these areas may have deterred non-Microsoft implementations of the full framework.[8]

    On October 3, 2007, Microsoft announced that the source code for .NET Framework 3.5 libraries was to become available under the Microsoft Reference Source License (Ms-RSL[a]).[9] The source code repository became available online on January 16, 2008, and included BCL, ASP.NET, ADO.NET, Windows Forms, WPF, and XML. Scott Guthrie of Microsoft promised that LINQ, WCF, and WF libraries were being added.[10]

    The .NET Compact Framework and .NET Micro Framework variants of the .NET Framework provided support for other Microsoft platforms such as Windows Mobile, Windows CE and other resource-constrained embedded devices. Silverlight provided support for web browsers via plug-ins.

    Microsoft .NET Framework v4.5 logo

    In November 2014, Microsoft also produced an update to its patent grants, which further extends the scope beyond its prior pledges. Prior projects like Mono existed in a legal grey area because Microsoft’s earlier grants applied only to the technology in «covered specifications», including strictly the 4th editions each of ECMA-334 and ECMA-335. The new patent promise, however, places no ceiling on the specification version, and even extends to any .NET runtime technologies documented on MSDN that have not been formally specified by the ECMA group, if a project chooses to implement them. This allows Mono and other projects to maintain feature parity with modern .NET features that have been introduced since the 4th edition was published without being at risk of patent litigation over the implementation of those features. The new grant does maintain the restriction that any implementation must maintain minimum compliance with the mandatory parts of the CLI specification.[11]

    On March 31, 2016, Microsoft announced at Microsoft Build that they will completely relicense Mono under an MIT License even in scenarios where formerly a commercial license was needed.[12] Microsoft also supplemented its prior patent promise for Mono, stating that they will not assert any «applicable patents» against parties that are «using, selling, offering for sale, importing, or distributing Mono.»[13][14] It was announced that the Mono Project was contributed to the .NET Foundation. These developments followed the acquisition of Xamarin, which began in February 2016 and was finished on March 18, 2016.[15]

    Microsoft’s press release highlights that the cross-platform commitment now allows for a fully open-source, modern server-side .NET stack. Microsoft released the source code for WPF, Windows Forms and WinUI on December 4, 2018.[16]

    Architecture[edit]

    Visual overview of the Common Language Infrastructure (CLI)

    Common Language Infrastructure[edit]

    Common Language Infrastructure (CLI) provides a language-neutral platform for application development and execution. By implementing the core aspects of .NET Framework within the scope of CLI, these functions will not be tied to one language but will be available across the many languages supported by the framework.

    Common Language Runtime[edit]

    .NET Framework includes the Common Language Runtime (CLR). It serves as the execution engine of .NET Framework and offers many services such as memory management, type safety, exception handling, garbage collection, security and thread management. All programs written for .NET Framework are executed by the CLR.

    Programs written for .NET Framework are compiled into Common Intermediate Language code (CIL), as opposed to being directly compiled into machine code. During execution, an architecture-specific just-in-time compiler (JIT) turns the CIL code into machine code.

    Assemblies[edit]

    Compiled CIL code is stored in CLI assemblies. As mandated by the specification, assemblies are stored in Portable Executable (PE) file format, common on Windows platform for all dynamic-link library (DLL) and executable EXE files. Each assembly consists of one or more files, one of which must contain a manifest bearing the metadata for the assembly. The complete name of an assembly (not to be confused with the file name on disk) contains its simple text name, version number, culture, and public key token. Assemblies are considered equivalent if they share the same complete name.

    A private key can also be used by the creator of the assembly for strong naming. The public key token identifies which private key an assembly is signed with. Only the creator of the key pair (typically the person signing the assembly) can sign assemblies that have the same strong name as a prior version assembly, since the creator possesses the private key. Strong naming is required to add assemblies to Global Assembly Cache.

    Starting with Visual Studio 2015, .NET Native compilation technology allows for the compilation of .NET code of Universal Windows Platform apps directly to machine code rather than CIL code, but the app must be written in either C# or Visual Basic.NET.[17]

    Class library[edit]

    .NET Framework includes an implementation of the CLI foundational Standard Libraries. The .NET Framework Class Library (FCL) is organized in a hierarchy of namespaces. Most of the built-in application programming interfaces (APIs) are part of either System.* or Microsoft.* namespaces. These class libraries implement many common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation. The class libraries are available for all CLI compliant languages. The FCL implements the CLI Base Class Library (BCL) and other class libraries—some are specified by CLI and other are Microsoft specific.

    BCL includes a small subset of the entire class library and is the core set of classes that serve as the basic API of CLR.[18] For .NET Framework most classes considered being part of BCL reside in mscorlib.dll, System.dll and System.Core.dll. BCL classes are available in .NET Framework as well as its alternative implementations including .NET Compact Framework, Microsoft Silverlight, .NET Core and Mono.

    FCL refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including BCL, Windows Forms, ASP.NET, and Windows Presentation Foundation (WPF) but also extensions to the base class libraries ADO.NET, Language Integrated Query (LINQ), Windows Communication Foundation (WCF), and Workflow Foundation (WF). FCL is much larger in scope than standard libraries for languages like C++, and comparable in scope to standard libraries of Java.

    With the introduction of alternative implementations (e.g., Silverlight), Microsoft introduced the concept of Portable Class Libraries (PCL) allowing a consuming library to run on more than one platform. With the further proliferation of .NET platforms, the PCL approach failed to scale (PCLs are defined intersections of API surface between two or more platforms).[19] As the next evolutionary step of PCL, the .NET Standard Library was created retroactively based on the System.Runtime.dll based APIs found in UWP and Silverlight. New .NET platforms are encouraged to implement a version of the standard library allowing them to re-use extant third-party libraries to run without new versions of them. The .NET Standard Library allows an independent evolution of the library and app model layers within the .NET architecture.[20]

    NuGet is the package manager for all .NET platforms. It is used to retrieve third-party libraries into a .NET project with a global library feed at NuGet.org.[21] Private feeds can be maintained separately, e.g., by a build server or a file system directory.

    C++/CLI[edit]

    Microsoft introduced C++/CLI in Visual Studio 2005, which is a language and means of compiling Visual C++ programs to run within the .NET Framework. Some parts of the C++ program still run within an unmanaged Visual C++ Runtime, while specially modified parts are translated into CIL code and run with the .NET Framework’s CLR.

    Assemblies compiled using the C++/CLI compiler are termed mixed-mode assemblies since they contain native and managed code in the same DLL.[22] Such assemblies are more complex to reverse engineer since .NET decompilers such as .NET Reflector reveal only the managed code.

    Design principle[edit]

    Interoperability[edit]

    Because computer systems commonly require interaction between newer and older applications, .NET Framework provides means to access functions implemented in newer and older programs that execute outside .NET environment. Access to Component Object Model (COM) components is provided in System. Runtime. InteropServices and System. Enterprise Services namespaces of the framework. Access to other functions is via Platform Invocation Services (P/Invoke). Access to .NET functions from native applications is via the reverse P/Invoke function.

    Interoperability enables you to preserve and take advantage of existing investments in unmanaged code. Code that runs under the control of the common language runtime (CLR) is called managed code, and code that runs outside the CLR is called unmanaged code

    Language independence[edit]

    .NET Framework introduces a Common Type System (CTS) that defines all possible data types and programming constructs supported by CLR and how they may or may not interact conforming to CLI specifications. Because of this feature, .NET Framework supports the exchange of types and object instances between libraries and applications written using any conforming .NET language.

    Type safety[edit]

    CTS and the CLR used in .NET Framework also enforce type safety. This prevents ill-defined casts, wrong method invocations, and memory size issues when accessing an object. This also makes most CLI languages statically typed (with or without type inference). However, starting with .NET Framework 4.0, the Dynamic Language Runtime extended the CLR, allowing dynamically typed languages to be implemented atop the CLI.

    Portability[edit]

    While Microsoft has never implemented the full framework on any system except Microsoft Windows, it has engineered the framework to be cross-platform,[23] and implementations are available for other operating systems (see Silverlight and § Alternative implementations). Microsoft submitted the specifications for CLI (which includes the core class libraries, CTS, and CIL),[24][25][26] C#,[27] and C++/CLI[28] to both Ecma International (ECMA) and International Organization for Standardization (ISO), making them available as official standards. This makes it possible for third parties to create compatible implementations of the framework and its languages on other platforms.

    Security[edit]

    .NET Framework has its own security mechanism with two general features: Code Access Security (CAS), and validation and verification. CAS is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine or has been downloaded from the Internet). CAS uses evidence to determine the permissions granted to the code. Other codes can demand that calling code be granted a specified permission. The demand causes CLR to perform a call stack walk: every assembly of each method in the call stack is checked for the required permission; if any assembly is not granted the permission a security exception is thrown.

    Managed CIL bytecode is easier to reverse-engineer than native code, unless obfuscated.[29] .NET decompiler programs enable developers with no reverse-engineering skills to view the source code behind unobfuscated .NET assemblies. In contrast, apps compiled to native machine code are much harder to reverse-engineer, and source code is almost never produced successfully, mainly because of compiler optimizations and lack of reflection.[30] This creates concerns in the business community over the possible loss of trade secrets and the bypassing of license control mechanisms. To mitigate this, Microsoft has included Dotfuscator Community Edition with Visual Studio .NET since 2002.[b] Third-party obfuscation tools are also available from vendors such as VMware, V.i. Labs, Turbo, and Red Gate Software. Method-level encryption tools for .NET code are available from vendors such as SafeNet.

    Memory management[edit]

    CLR frees the developer from the burden of managing memory (allocating and freeing up when done); it handles memory management itself by detecting when memory can be safely freed. Instantiations of .NET types (objects) are allocated from the managed heap; a pool of memory managed by CLR. As long as a reference to an object exists, which may be either direct, or via a graph of objects, the object is considered to be in use. When no reference to an object exists, and it cannot be reached or used, it becomes garbage, eligible for collection.

    .NET Framework includes a garbage collector (GC) which runs periodically, on a separate thread from the application’s thread, that enumerates all the unusable objects and reclaims the memory allocated to them. It is a non-deterministic, compacting, mark-and-sweep garbage collector. GC runs only when a set amount of memory has been used or there is enough pressure for memory on the system. Since it is not guaranteed when the conditions to reclaim memory are reached, GC runs are non-deterministic. Each .NET application has a set of roots, which are pointers to objects on the managed heap (managed objects). These include references to static objects, objects defined as local variables or method parameters currently in scope, and objects referred to by CPU registers.[31] When GC runs, it pauses the application and then, for each object referred to in the root, it recursively enumerates all the objects reachable from the root objects and marks them as reachable. It uses CLI metadata and reflection to discover the objects encapsulated by an object, and then recursively walk them. It then enumerates all the objects on the heap (which were initially allocated contiguously) using reflection. All objects not marked as reachable are garbage.[31] This is the mark phase.[32] Since the memory held by garbage is of no consequence, it is considered free space. However, this leaves chunks of free space between objects which were initially contiguous. The objects are then compacted together to make free space on the managed heap contiguous again.[31][32] Any reference to an object invalidated by moving the object is updated by GC to reflect the new location.[32] The application is resumed after garbage collection ends. The latest version of .NET framework uses concurrent garbage collection along with user code, making pauses unnoticeable, because it is done in the background.[33]

    The garbage collector used by .NET Framework is also generational.[34] Objects are assigned a generation. Newly created objects are tagged Generation 0. Objects that survive one garbage collection are tagged Generation 1. Generation 1 objects that survive another collection are Generation 2. The framework uses up to Generation 2 objects.[34] Higher generation objects are garbage collected less often than lower generation objects. This raises the efficiency of garbage collection, as older objects tend to have longer lifetimes than newer objects.[34] By ignoring older objects in most collection runs, fewer checks and compaction operations are needed in total.[34]

    Performance[edit]

    When an application is first launched, the .NET Framework compiles the CIL code into executable code using its just-in-time compiler, and caches the executable program into the .NET Native Image Cache.[35][36] Due to caching, the application launches faster for subsequent launches, although the first launch is usually slower. To speed up the first launch, developers may use the Native Image Generator utility to manually ahead-of-time compile and cache any .NET application.[36]

    The garbage collector, which is integrated into the environment, can introduce unanticipated delays of execution over which the developer has little direct control. «In large applications, the number of objects that the garbage collector needs to work with can become very large, which means it can take a very long time to visit and rearrange all of them.»[37]

    .NET Framework provides support for calling Streaming SIMD Extensions (SSE) via managed code from April 2014 in Visual Studio 2013 Update 2. However, Mono has provided support for SIMD Extensions as of version 2.2 within the Mono.Simd namespace in 2009.[38] Mono’s lead developer Miguel de Icaza has expressed hope that this SIMD support will be adopted by CLR’s ECMA standard.[39] Streaming SIMD Extensions have been available in x86 CPUs since the introduction of the Pentium III. Some other architectures such as ARM and MIPS also have SIMD extensions. In case the CPU lacks support for those extensions, the instructions are simulated in software.[40][41]

    Alternative implementations[edit]

    .NET Framework was the predominant implementation of .NET technologies, until the release of .NET. Other implementations for parts of the framework exist. Although the runtime engine is described by an ECMA-ISO specification, other implementations of it may be encumbered by patent issues; ISO standards may include the disclaimer, «Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO shall not be held responsible for identifying any or all such patent rights.»[42] It is harder to develop alternatives to FCL, which is not described by an open standard and may be subject to copyright restrictions. Also, parts of FCL have Windows-specific functions and behavior, so implementation on non-Windows platforms can be problematic.

    Some alternative implementations of parts of the framework are listed here.

    • .NET Micro Framework is a .NET platform for extremely resource-constrained devices. It includes a small version of CLR and supports development in C# (though some developers were able to use VB.NET,[43] albeit with an amount of hacking, and with limited functionalities) and debugging (in an emulator or on hardware), both using Microsoft Visual Studio. It also features a subset of .NET Framework Class Library (about 70 classes with about 420 methods), a GUI framework loosely based on WPF, and additional libraries specific to embedded applications.
    • Mono is an implementation of CLI and FCL, and provides added functions. It is licensed as free software under the MIT License. It includes support for ASP.NET, ADO.NET, and Windows Forms libraries for a wide range of architectures and operating systems. It also includes C# and VB.NET compilers.
    • Portable.NET (part of DotGNU) provides an implementation of CLI, parts of FCL, and a C# compiler. It supports a variety of CPUs and operating systems. The project was discontinued, with the last stable release in 2009.
    • Microsoft Shared Source Common Language Infrastructure is a non-free implementation of CLR. However, the last version runs on Windows XP SP2 only, and has not been updated since 2006. Thus, it does not contain all features of version 2.0 of .NET Framework.
    • CrossNet[44] is an implementation of CLI and parts of FCL. It is free software using an open source MIT License.

    Licensing[edit]

    Microsoft managed code frameworks and their components are licensed as follows:

    See also[edit]

    • .NET (formerly .NET Core)
    • List of CLI languages
    • Standard Libraries (CLI), the .NET standard libraries
    • Base Class Library (BCL)

    Notes[edit]

    1. ^ a b The license was formerly abbreviated Ms-RL, but Ms-RL now refers to the Microsoft Reciprocal License.
    2. ^ Dotfuscator Community Edition 4.0

    References[edit]

    1. ^ «Download .NET Framework 4.8 Offline Installer». Microsoft. Archived from the original on August 15, 2019. Retrieved August 15, 2019.
    2. ^ «Microsoft gets on board with open source». Opensource.com. November 19, 2014. Retrieved January 2, 2020.
    3. ^ gewarren. «.NET Framework & Windows OS versions». docs.microsoft.com. Retrieved November 21, 2020.
    4. ^ «Standard ECMA-335: Common Language Infrastructure (CLI)». ecma-international.org (6 ed.). ECMA. June 2012. Archived from the original on June 29, 2013. Retrieved August 31, 2005.
    5. ^ «Standard ECMA-334: C# Language Specification». ecma-international.org (4 ed.). ECMA. June 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
    6. ^ «ISO/IEC 23271:2012 Information technology – Common Language Infrastructure». iso.org (3 ed.). International Organization for Standardization. February 13, 2012.
    7. ^ «ISO/IEC 23270:2006 – Information technology – Programming languages – C#». iso.org (2 ed.). International Organization for Standardization. January 26, 2012. Archived from the original on December 6, 2010. Retrieved April 1, 2008.
    8. ^ «Microsoft’s Empty Promise». Free Software Foundation. 16 July 2009. Archived from the original on August 19, 2009. Retrieved August 3, 2009. However, there are several libraries that are included with Mono, and commonly used by applications like Tomboy, that are not required by the standard. And just to be clear, we’re not talking about Windows-specific libraries like ASP.NET and Windows Forms. Instead, we’re talking about libraries under the System namespace that provide common functionality programmers expect in modern programming languages
    9. ^ a b Guthrie, Scott (3 October 2007). «Releasing the Source Code for the NET Framework». Scott Guthrie’s Blog. Microsoft. Archived from the original on September 7, 2010. Retrieved September 15, 2010.
    10. ^ Guthrie, Scott (January 16, 2008). «.NET Framework Library Source Code now available». Scott Guthrie’s Blog. Microsoft. Retrieved February 28, 2015.
    11. ^ «Microsoft Patent Promise for .NET Libraries and Runtime Components». GitHub. Archived from the original on February 21, 2021. Retrieved November 16, 2014.
    12. ^ Krill, Paul (April 1, 2016). «Xamarin’s Mono runtime gets a looser license». InfoWorld. IDG.
    13. ^ Ferraira, Bruno (March 31, 2016). «Xamarin now comes free with Visual Studio». The Tech Report. Archived from the original on April 2, 2016. Retrieved April 12, 2016.
    14. ^ «Microsoft Patent Promise for Mono». Mono on GitHub. Mono Project. 28 March 2016. Archived from the original on April 16, 2016. Retrieved April 16, 2016.
    15. ^ «Xamarin for Everyone». Xamarin Blog. Xamarin. March 31, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
    16. ^ «Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect 2018». Windows Developer Blog. Microsoft. December 4, 2018. Archived from the original on December 15, 2018. Retrieved December 24, 2018.
    17. ^ rpetrusha. «Compiling Apps with .NET Native». docs.microsoft.com. Archived from the original on December 3, 2017. Retrieved December 2, 2017.
    18. ^ «Base Class Library». Retrieved June 1, 2008.
    19. ^ «.NET Platform Standard». GitHub. Archived from the original on May 19, 2016. Retrieved April 23, 2016.
    20. ^ «An update on ASP.NET Core 1.0 RC2». Retrieved April 23, 2016.
    21. ^ «NuGet Gallery – Home». nuget.org. Archived from the original on February 21, 2021. Retrieved February 21, 2021.
    22. ^ Mixed (Native and Managed) Assemblies Archived October 22, 2014, at the Wayback Machine, MSDN
    23. ^ «Scott Guthrie: Silverlight and the Cross-Platform CLR». Channel 9. 30 April 2007. Archived from the original on May 22, 2015. Retrieved April 16, 2016.
    24. ^ «ECMA 335 – Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006)». ECMA. June 1, 2006. Archived from the original on June 14, 2008. Retrieved June 1, 2008.
    25. ^ «ISO/IEC 23271:2006». Standards.iso.org. September 29, 2006. Archived from the original on July 1, 2018. Retrieved April 17, 2012.
    26. ^ «Technical Report TR/84 Common Language Infrastructure (CLI) – Information Derived from Partition IV XML File». ECMA. 1 June 2006. Archived from the original on March 7, 2015. Retrieved April 16, 2016.
    27. ^ «ECMA-334 C# Language Specification». ECMA. June 1, 2006. Archived from the original on October 31, 2010. Retrieved August 31, 2005.
    28. ^ «Standard ECMA-372 C++/CLI Language Specification». ECMA. December 1, 2005. Archived from the original on August 10, 2008. Retrieved January 16, 2008.
    29. ^ Gartner, Inc. as reported in «Hype Cycle for Cyberthreats, 2006», September 2006, Neil MacDonald; Amrit Williams, et al.
    30. ^ Cifuentes, Cristina (July 1994). «6: Control Flow Analysis» (PDF). Reverse Compilation Techniques (Thesis). Queensland University of Technology. Archived from the original (PDF) on 22 November 2016.
    31. ^ a b c «Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework». Archived from the original on July 3, 2007. Retrieved June 1, 2008.
    32. ^ a b c «Garbage collection in .NET». Archived from the original on May 25, 2008. Retrieved June 1, 2008.
    33. ^ «The .NET Framework 4.5 includes new garbage collector enhancements for client and server apps». July 20, 2012. Retrieved October 2, 2015.
    34. ^ a b c d «Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework». Archived from the original on June 26, 2007. Retrieved June 1, 2008.
    35. ^ «Understanding .NET Just-In-Time Compilation». telerik.com. May 28, 2013. Archived from the original on June 11, 2013. Retrieved May 21, 2015.
    36. ^ a b Compiling MSIL to Native Code Archived April 19, 2015, at the Wayback Machine, MSDN, Microsoft
    37. ^ «Understanding Garbage Collection in .NET». June 17, 2009.
    38. ^ «Release Notes Mono 2.2 – Mono». mono-project.com.
    39. ^ «Mono’s SIMD Support: Making Mono safe for Gaming». Tirania.org. November 3, 2008. Archived from the original on November 4, 2010. Retrieved April 17, 2012.
    40. ^ «Mono’s SIMD Support: Making Mono safe for Gaming – Miguel de Icaza». tirania.org. Retrieved May 6, 2022.
    41. ^ «SIMD-accelerated types in .NET». docs.microsoft.com. Retrieved May 6, 2022.
    42. ^ ISO 9001:2008, Foreword
    43. ^ Fairbairn, Christopher (April 1, 2008). «Using VB.NET with the .NET Micro Framework «/dev/mobile». /dev/mobile. Archived from the original on February 27, 2018. Retrieved April 17, 2012.
    44. ^ «CrossNet». Codeplex.com. Archived from the original on January 25, 2010. Retrieved April 17, 2012.
    45. ^ «Microsoft .NET Framework Redistributable EULA». MSDN. Microsoft. Archived from the original on April 2, 2015. Retrieved February 28, 2015.
    46. ^ Bray, Brandon (August 15, 2012). «Announcing the release of .NET Framework 4.5 RTM – Product and Source Code». .NET Framework Blog. Microsoft. Archived from the original on October 4, 2016. Retrieved August 18, 2016.
    47. ^ «Announcing .NET 2015 Preview: A New Era for .NET». .NET Framework Blog. Microsoft. November 12, 2014. Archived from the original on August 19, 2016. Retrieved August 18, 2016.
    48. ^ «Xamarin for Everyone». Xamarin Blog. Microsoft. April 17, 2016. Archived from the original on April 12, 2016. Retrieved April 12, 2016.
    49. ^ «.NET Core 5». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    50. ^ «.NET Micro Framework». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    51. ^ «Roslyn License». GitHub. .NET Foundation. February 5, 2020. Archived from the original on March 24, 2018. Retrieved April 14, 2018.
    52. ^ «ASP.NET MVC, Web API and Web Pages (Razor)». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    53. ^ «ASP.NET Core License». GitHub. .NET Foundation. July 5, 2017. Archived from the original on February 21, 2021. Retrieved April 14, 2018.
    54. ^ «ASP.NET Ajax Control Toolkit». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    55. ^ «ASP.NET SignalR». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.
    56. ^ «Entity Framework». dotnetfoundation.org. .NET Foundation. Archived from the original on 18 April 2016. Retrieved 16 April 2016.
    57. ^ «NuGet». dotnetfoundation.org. .NET Foundation. Archived from the original on 17 February 2015. Retrieved 17 February 2015.

    External links[edit]

    • Official website
    • Overview of .NET Framework (MSDN)
    • .NET Github repository

    При возникновении ошибки Microsoft.NET Framework нужно установить его свежую версию. Рассмотрю основные особенности платформы и процесс установки.

    Версии .NET Framework для Windows, macOS и Linux

    Содержание

    • Версии .NET Framework для Windows, macOS и Linux
    • Предназначение .NET Framework
      • Удобство пользователей и разработчиков
      • Универсальная платформа
      • Архитектура .NET Framework
      • Уровни .NET Framework
      • Библиотеки
      • Типы основанных на платформе приложений
    • Установка
      • Какие версии .NET Framework применяют в 2019 году
      • .NET Framework 3.5 в Windows 10
      • Чтобы включить поддержку версии 3.5 в «десятке»:
    • Нужна ли версия 3.5 в 2019 году

    Предназначен для создания приложений. Первая версия .NET Framework вышла в 2002 году. Называлась 1.0. Самая свежая по состоянию на 11 декабря 2019 года — 4.8. Эта разновидность .NET — только для Windows.

    Для создания и запуска консольных программ, сервисов и веб-сайтов предусмотрена кроссплатформенная версия .NET Core. Предназначена для операционных систем macOS и Linux. После названия отображается актуальная версия. На момент написания статьи — 3.1.

    Предназначение .NET Framework

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

    Удобство пользователей и разработчиков

    С .NET Framework необходимость писать каждую программу «с нуля» отсутствует. Есть готовые фрагменты программного кода. Элементы окон стандартные. Разработчик лишь вставляет текст, формирует меню приложения и определяет, что будет происходит, когда вы нажмете на определенную кнопку.

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

    Комфортно и разработчику и вам. Пользователям не приходится каждый раз изучать нестандартный интерфейс софта, рожденного фантазией программиста. Создатели ПО могут сосредоточиться на функционале приложений. Пользователю нужно лишь позаботиться, чтобы на компьютере была установлена среда выполнения .NET Framework.

    Универсальная платформа

    Microsoft обеспечивает работу основанного на .NET Framework софта во всех поддерживаемых компанией операционных системах.

    Степень обратной совместимости ПО высока. Рассмотрю на примере старых версий. Вам нужна программа, основанная на версии 2.0. Запускаете ее на ноутбуке или настольном ПК с поздней версией. И старый софт будет работать.

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

    Для разработчиков предусмотрены инструменты упаковки приложений. Они легко устанавливаются на ПК.

    Архитектура .NET Framework

    CLI («Common Language Infrastructure») — платформа, на которой выполняются программы. Основные функции CLI:

    • Обработка исключений. К ним относятся ошибки, возникающие при работе программы. Приведу примеры:
      • Приложение пытается открыть на локальном компьютере файл, который отсутствует
      • Приложение обращается к базе данных, а соединение с ней отсутствует
    • Чистка мусора, то есть удаление ресурсов, которые больше не нужны. Проверяется, какие ресурсы не используются и производится их освобождение для выполнения других задач. Примеры фрагментов, которые удаляются в процессе работы без вмешательства пользователя:
      • Дескриптор файла, который больше не требуется
      • В соединении с базой данных больше нет необходимости. Программа завершила все операции с базой данных
    • Работа с различными языками программирования

    Уровни .NET Framework

    Выделяются три уровня:

    1. Языки программирования. Часто используемые: VB.NET и C#
    2. Компиляторы. Для каждого языка программирования предусмотрен отдельный компилятор. Для VB.NET — один, для C# — другой
    3. Интерпретатор «Common Language Interpreter» используется для запуска приложения, написанного на любом языке программирования. Поэтому компилятор отравит программу в него для последующего запуска приложения

    Библиотеки

    .NET Framework включает в себя набор стандартных библиотек классов: методов и функций. Например, есть библиотека классов для обработки всех операций на уровне файлов. Есть метод чтения текста из файла и есть метод записи текста в файл.

    Типы основанных на платформе приложений

    ПО, которое может работать на основе .NET Framework:

    • WinForms: программы, которые будут работать на компьютере пользователя. Пример клиентского приложения: текстовый редактор «Блокнот»
    • ASP.NET применяется для разработки веб-приложений, которые станут работать в любом браузере, в том числе: Chrome, Edge, Firefox. При этом:
      • Веб-приложение будет обрабатываться на сервере, на котором установлены информационные службы интернета (IIS)
      • IIS — это компонент Microsoft, который применяется для запуска приложения ASP.NET
      • Результат выполнения отправляется на компьютер пользователя и отображается в браузере
    • Технология ADO.NET применяется для создания приложений, предназначенных для работы с базами данных, такими как Microsoft SQL Server и Oracle

    Установка

    Устанавливать среду выполнения вручную нужно только в тех случаях, когда версия на вашем ПК устарела и не позволяет запускать нужные пользователю программы. Обновляется автоматически, с помощью обновлений Windows, но вручную вы можете установить версии 4.x в Windows 7.

    Скачайте .NET Framework с сайта Майкрософт.

    Какие версии .NET Framework применяют в 2019 году

    На 14 декабря 2019 года для загрузки предлагаются следующие версии:

    • 4.8
    • 4.7.2
    • 4.7.1
    • 4.7
    • 4.6.2
    • 4.6.1
    • 4.6
    • 4.5.2
    • 4.5.1
    • 4.5
    • 4.0
    • 3.5 SP1

    Майкрософт рекомендует использовать самую свежую версию платформы.

    Пользователям, не занимающимся созданием ПО, понадобится среда выполнения (Runtime). Инструментарий разработчика (Developer Pack) необходим программистам.

    Прокрутите страницу. Выберите язык и перейдите по соответствующей ссылке. Скачивание стартует автоматически.

    Не забудьте подписаться на наш Дзен

    .NET Framework 3.5 в Windows 10

    Перед установкой на ноутбук убедитесь, что батарея заряжена и подключен кабель питания.

    Скачайте 3.5 SP1. Запустите загруженный исполняемый файл с расширением EXE. Чтобы началась установка, пользователю придется позволить ПО вносить изменения на компьютере.

    Необходимо дополнительно загрузить и поставить в систему .NET 3.5 (в комплекте: .NET 2.0 и 3.0).

    На экране отображается прогресс выполнения загрузки, время которой зависит от скорости интернет-соединения.

    Следующий этап — установка компонентов операционной системы осуществляется автоматически. Не требует вмешательства пользователя.

    Для завершения установки нужно перезагрузить компьютер. Нажмите соответствующую кнопку (выделена на иллюстрации).

    Не выключайте компьютер во время работы с обновлениями. Прогресс выполнения задачи динамически отображается на экране (в процентах).

    Чтобы включить поддержку версии 3.5 в «десятке»:

    • Нажмите кнопку со значком-лупой на Панели задач
    • В строке напечатайте: «Включение или отключение компонентов Windows»
    • Щелкните по выведенному в качестве результата поиска параметру Панели управления

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

    Обратите внимание, что поддержка версии 3.5, необходимой для совместимости со старым софтом, является дополнением к версии 4.x.

    Нажмите «OK».

    Нужна ли версия 3.5 в 2019 году

    Старые программы могут понадобиться в таких случаях:

    • Им нет подходящей замены
    • Пользователь не желает изучать особенности нового интерфейса
    • Новые версии и аналоги требовательны к аппаратным ресурсам ПК и мощности устройства недостаточно для их работы

    На сайте Майкрософт отмечено, что версия .NET Framework 3.5 SP1 актуальна до 10 октября 2028 года.

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

    Ставить версию надо:

    • Если пользователю известно, что применяемый софт нуждается в ней
    • Возникают сбои программ и предположительной причиной является отсутствие совместимой версии .NET Framework

    Ранее я писал:

    • Как скачать и установить DirectX

    • Как скачать и установить Adobe Flash Player

    Какие программы не запускаются без .NET Framework 3.5?

    Довольно часто меня просят рассказать о Windows NET Framework и необходимости его установки. Впрочем, эта мысль, давно сидела у меня в голове, а посему речь в этой статье пойдет как раз об этом.

    Windows NET Framework - иконка статьи

    И так, собственно, к делу, благо вопросов об оном поступает, как я и сказал, Всё больше и больше.

    Давайте приступим.

    Общая информация о .NET

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

    Устанавливать .NET надо всем в обязательно порядке — все больше и чаще сайтов и программ просто отказываются работать без этого пакета. В некотором смысле, это своеобразные кодеки для интернета и ряда программ :)

    Windows NET Framework - логотип

    С технической точки зрения одной из основных идей Windows NET Framework является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Windows NET Framework, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследующий от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi.

    Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

    Где скачать и как установить Windows NET Framework

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

    А посему.. почему бы не поставить заранее? Вон, в Windows 7, например, Windows NET Framework уже включен в дистрибутив ОС и устанавливается во время установки системы автоматически.

    Скачать можно, например, по этой ссылке. Версия по оной ровно 4.
    Установка предельно проста и на ней я останавливаться не буду.
    Никаких специфичных настроек не требуется.

    несколько версий NET Framework в Windows

    Заранее отвечая на частозадаваемый вопрос хочу сказать, что часто бывают нужны все версии, и 2-ая, и третья, и четвертая, и 4.5 и многие другие, если они в последствии будут выходить. Т.е удалять прошлый версии не надо, а вот устанавливать дополнительно, зачастую, необходимо.

    Послесловие

    Вот такие вот пироги. Надеюсь, что получилось более менее доходчиво и кому-то действительно пригодилось.

    Если Вам есть что добавить или хотите что-то спросить, то пишите в комментариях или с помощью формы обратной связи. Всегда рад Вам и Вашим вопросамкомментариям.

    Понравилась статья? Поделить с друзьями:
  • Для чего нужен microsoft games for windows live redistributable
  • Для чего нужен microsoft edge в windows 10
  • Для чего нужен java на компьютере windows 10
  • Для чего нужен itunes для windows
  • Для чего нужен iso образ windows