.NET Framework
.NET Framework — программная платформа компании Microsoft, предназначенная для разработки и выполнения приложений, использующих компоненты платформы .NET. Фреймворк объединяет среду выполнения и богатую программную библиотеку, обобщая работу с различными задачами — от работы с файлами и базами данных до построения оконных интерфейсов и сетевого взаимодействия. Для конечного пользователя .NET Framework представляет собой прослойку, необходимую для запуска приложений, использующих его компоненты.
Что важно знать
| .NET Framework | |
|---|---|
| Тип | платформа |
| Разработчики | Майкрософт и Xamarin |
| Операционная система | Microsoft Windows |
| Первый выпуск | 13 февраля 2002 |
| Аппаратная платформа | Microsoft Windows |
| Последняя версия | 4.8.1 (9 августа 2022) |
| Лицензия | EULA (проприетарная) и частично Apache License 2.0 (свободная)[1][2] |
| Сайт | dotnet.microsoft.com/en-… |
История
С выходом Windows Vista платформа стала устанавливаться вместе с операционной системой, после чего обновляется через Windows Update. До появления .NET Core .NET Framework был доступен исключительно для Windows и сыграл важную роль в унификации и модернизации программирования под эту ОС[3]. В её составе присутствуют API для доступа к файловой системе, сетевым ресурсам, базам данных, созданию графики и интерфейсов, а также типовые функции (управление датой и временем, хеширование паролей, математические расчеты, многопоточность для многоядерных процессоров).
Приложения на основе .NET до появления .NET 8 не были самодостаточными: они требовали наличия среды выполнения .NET Framework для запуска, так как код не компилировался напрямую в машинный. В ноябре 2020 года Microsoft объявила о слиянии .NET Core, .NET Standard и .NET Framework в единую платформу под именем .NET 5.0[4]. Программы на базе .NET Framework 4 по-прежнему поддерживаются в Windows 7 / 8 / 10 / 11[5][6].
Разработка платформы .NET велась как попытка обновить устаревшие концепции Windows и стала следствием судебных разбирательств Microsoft и Sun Microsystems по поводу Java. Microsoft исходно модифицировала систему, реализованную Sun, нарушая независимость Java-приложений от платформы, и после запрета на такую практику сменила стратегию, а также попыталась занять рынок мобильных устройств.
К середине 1990-х для Windows существовали независимые, несовместимые друг с другом платформы (решения на C++, Visual Basic, а также Java-подобная Microsoft J++), затруднявшие совместную работу и повторное использование кода.
Реализация строк различалась между платформами, что требовало затрат на перекодировку при обмене данными между ними. Дополнительно проблемы вызывала параллельная поддержка ANSI и Unicode: многие программы не умели работать с Unicode. В .NET Framework используется единая поддержка Unicode для строк.
Различные среды разработки реализовывали собственные системы управления памятью. Visual Basic и J++ поддерживали автоматическую сборку мусора, а C++ — нет, требуя ручного контроля со стороны программиста.
17 января 2008 года Microsoft опубликовала исходный код платформы под ограничительной Microsoft Reference License. Это стало реакцией на открытие Sun исходников Java под GNU GPL.
В конце 2013 года Microsoft, Xamarin (Mono) и ряд других компаний учредили фонд .NET Foundation, которому были переданы права на большую часть библиотек .NET; в 2014 году под его управлением находились 30 проектов[7].
Часть сообщества разработчиков опасалась, что публикуемый код под ограничительной лицензией представляет угрозу для проекта Mono — реализации .NET для Linux[8]. Заключённое между Microsoft и Novell[9] патентное соглашение защищало стороны от взаимных претензий.
После создания .NET Foundation и перехода прав на код .NET Foundation, Microsoft и Xamarin (Mono) сотрудничают для обеспечения кроссплатформенности .NET. Благодаря публикации существенной части кода под лицензией MIT или Apache 2.0, теперь его можно использовать и в закрытых продуктах. Риски патентных конфликтов существенно снижены[10].
| Год | События |
|---|---|
| 2000 |
|
| 2002 |
|
| 2003 |
|
| 2005 |
|
| 2006 |
|
| 2007 |
|
| 2008 |
|
| 2009 |
|
| 2010 |
|
| 2012 |
|
| 2013 |
|
| 2014 |
|
| 2015 |
|
| 2016 |
|
| 2017 |
|
| 2018 |
|
| 2019 |
|
| 2022 |
|
Концепция и компоненты
.NET Framework реализует стандарт Common Language Infrastructure (CLI), предоставляя среду выполнения для программ на различных языках и библиотеки для ускорения разработки. Ключевыми частями платформы являются объектно-ориентированная среда исполнения Common Language Runtime (CLR), библиотека базовых классов (Base Class Library, BCL) и вспомогательные средства, например, для управления правами.
Common Language Runtime: CLR отвечает за исполнение кода .NET, содержит JIT-компилятор для Common Intermediate Language (CIL, ранее MSIL), определяет кросс-языковую систему типов. Каждая .NET-языковая реализация компилируется в CIL. Под управлением CLR запускается так называемый управляемый код (managed code), но возможно и исполнение небезопасного (unsafe) кода с указателями, если это необходимо[11].
Interop позволяет подключать к .NET уже существующие нативные (неуправляемые) библиотеки Windows — через обёртки (wrappers). Таким образом, можно поэтапно переносить проекты на .NET и облегчать интеграцию.
Безопасность: В .NET реализованы механизмы аутентификации производителя (авторство), защиты от изменения кода (целостность), и разграничения по ролям и источникам запуска (code-based и role-based security).
Атрибуты — ключевая особенность .NET: позволяет добавлять к коду специализированные метаданные, влияющие на поведение системы, безопасность, распределённые транзакции, описательные свойства компонентов. К атрибутам можно обращаться через reflection.
Распределённое программирование и веб-сервисы. С версии 3.0 в .NET появилась Windows Communication Foundation для унификации взаимодействия в распределённых приложениях (заменяет ASP.NET Web Services, MSMQ, .NET Remoting и т. д.)[12].
Языковая независимость: CLS (Common Language Specification) определяет общий набор возможностей CIL, которым должны удовлетворять поддерживаемые языки. Помимо языков Microsoft (C#, F#, Visual Basic .NET, C++/CLI), под .NET доступны сторонние (например, Delphi Prism, APL). Единая система типов (Common Type System) ликвидирует трудности взаимодействия между языками.
Платформенная независимость: В 2002 году Microsoft представила Shared Source CLI (SSCLI) для macOS и FreeBSD (ограниченная реализация). Позднее появилась версия 2.0 (поддержка Windows XP SP2). На текущее время реализация платформы в полном виде официально поддерживается только под Windows, хотя такие альтернативы, как Mono, обеспечивают совместимость на Linux и macOS.
Виртуальная машина: Управляемый код (managed code) выполняется в среде CLR с автоматическим управлением памятью (garbage collection), контролем доступа к ресурсам и соблюдением политик безопасности.
Производительность: Для сокращения издержек от виртуализации и повышения скорости используются JIT-компиляция, а также возможность предварительной компиляции в нативные образы. Тем не менее, наличие сборщика мусора и абстракций увеличивает требования к ресурсам и непредсказуемость задержек — что ограничивает применение .NET в жёстких реалтайм-приложениях.
Классовая библиотека — Framework Class Library (FCL) включает десятки тысяч классов, сгруппированных по сотням пространств имён[13]. Выполняет задачи от работы с текстом и почтой до генерации кода.
Выполнение программ. Компилятор .NET-языков не создаёт нативный машинный код, а транслирует в протокол Common Intermediate Language (IL), исполняемый виртуальной машиной. PE-заголовки в exe-файлах совместимы с Windows, но запуск требует инит-кода, запускающего CLR. При исполнении JIT-компилятор преобразует IL в машинный код процессора.
Сборки (Assemblies): Cкомпилированные единицы (exe или dll), которые содержат как собственно код, так и метаданные (manifest), что позволяет запускать .NET-программы без регистрации компонентов в системе (за исключением некоторых случаев). Возможны сборки трёх видов: приватные (private), общие (shared, требуют strong name), глобальные (устанавливаются в GAC — Global Assembly Cache).
Доступность, стандартизация, альтернативы
Полная реализация .NET Framework официально доступна только для Windows. В 2008 году Microsoft открыла часть исходного кода; многие компоненты стандартизованы как Common Language Infrastructure — ECMA-стандарт. Альтернативные реализации (например, Mono) обеспечивают совместимость приложений .NET на Linux и macOS.
Microsoft поставляет .NET Framework в виде среды исполнения (runtime), бесплатного SDK, платной интегрированной среды разработки (Visual Studio). Для студентов доступны бесплатные редакции Visual Studio Express, существует и свободная IDE SharpDevelop. Начиная с Windows Server 2003, серверные ОС поставляются с интегрированной средой исполнения .NET; в более ранних версиях её можно установить отдельно (поддержка с Windows NT 4.0/98). С Windows Vista .NET Framework — неотъемлемая часть операционной системы.
Версии
Разработка .NET Framework началась в конце 1990-х (первоначальное название — Next Generation Windows Services, NGWS), первые бета-релизы вышли в конце 2000 года.
| Версия | Номер версии | Дата | Присутствует в |
|---|---|---|---|
| 1.0 | 1.0.3705.0 | 5 января 2002 | — |
| 1.1 | 1.1.4322.573 | 1 апреля 2003 | Windows Server 2003 |
| 2.0 | 2.0.50727.42 | 7 ноября 2005 | Windows Server 2003 R2 |
| 3.0 | 3.0.4506.30 | 6 ноября 2006 | Windows Vista, Windows Server 2008 |
| 3.5 | 3.5.21022.8 | 9 ноября 2007 | Windows Server 2008 R2 |
| 3.5 SP 1 | 3.5.30729.1 | 11 августа 2008 | Windows 7 с SP1 |
| 4.0 | 4.0.30319 | 12 апреля 2010 | — |
| 4.5 | 4.5.50501 | 15 августа 2012 | Windows 8, Windows Server 2012 |
| 4.5.1 | 4.5.50938 | 12 октября 2013 | Windows 8.1, Windows Server 2012 R2 |
| 4.5.2 | 4.5.51090 | 5 мая 2014 | Windows 8.1, Windows Server 2012 R2 |
| 4.6 | 4.6.00081 | 10 июля 2015 | Windows 10, Windows Server 2016 |
| 4.6.1 | 17 ноября 2015 | ||
| 4.6.2 | 20 июля 2016 | ||
| 4.7 | 11 апреля 2017 | ||
| 4.7.1 | 13 октября 2017 | ||
| 4.7.2 | 4.7.3081.0 | 10 июля 2018 | Windows Server 2019 |
| 4.8 | 4.8.3761.0 | 18 апреля 2019 | |
| 4.8.1 | 9 августа 2022 |
Примечания
Литература
- Вольфганг Бир и др. «Die .NET-Technologie: Grundlagen und Anwendungsprogrammierung.» dpunkt Verlag 2006, ISBN 978-3-89864-421-1.
- Дино Эспозито, Андреа Салтарелло: «Architecting Applications for the Enterprise: Microsoft .NET.» Microsoft Press, Second Edition 2014, ISBN 978-0-7356-8535-2.
- Юрген Котц и др.: «.NET 3.0. WPF, WCF und WF – ein Überblick»; Addison-Wesley, Мюнхен, февраль 2007, ISBN 3-8273-2493-9.
- Даниэль Либхарт и др.: «Architecture Blueprints»; Hanser Verlag, 2007, ISBN 978-3-446-41201-9.
- Джеффри Рихтер: «Microsoft .NET Framework-Programmierung in C#. Expertenwissen zur CLR und dem .NET Framework 2.0.» Microsoft Press, 2-е изд., 2006, ISBN 978-3-86063-984-9.
- Хольгер Швихтенберг: «Microsoft .NET 2.0 Crashkurs.» Microsoft Press, Унтершлайсхайм, 2006, ISBN 3-86063-987-0.
- Хольгер Швихтенберг: «Microsoft .NET 3.0 Crashkurs.» Microsoft Press, Унтершлайсхайм, 2007, ISBN 3-86645-501-1.
- Хольгер Швихтенберг и др.: «Microsoft .NET 4.5 Update.» Microsoft Press 2012, ISBN 978-3-86645-468-2.
Ссылки
- Документация по .NET — официальный ресурс Microsoft (на русском)
- Free. Cross-platform. Open source. — продуктовая страница .NET (англ.)
- Mono — альтернативная реализация
- DotGNU — проект альтернативной реализации
- Архив материалов по .NET Framework (нем.)
- Поисковая иерархия классов .NET Framework (архив)


