.NET Framework
Разработчик(и) | Майкрософт |
---|---|
Первоначальный выпуск | 13 февраля 2002 г |
Стабильная версия | 4.8.1 / 9 августа 2022 г [1] |
Операционная система | Windows 98 или новее, Windows NT 4.0 или новее |
Платформа | IA-32 , x86-64 и ARM |
Входит в комплект | Microsoft Windows |
Преемник | .СЕТЬ |
Тип | Программная среда |
Лицензия | Смешанный; см . § Лицензирование |
Веб-сайт | дотнет |
.NET Framework (произносится как « dot net ») — это проприетарная программная платформа , разработанная Microsoft и работающая в основном в Microsoft Windows . Это была преобладающая реализация Common Language Infrastructure (CLI), пока ее не заменил кроссплатформенный проект .NET . Он включает в себя большую библиотеку классов под названием Framework Class Library (FCL) и обеспечивает языковую совместимость (каждый язык может использовать код, написанный на других языках) на нескольких языках программирования . Программы, написанные для .NET Framework, выполняются в программной среде (в отличие от аппаратной среды), называемой Common Language Runtime (CLR). CLR — это виртуальная машина приложения , предоставляющая такие службы, как безопасность, управление памятью и обработка исключений . Таким образом, компьютерный код, написанный с использованием .NET Framework, называется « управляемым кодом ». FCL и CLR вместе составляют .NET Framework.
FCL обеспечивает пользовательский интерфейс , доступ к данным , подключение к базам данных , криптографию , разработку веб-приложений , числовые алгоритмы и сетевые коммуникации . Программисты создают программное обеспечение, объединяя свой исходный код с .NET Framework и другими библиотеками. Платформа предназначена для использования большинством новых приложений, созданных для платформы Windows. Microsoft также производит интегрированную среду разработки для программного обеспечения .NET под названием Visual Studio .
.NET Framework начиналась как проприетарное программное обеспечение , хотя фирма почти сразу начала работать над стандартизацией стека программного обеспечения, еще до его первого выпуска. Несмотря на усилия по стандартизации, разработчики, в основном представители сообществ свободного и открытого программного обеспечения , выразили беспокойство по поводу выбранных условий и перспектив любой реализации свободного и открытого программного обеспечения, особенно в отношении патентов на программное обеспечение . С тех пор Microsoft изменила разработку .NET, чтобы более точно следовать современной модели проекта программного обеспечения, разработанного сообществом, включая выпуск обновления своего патента, обещающего устранить проблемы. [2]
В апреле 2019 года Microsoft выпустила .NET Framework 4.8, последнюю основную версию платформы в качестве проприетарного предложения, а в августе 2022 года — .NET Framework 4.8.1. ошибок С тех пор для этой версии выпускались только ежемесячные исправления безопасности и надежности. . Никаких дальнейших изменений в эту версию не планируется. .NET Framework будет по-прежнему включаться в будущие выпуски Windows и продолжать получать обновления безопасности; по состоянию на ноябрь 2023 г. ее удаление не планируется. [3]
История [ править ]
Microsoft начала разработку .NET Framework в конце 1990-х годов, первоначально под названием Next Generation Windows Services (NGWS), как часть стратегии .NET . К началу 2000 года были выпущены первые бета-версии .NET 1.0.
В августе 2000 года Microsoft и Intel работали над стандартизацией Common Language Infrastructure (CLI) и C# . К декабрю 2001 года оба ECMA были ратифицированы. стандарта [4] [5] Международная организация по стандартизации (ISO) последовала этому примеру в апреле 2003 года. Текущими версиями стандартов ISO являются ISO/IEC 23271:2012 и ISO/IEC 23270:2006. [6] [7]
Хотя Microsoft и их партнеры владеют патентами на CLI и C#, ECMA и ISO требуют, чтобы все патенты, необходимые для реализации, были доступны на « разумных и недискриминационных условиях ». Фирмы согласились выполнить эти условия и предоставить патенты без лицензионных отчислений. Однако это не распространялось на ту часть .NET Framework, не охваченную стандартами ECMA-ISO, к которым относились Windows Forms , ADO.NET и ASP.NET . Патенты, которыми владеет Microsoft в этих областях, возможно, препятствовали внедрению полной платформы сторонними разработчиками. [8]
Windows Vista — первая клиентская версия Windows, интегрированная с .NET Framework.
3 октября 2007 г. Microsoft объявила, что исходный код библиотек .NET Framework 3.5 станет доступен по лицензии Microsoft Reference Source License (Ms-RSL). [а] ). [9] Репозиторий исходного кода стал доступен в Интернете 16 января 2008 г. и включал BCL, ASP.NET, ADO.NET, Windows Forms, WPF и XML. Скотт Гатри из Microsoft пообещал, что будут добавлены библиотеки LINQ, WCF и WF. [10]
Варианты .NET Compact Framework и .NET Micro Framework .NET Framework обеспечивали поддержку других платформ Microsoft, таких как Windows Mobile , Windows CE и других встроенных устройств с ограниченными ресурсами. Silverlight обеспечил поддержку веб-браузеров через плагины.
В ноябре 2014 года Microsoft также выпустила обновленную информацию о своих патентных грантах, которая еще больше расширяет рамки ее предыдущих обещаний. Предыдущие проекты, такие как Mono, существовали в «серой зоне» закона , поскольку предыдущие гранты Microsoft распространялись только на технологии в «охватываемых спецификациях», включая строго 4-е издания ECMA-334 и ECMA-335. Новое патентное обещание, однако, не накладывает никаких ограничений на версию спецификации и даже распространяется на любые технологии среды выполнения .NET, задокументированные в MSDN, которые не были официально указаны группой ECMA, если проект решит их реализовать. Это позволяет Mono и другим проектам поддерживать паритет функций с современными функциями .NET, которые были представлены с момента публикации 4-го издания, без риска патентных судебных разбирательств по поводу реализации этих функций. В новом гранте сохраняется ограничение: любая реализация должна поддерживать минимальное соответствие обязательным частям спецификации CLI. [11]
31 марта 2016 года Microsoft объявила на Microsoft Build , что они полностью повторно лицензируют Mono под лицензией MIT даже в тех сценариях, где раньше требовалась коммерческая лицензия. [12] Microsoft также дополнила свое предыдущее обещание по патентам Mono, заявив, что они не будут заявлять о каких-либо «применимых патентах» против сторон, которые «используют, продают, предлагают к продаже, импортируют или распространяют Mono». [13] [14] Было объявлено, что проект Mono был передан в фонд .NET Foundation. Эти разработки последовали за приобретением Xamarin , которое началось в феврале 2016 года и завершилось 18 марта 2016 года. [15]
В пресс-релизе Microsoft подчеркивается, что кроссплатформенность теперь позволяет создать современный серверный стек .NET с полностью открытым исходным кодом. Microsoft выпустила исходный код для WPF, Windows Forms и WinUI 4 декабря 2018 года. [16]
Архитектура [ править ]
Общеязыковая инфраструктура
Common Language Infrastructure (CLI) предоставляет языково-нейтральную платформу для разработки и выполнения приложений. Благодаря реализации основных аспектов .NET Framework в рамках CLI эти функции не будут привязаны к одному языку, а будут доступны на многих языках, поддерживаемых платформой.
Общеязыковая среда выполнения [ править ]
.NET Framework включает среду Common Language Runtime (CLR). Он служит механизмом выполнения .NET Framework и предлагает множество сервисов, таких как управление памятью , безопасность типов , обработку исключений , сбор мусора , безопасность и управление потоками . Все программы, написанные для .NET Framework, выполняются CLR.
Программы, написанные для .NET Framework, компилируются в код Common Intermediate Language (CIL), а не напрямую компилируются в машинный код . Во время выполнения специфичный для архитектуры компилятор JIT- преобразует код CIL в машинный код.
Сборки [ править ]
Скомпилированный код CIL хранится в сборках CLI . В соответствии со спецификацией сборки хранятся в формате переносимого исполняемого файла (PE), который является общим на платформе Windows для всех библиотек динамической компоновки (DLL) и исполняемых EXE- файлов. Каждая сборка состоит из одного или нескольких файлов, один из которых должен содержать манифест, содержащий метаданные сборки. Полное имя сборки (не путать с именем файла на диске) содержит ее простое текстовое имя, номер версии, культуру и открытого ключа токен . Сборки считаются эквивалентными, если они имеют одно и то же полное имя.
Создатель сборки также может использовать закрытый ключ для строгого именования . Токен открытого ключа определяет реальную личность подписывающего лица сборки. Только те, кто знает свой закрытый ключ (системы шифрования с двойным ключом), могут подписывать сборки, имеющие то же строгое имя, что и сборка предыдущей версии. требуется строгое именование Для добавления сборок в Global Assembly Cache .
Начиная с Visual Studio 2015, технология компиляции .NET Native позволяет компилировать код .NET приложений универсальной платформы Windows непосредственно в машинный код, а не в код CIL, но приложение должно быть написано либо на C#, либо на Visual Basic.NET. [17]
Библиотека классов [ править ]
.NET Framework включает в себя реализацию основных стандартных библиотек CLI . Библиотека классов .NET Framework (FCL) организована в виде иерархии пространств имен . Большинство встроенных интерфейсов прикладного программирования (API) являются частью либо System.*
или Microsoft.*
пространства имен. Эти библиотеки классов реализуют множество общих функций, таких как чтение и запись файлов, отрисовка графики, взаимодействие с базой данных и манипулирование XML-документами. Библиотеки классов доступны для всех языков, совместимых с CLI . FCL реализует библиотеку базовых классов CLI (BCL) и другие библиотеки классов — некоторые из них определяются CLI, а другие зависят от Microsoft.
BCL включает в себя небольшое подмножество всей библиотеки классов и является основным набором классов, которые служат базовым API CLR. [18] Для .NET Framework большинство классов, считающихся частью BCL, находятся в mscorlib.dll
, System.dll
и System.Core.dll
. Классы BCL доступны в .NET Framework, а также в альтернативных реализациях CLI, включая .NET Compact Framework , Microsoft Silverlight , .NET Core и Mono .
FCL относится ко всей библиотеке классов, поставляемой с .NET Framework. Он включает в себя BCL, расширенный набор библиотек, включая Windows Forms , ASP.NET и Windows Presentation Foundation (WPF), а также расширения библиотек базовых классов ADO.NET , Language Integrated Query (LINQ), Windows Communication Foundation (WCF). ) и Workflow Foundation (WF). FCL гораздо шире по объему, чем стандартные библиотеки для таких языков, как C++ , и сравнима по объему со стандартными библиотеками Java .
С появлением альтернативных реализаций CLI (например, Silverlight) Microsoft представила концепцию переносимых библиотек классов (PCL), позволяющую потребляющей библиотеке работать более чем в одной реализации. С дальнейшим распространением реализаций подход PCL не смог масштабироваться (PCL — это определенные пересечения поверхности API между двумя или более реализациями). [19] В качестве следующего шага развития PCL задним числом была создана Стандартная библиотека .NET на основе System.Runtime.dll
API на основе UWP и Silverlight. В новых реализациях CLI рекомендуется реализовать версию стандартной библиотеки, позволяющую запускать существующие сторонние библиотеки без необходимости создания их новых версий. Стандартная библиотека .NET обеспечивает независимое развитие уровней библиотеки и модели приложения в архитектуре .NET. [20]
NuGet — это менеджер пакетов для всех платформ .NET. Он используется для извлечения сторонних библиотек в проект .NET с помощью глобального канала библиотеки на NuGet.org. [21] Частные каналы могут поддерживаться отдельно, например, на сервере сборки или в каталоге файловой системы.
C++/CLI [ править ]
Microsoft представила C++/CLI в Visual Studio 2005, который представляет собой язык и средство компиляции программ Visual C++ для запуска в .NET Framework. Некоторые части программы C++ по-прежнему выполняются в неуправляемой среде выполнения Visual C++ , тогда как специально измененные части транслируются в код CIL .NET Framework и запускаются с помощью CLR .
Сборки, скомпилированные с помощью компилятора C++/CLI, называются сборками смешанного режима, поскольку они содержат собственный и управляемый код в одной и той же DLL. [22] Такие сборки сложнее реконструировать, поскольку декомпиляторы .NET, такие как .NET Reflector, раскрывают только управляемый код.
Принцип конструкции [ править ]
Совместимость [ править ]
Поскольку компьютерным системам обычно требуется взаимодействие между новыми и старыми приложениями, .NET Framework предоставляет средства доступа к функциям, реализованным в новых и старых программах, которые выполняются вне среды .NET. Доступ к компонентам компонентной объектной модели (COM) предоставляется в System.Runtime.InteropServices
и System.EnterpriseServices
пространства имен фреймворка. Доступ к другим функциям осуществляется через службы вызова платформы (P/Invoke). Доступ к функциям .NET из собственных приложений осуществляется через обратную функцию P/Invoke.
Языковая независимость [ править ]
.NET Framework представляет систему общих типов (CTS), которая определяет все возможные типы данных и программные конструкции, поддерживаемые CLR, а также то, как они могут или не могут взаимодействовать в соответствии со спецификациями CLI. Благодаря этой функции .NET Framework поддерживает обмен типами и экземплярами объектов между библиотеками и приложениями, написанными с использованием любого соответствующего языка CLI .
Типовая безопасность [ править ]
CTS и CLR, используемые в .NET Framework, также обеспечивают безопасность типов . Это предотвращает некорректное приведение типов, неправильные вызовы методов и проблемы с размером памяти при доступе к объекту. Это также делает большинство языков CLI статически типизированными или без него (с выводом типа ). Однако, начиная с .NET Framework 4.0, среда выполнения динамического языка расширила CLR, позволяя реализовывать динамически типизированные языки поверх CLI.
Портативность [ править ]
Хотя Microsoft никогда не реализовывала полную структуру ни в одной системе, кроме Microsoft Windows, она разработала эту структуру как кроссплатформенную. [23] и реализации доступны для других операционных систем (см. Silverlight и § Альтернативные реализации ). Microsoft представила спецификации CLI (включая библиотеки базовых классов, CTS и CIL). [24] [25] [26] С# , [5] и С++/CLI [27] как Ecma International (ECMA), так и Международной организации по стандартизации (ISO), что делает их доступными в качестве официальных стандартов. Это позволяет третьим сторонам создавать совместимые реализации платформы и ее языков на других платформах.
Базовая кроссплатформенная платформа .NET (ранее .NET Core) официально доступна также для многих дистрибутивов Linux и MacOS. [28]
Безопасность [ править ]
.NET Framework имеет собственный механизм безопасности с двумя общими функциями: безопасность доступа к коду (CAS), а также проверка и проверка. CAS основан на свидетельствах, связанных с конкретной сборкой. Обычно доказательством является источник сборки (независимо от того, установлена ли она на локальном компьютере или загружена из Интернета). CAS использует доказательства для определения разрешений, предоставленных коду. Когда вызывающий код требует предоставить ему определенное разрешение, CLR выполняет обход стека вызовов, проверяя каждую сборку каждого метода в стеке вызовов на наличие требуемого разрешения; если какой-либо сборке не предоставлено разрешение, она выдаст исключение безопасности.
Управляемый байт-код CIL легче перепроектировать , чем собственный код, если только он не запутан . [29] .NET Программы -декомпиляторы позволяют разработчикам, не имеющим навыков обратного проектирования, просматривать исходный код незапутанных сборок .NET. Напротив, приложения, скомпилированные в собственный машинный код, гораздо сложнее реконструировать, а исходный код почти никогда не создается успешно, главным образом из-за оптимизации компилятора и отсутствия отражения . [30] Это вызывает обеспокоенность в бизнес-сообществе по поводу возможной утраты коммерческой тайны и обхода механизмов лицензионного контроля. Чтобы смягчить это, Microsoft с 2002 года включила Dotfuscator Community Edition в Visual Studio .NET . [б] Сторонние инструменты обфускации также доступны от таких поставщиков, как VMware , Vi Labs, Turbo и Red Gate Software . Инструменты шифрования на уровне метода для кода .NET доступны у таких поставщиков, как SafeNet .
Управление памятью [ править ]
CLR освобождает разработчика от бремени управления памятью (выделение и освобождение по завершении); он сам управляет памятью, определяя, когда память может быть безопасно освобождена. Экземпляры типов (объектов) .NET выделяются из управляемой кучи; пул памяти, управляемый CLR. Пока существует ссылка на объект, которая может быть прямой или через граф объектов, объект считается используемым. Когда ссылки на объект не существует и к нему невозможно получить доступ или использовать его, он становится мусором, пригодным для сбора.
.NET Framework включает в себя сборщик мусора (GC), который периодически запускается в отдельном от потока приложения потоке, который перечисляет все непригодные для использования объекты и освобождает выделенную им память. Это недетерминированный, уплотняющий сборщик мусора с маркировкой и очисткой . GC запускается только тогда, когда использован заданный объем памяти или в системе достаточно памяти. Поскольку не гарантируется, что будут достигнуты условия для освобождения памяти, запуски сборщика мусора являются недетерминированными . Каждое .NET-приложение имеет набор корней, которые являются указателями на объекты в управляемой куче ( управляемые объекты ). К ним относятся ссылки на статические объекты, объекты, определенные как локальные переменные или параметры метода, находящиеся в настоящее время в области видимости, а также объекты, на которые ссылаются регистры ЦП. [31] Когда GC запускается, он приостанавливает работу приложения, а затем для каждого объекта, указанного в корне, рекурсивно перечисляет все объекты, доступные из корневых объектов, и помечает их как доступные. Он использует метаданные CLI и отражение для обнаружения объектов, инкапсулированных объектом, а затем рекурсивно обходит их. Затем он перечисляет все объекты в куче (которые изначально были расположены последовательно) с использованием отражения. Все объекты, не отмеченные как доступные, являются мусором. [31] Это этап оценки . [32] Поскольку память, занимаемая мусором, не имеет значения, она считается свободным пространством. Однако при этом между объектами, которые изначально были смежными, остаются куски свободного пространства. Затем объекты сжимаются вместе, чтобы свободное пространство в управляемой куче снова стало смежным. [31] [32] Любая ссылка на объект, признанная недействительной в результате перемещения объекта, обновляется GC, чтобы отразить новое местоположение. [32] Приложение возобновляется после завершения сборки мусора. Последняя версия .NET Framework использует параллельную сборку мусора вместе с пользовательским кодом, что делает паузы незаметными, поскольку они выполняются в фоновом режиме. [33]
Сборщик мусора, используемый .NET Framework, также является поколением . [34] Объектам присваивается поколение . Вновь созданные объекты имеют тег Generation 0 . Объекты, пережившие одну сборку мусора, помечаются тегом Generation 1 . Объекты поколения 1, пережившие другую коллекцию, относятся к поколению 2 . Платформа использует объекты до поколения 2. [34] Объекты более высокого поколения собираются реже, чем объекты более низкого поколения. Это повышает эффективность сборки мусора, поскольку старые объекты имеют тенденцию жить дольше, чем новые. [34] Игнорируя старые объекты в большинстве сборов, в целом требуется меньше проверок и операций уплотнения. [34]
Производительность [ править ]
При первом запуске приложения .NET Framework компилирует код CIL в исполняемый код с помощью JIT-компилятора и кэширует исполняемую программу в .NET Native Image Cache. [35] [36] За счет кэширования приложение при последующих запусках запускается быстрее, хотя первый запуск обычно происходит медленнее. Чтобы ускорить первый запуск, разработчики могут использовать утилиту Native Image Generator для предварительной ручной компиляции и кэширования любого приложения .NET. [36]
Сборщик мусора, интегрированный в среду, может вызывать непредвиденные задержки выполнения, над которыми разработчик практически не имеет прямого контроля. «В больших приложениях количество объектов, с которыми должен работать сборщик мусора, может стать очень большим, а значит, на их посещение и перестановку может уйти очень много времени». [37]
.NET Framework обеспечивает поддержку вызова потоковых расширений SIMD (SSE) через управляемый код с апреля 2014 года в Visual Studio 2013 с обновлением 2. Однако Mono обеспечивает поддержку расширений SIMD начиная с версии 2.2 в пространстве имен Mono.Simd в 2009 году. [38] Ведущий разработчик Mono Мигель де Икаса выразил надежду, что поддержка SIMD будет принята стандартом ECMA CLR. [39] Потоковые расширения SIMD доступны в процессорах x86 с момента появления Pentium III . Некоторые другие архитектуры, такие как ARM и MIPS, также имеют расширения SIMD. Если процессор не поддерживает эти расширения, инструкции моделируются программно. [40] [41]
Альтернативные реализации [ править ]
.NET Framework была преобладающей реализацией CLI до выпуска .NET . Существуют и другие реализации частей платформы. Хотя механизм выполнения описан в спецификации ECMA-ISO, другие его реализации могут быть обременены проблемами с патентами ; Стандарты ISO могут включать в себя заявление об отказе от ответственности: «Обратим внимание на возможность того, что некоторые элементы этого документа могут быть объектом патентных прав. ISO не несет ответственности за идентификацию любого или всех таких патентных прав». [42] Сложнее разработать альтернативу FCL, которая не описана открытым стандартом и может подлежать ограничениям авторских прав. Кроме того, некоторые части FCL имеют функции и поведение, специфичные для Windows, поэтому реализация на платформах, отличных от Windows, может быть проблематичной.
Здесь перечислены некоторые альтернативные реализации частей платформы.
- .NET Micro Framework — это платформа .NET для устройств с крайне ограниченными ресурсами. Он включает небольшую версию CLR и поддерживает разработку на C# (хотя некоторые разработчики могли использовать VB.NET , [43] хотя и с некоторым количеством взлома, и с ограниченным функционалом) и отладкой (в эмуляторе или на оборудовании), оба с использованием Microsoft Visual Studio . Он также включает подмножество библиотеки классов .NET Framework (около 70 классов и около 420 методов), структуру графического пользовательского интерфейса , основанную на WPF, и дополнительные библиотеки, специфичные для встроенных приложений.
- Mono — это реализация CLI и FCL, предоставляющая дополнительные функции. Оно лицензируется как свободное программное обеспечение по лицензии MIT . Он включает поддержку библиотек ASP.NET, ADO.NET и Windows Forms для широкого спектра архитектур и операционных систем. Он также включает компиляторы C# и VB.NET.
- Portable.NET (часть DotGNU ) предоставляет реализацию CLI, части FCL и компилятор C#. Он поддерживает различные процессоры и операционные системы. Проект был прекращен, последняя стабильная версия вышла в 2009 году.
- Microsoft Shared Source Common Language Infrastructure — это несвободная реализация CLR. Однако последняя версия работает только на Windows XP SP2 и не обновлялась с 2006 года. Таким образом, она не содержит всех функций версии 2.0 .NET Framework.
- КроссНет [44] представляет собой реализацию CLI и частей FCL. Это бесплатное программное обеспечение, использующее лицензию MIT с открытым исходным кодом .
Лицензирование [ править ]
Платформы управляемого кода Microsoft и их компоненты лицензируются следующим образом:
Компонент | Лицензия |
---|---|
.NET Framework (распространяемый пакет) | Собственное программное обеспечение [45] |
Справочный исходный код .NET Framework 4.5 и более ранних версий. | Справочная лицензия Microsoft (Ms-RSL [а] ) [9] [46] |
Справочный исходный код .NET Framework 4.6 | МОЯ лицензия [47] |
Мононуклеоз | МОЯ лицензия [15] |
.NET (ранее .NET Core) CoreFX, CoreCLR и CLI | МОЯ лицензия [48] |
.NET микрофреймворк | Лицензия Апач 2.0 [49] |
Платформа компилятора .NET (кодовое имя «Рослин») | МОЯ лицензия [50] |
ASP.NET MVC , веб-API и веб-страницы ( Razor ) | Лицензия Апач 2.0 [51] |
Ядро ASP.NET | Лицензия Апач 2.0 [52] |
Набор средств управления ASP.NET Ajax | Лицензия БСД [53] |
ASP.NET СигналР | Лицензия Апач 2.0 [54] |
Entity Framework | Лицензия Апач 2.0 [55] |
NuGet | Лицензия Апач 2.0 [56] |
См. также [ править ]
- Библиотека классов Microsoft Foundation (MFC), объектно-ориентированная абстракция, используемая для упрощения программирования приложений на базе Windows до появления .NET Framework.
- .NET (ранее .NET Core)
- Список языков CLI
- Стандартные библиотеки (CLI) — стандартные библиотеки .NET.
- Библиотека базовых классов (BCL)
Примечания [ править ]
- ^ Jump up to: Перейти обратно: а б Раньше лицензия называлась сокращенно Ms-RL, но теперь Ms-RL относится к взаимной лицензии Microsoft .
- ^ Dotfuscator Community Edition 4.0
Ссылки [ править ]
- ^ «Загрузить автономный установщик .NET Framework 4.8» . Майкрософт . Архивировано из оригинала 15 августа 2019 года . Проверено 15 августа 2019 г.
- ^ Ибаньес, Луис (19 ноября 2014 г.). «Microsoft поддерживает открытый исходный код» . Opensource.com . Проверено 2 января 2020 г.
- ^ геваррен. «.NET Framework и версии ОС Windows» . Microsoft Learn . Проверено 21 ноября 2020 г.
- ^ «Стандарт ECMA-335: Общеязыковая инфраструктура (CLI)» (6-е изд.). ЭКМА . Июнь 2012. Архивировано из оригинала 29 июня 2013 года . Проверено 31 августа 2005 г.
- ^ Jump up to: Перейти обратно: а б «Стандарт ECMA-334: спецификация языка C#» (4-е изд.). ЭКМА . Июнь 2006. Архивировано из оригинала 31 октября 2010 года . Проверено 31 августа 2005 г.
- ^ «ISO/IEC 23271:2012 Информационные технологии. Общеязыковая инфраструктура» (3-е изд.). Международная организация по стандартизации . 13 февраля 2012 г.
- ^ «ISO/IEC 23270:2006 – Информационные технологии – Языки программирования – C#» (2-е изд.). Международная организация по стандартизации . 26 января 2012. Архивировано из оригинала 6 декабря 2010 года . Проверено 1 апреля 2008 г.
- ^ Смит, Бретт (16 июля 2009 г.). «Пустые обещания Microsoft» . Фонд свободного программного обеспечения . Архивировано из оригинала 19 августа 2009 года . Проверено 3 августа 2009 г.
Однако есть несколько библиотек, включенных в Mono и обычно используемых такими приложениями, как Tomboy, которые не требуются по стандарту. И для ясности: мы не говорим о библиотеках, специфичных для Windows, таких как ASP.NET и Windows Forms. Вместо этого мы говорим о библиотеках в пространстве имен System, которые предоставляют общие функциональные возможности, которые программисты ожидают от современных языков программирования.
- ^ Jump up to: Перейти обратно: а б Гатри, Скотт (3 октября 2007 г.). «Выпуск исходного кода для NET Framework» . Блог Скотта Гатри . Майкрософт . Архивировано из оригинала 7 сентября 2010 года . Проверено 15 сентября 2010 г.
- ^ Гатри, Скотт (16 января 2008 г.). «Исходный код библиотеки .NET Framework теперь доступен» . Блог Скотта Гатри . Майкрософт . Проверено 28 февраля 2015 г.
- ^ «Патентное обещание Microsoft для .NET-библиотек и компонентов среды выполнения» . Гитхаб . Архивировано из оригинала 21 февраля 2021 года . Проверено 16 ноября 2014 г.
- ^ Крил, Пол (1 апреля 2016 г.). «Среда выполнения Xamarin Mono получает более свободную лицензию» . Инфомир . ИДГ .
- ^ Феррайра, Бруно (31 марта 2016 г.). «Теперь Xamarin поставляется бесплатно с Visual Studio» . Технический отчет . Архивировано из оригинала 2 апреля 2016 года . Проверено 12 апреля 2016 г.
- ^ «Патентное обещание Microsoft для Mono» . Моно на GitHub . 28 марта 2016. Архивировано из оригинала 16 апреля 2016 года . Проверено 16 апреля 2016 г.
- ^ Jump up to: Перейти обратно: а б Фридман, Нат (31 марта 2016 г.). «Xamarin для всех» . Блог Xamarin . Архивировано из оригинала 12 апреля 2016 года . Проверено 12 апреля 2016 г.
- ^ Галло, Кевин (4 декабря 2018 г.). «Анонс открытого исходного кода WPF, Windows Forms и WinUI на Microsoft Connect 2018» . Блог разработчиков Windows . Майкрософт. Архивировано из оригинала 15 декабря 2018 года . Проверено 24 декабря 2018 г.
- ^ рпетруша. «Компиляция приложений с помощью .NET Native» . Microsoft Learn . Архивировано из оригинала 3 декабря 2017 года . Проверено 2 декабря 2017 г.
- ^ «Сообщество библиотек базовых классов» . Майкрософт . Архивировано из оригинала 24 апреля 2009 года . Проверено 1 июня 2008 г.
- ^ «Стандарт платформы .NET» . Гитхаб . Архивировано из оригинала 19 мая 2016 года . Проверено 23 апреля 2016 г.
- ^ «Обновление ASP.NET Core 1.0 RC2» . Скотт Хансельман . 14 апреля 2016 года . Проверено 23 апреля 2016 г.
- ^ «Галерея NuGet — Главная» . nuget.org . Архивировано из оригинала 21 февраля 2021 года . Проверено 21 февраля 2021 г.
- ^ Смешанные (собственные и управляемые) сборки. Архивировано 22 октября 2014 г. на Wayback Machine , MSDN.
- ^ «Скотт Гатри: Silverlight и кроссплатформенная CLR» . Канал 9 . 30 апреля 2007 г. Архивировано из оригинала 22 мая 2015 г. . Проверено 16 апреля 2016 г.
- ^ «ECMA 335 - Стандарт ECMA-335 Common Language Infrastructure (CLI), 4-е издание (июнь 2006 г.)» . ЭКМА. 1 июня 2006 года. Архивировано из оригинала 14 июня 2008 года . Проверено 1 июня 2008 г.
- ^ «ИСО/МЭК 23271:2006» . Стандарты ИСО. 29 сентября 2006 г. Архивировано из оригинала 1 июля 2018 г. Проверено 17 апреля 2012 г.
- ^ «Технический отчет TR/84 Common Language Infrastructure (CLI) – информация, полученная из XML-файла раздела IV» . ЭКМА. 1 июня 2006 г. Архивировано из оригинала 7 марта 2015 г. Проверено 16 апреля 2016 г.
- ^ «Стандартная спецификация языка C++/CLI ECMA-372» . ЭКМА. 1 декабря 2005 года. Архивировано из оригинала 10 августа 2008 года . Проверено 16 января 2008 г.
- ^ «.NET становится кроссплатформенной с .NET Core» .
- ^ Gartner, Inc., как сообщается в «Hype Cycle for Cyberthreats, 2006», сентябрь 2006 г., Нил Макдональд; Амрит Уильямс и др.
- ^ Сифуэнтес, Кристина (июль 1994 г.). «6: Анализ потока управления» (PDF) . Методы обратной компиляции (Диссертация). Квинслендский технологический университет . Архивировано из оригинала (PDF) 22 ноября 2016 года.
- ^ Jump up to: Перейти обратно: а б с «Сборка мусора: автоматическое управление памятью в Microsoft .NET Framework» . Архивировано из оригинала 3 июля 2007 года . Проверено 1 июня 2008 г.
- ^ Jump up to: Перейти обратно: а б с «Сборка мусора в .NET» . Архивировано из оригинала 25 мая 2008 года . Проверено 1 июня 2008 г.
- ^ «В .NET Framework 4.5 включены новые усовершенствования сборщика мусора для клиентских и серверных приложений» . 20 июля 2012 года . Проверено 2 октября 2015 г.
- ^ Jump up to: Перейти обратно: а б с д «Сборка мусора. Часть 2. Автоматическое управление памятью в Microsoft .NET Framework» . Архивировано из оригинала 26 июня 2007 года . Проверено 1 июня 2008 г.
- ^ «Понимание моментальной компиляции .NET» . телерик.com . 28 мая 2013. Архивировано из оригинала 11 июня 2013 года . Проверено 21 мая 2015 г.
- ^ Jump up to: Перейти обратно: а б Компиляция MSIL в собственный код. Архивировано 19 апреля 2015 г. на Wayback Machine , MSDN, Microsoft.
- ^ «Понимание сборки мусора в .NET» . 17 июня 2009 г.
- ^ «Примечания к выпуску Mono 2.2 – Mono» . mono-project.com .
- ^ де Икаса, Мигель (3 ноября 2008 г.). «Поддержка SIMD Mono: делаем Mono безопасным для игр» . Тирания.орг. Архивировано из оригинала 4 ноября 2010 года . Проверено 17 апреля 2012 г.
- ^ де Икаса, Мигель (3 ноября 2008 г.). «Поддержка SIMD Mono: делаем Mono безопасным для игр» . tirania.org . Проверено 6 мая 2022 г.
- ^ «Типы с SIMD-ускорением в .NET» . Microsoft Learn . Проверено 6 мая 2022 г.
- ^ ISO 9001:2008, Предисловие.
- ^ Фэйрберн, Кристофер (1 апреля 2008 г.). «Использование VB.NET с .NET Micro Framework «/dev/mobile» . /Дев/мобильный . Архивировано из оригинала 27 февраля 2018 года . Проверено 17 апреля 2012 г.
- ^ «КроссНет» . Codeplex.com. Архивировано из оригинала 25 января 2010 года . Проверено 17 апреля 2012 г.
- ^ «Распространяемое лицензионное соглашение Microsoft .NET Framework» . MSDN . Майкрософт . 13 сентября 2006 года. Архивировано из оригинала 2 апреля 2015 года . Проверено 28 февраля 2015 г.
- ^ Брей, Брэндон (15 августа 2012 г.). «Анонсируем выпуск .NET Framework 4.5 RTM — продукт и исходный код» . Блог .NET Framework . Майкрософт . Архивировано из оригинала 4 октября 2016 года . Проверено 18 августа 2016 г.
- ^ «Анонс предварительной версии .NET 2015: новая эра для .NET» . Блог .NET Framework . Майкрософт . 12 ноября 2014 года. Архивировано из оригинала 19 августа 2016 года . Проверено 18 августа 2016 г.
- ^ «.NET Core 5» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.
- ^ «.NET Micro Framework» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.
- ^ «Лицензия Рослин» . Гитхаб . Фонд .NET. 5 февраля 2020 года. Архивировано из оригинала 24 марта 2018 года . Проверено 14 апреля 2018 г.
- ^ «ASP.NET MVC, веб-API и веб-страницы (Razor)» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.
- ^ «Лицензия ASP.NET Core» . Гитхаб . Фонд .NET. 5 июля 2017 года. Архивировано из оригинала 21 февраля 2021 года . Проверено 14 апреля 2018 г.
- ^ «Набор средств управления Ajax ASP.NET» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.
- ^ «ASP.NET СигналR» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.
- ^ «Структура сущности» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 18 апреля 2016 года . Проверено 16 апреля 2016 г.
- ^ «НюГет» . dotnetfoundation.org . Фонд .NET. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 г.