Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

.NET Framework (произносится как « точка сети» ) является программная среда , разработанная Microsoft , которая работает в основном на Microsoft Windows . Он включает большую библиотеку классов под названием 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, последнюю версию платформы в качестве проприетарного предложения. С тех пор для этой версии выпускались только ежемесячные исправления ошибок, связанных с безопасностью и надежностью. Никаких дальнейших изменений в эту версию не планируется. [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 International (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]

3 октября 2007 г. Microsoft объявила, что исходный код библиотек .NET Framework 3.5 должен стать доступным по лицензии Microsoft Reference Source License (Ms-RSL [a] ). [9] Репозиторий исходного кода стал доступен онлайн 16 января 2008 г. и включал BCL, ASP.NET, ADO.NET, Windows Forms, WPF и XML. Скотт Гатри из Microsoft пообещал, что добавляются библиотеки LINQ, WCF и WF. [10]

Платформа .NET Compact Framework и .NET Framework Micro варианты предоставляемой поддержки .NET Framework для других платформ Microsoft , такие как Windows Mobile , Windows CE и других ограниченных ресурсов встраиваемых устройств. Silverlight обеспечил поддержку веб-браузеров через плагины.

Логотип Microsoft .NET Framework v4.5

В ноябре 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)

Общая языковая инфраструктура [ править ]

Common Language Infrastructure (CLI) обеспечивает платформу, не зависящую от языка, для разработки и выполнения приложений. Благодаря реализации основных аспектов .NET Framework в рамках CLI эти функции не будут привязаны к одному языку, но будут доступны на многих языках, поддерживаемых платформой.

Common Language Runtime [ править ]

.NET Framework включает Common Language Runtime (CLR). Он служит механизмом выполнения .NET Framework и предлагает множество услуг, таких как управление памятью , безопасность типов , обработка исключений , сборка мусора , безопасность и управление потоками . Все программы, написанные для .NET Framework, выполняются средой CLR.

Программы, написанные для .NET Framework, компилируются в код Common Intermediate Language (CIL), а не напрямую в машинный код . Во время выполнения JIT -компилятор, зависящий от архитектуры, превращает код CIL в машинный код.

Сборки [ править ]

Скомпилированный код CIL хранится в сборках CLI . В соответствии со спецификацией сборки хранятся в формате файла Portable Executable (PE), который является общим для платформы Windows для всех библиотек динамической компоновки (DLL) и исполняемых файлов EXE . Каждая сборка состоит из одного или нескольких файлов, один из которых должен содержать манифест, содержащий метаданные для сборки. Полное имя сборки (не путать с именем файла на диске) содержит ее простое текстовое имя, номер версии, язык и региональные параметры и токен открытого ключа . Сборки считаются эквивалентными, если они имеют одинаковое полное имя.

Закрытый ключ также может использоваться создателем сборки для строгого именования . Маркер открытого ключа определяет, каким закрытым ключом подписана сборка. Только создатель пары ключей (обычно человек, подписывающий сборку) может подписывать сборки, которые имеют то же строгое имя, что и сборка предыдущей версии, поскольку создатель обладает закрытым ключом. Для добавления сборок в глобальный кэш сборок требуется строгое именование .

Начиная с 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, а также в его альтернативных реализациях, включая .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 .

С введением альтернативных реализаций (например, Silverlight) Microsoft представила концепцию переносимых библиотек классов (PCL), позволяющую потребляющей библиотеке работать на нескольких платформах. С дальнейшим распространением платформ .NET подход PCL не смог масштабироваться (PCL - это определенные пересечения поверхности API между двумя или более платформами). [19] Как следующий шаг эволюции PCL, Стандартная библиотека .NET была создана задним числом на основеSystem.Runtime.dllAPI на основе UWP и Silverlight. На новых платформах .NET рекомендуется реализовать версию стандартной библиотеки, позволяющую им повторно использовать существующие сторонние библиотеки для работы без их новых версий. Стандартная библиотека .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 и запускаются с помощью среды CLR .NET Framework .

Сборки, скомпилированные с помощью компилятора C ++ / CLI, называются сборками смешанного режима, поскольку они содержат собственный и управляемый код в одной и той же DLL. [22] Такие сборки сложнее реконструировать, поскольку декомпиляторы .NET, такие как .NET Reflector, раскрывают только управляемый код.

Принцип дизайна [ править ]

Совместимость [ править ]

Поскольку компьютерные системы обычно требуют взаимодействия между новыми и старыми приложениями, .NET Framework предоставляет средства для доступа к функциям, реализованным в новых и старых программах, которые выполняются вне среды .NET. Доступ к Component Object Model компонентов (COM) обеспечивается в System.Runtime.InteropServicesи System.EnterpriseServicesпространств имен каркаса. Доступ к другим функциям осуществляется через службы вызова платформы (P / Invoke). Доступ к функциям .NET из собственных приложений осуществляется через функцию обратного P / Invoke.

Независимость от языка [ править ]

.NET Framework представляет систему общих типов (CTS), которая определяет все возможные типы данных и программные конструкции, поддерживаемые CLR, и то, как они могут или не могут взаимодействовать в соответствии со спецификацией CLI. Благодаря этой функции .NET Framework поддерживает обмен типами и экземплярами объектов между библиотеками и приложениями, написанными с использованием любого совместимого языка .NET .

Типовая безопасность [ править ]

CTS и CLR, используемые в .NET Framework, также обеспечивают безопасность типов . Это предотвращает нечеткое приведение типов, неправильные вызовы методов и проблемы с размером памяти при доступе к объекту. Это также делает большинство языков CLI статически типизированными (с выводом типа или без него). Однако, начиная с .NET Framework 4.0, среда выполнения динамического языка расширила среду CLR, что позволило реализовать языки с динамической типизацией поверх интерфейса командной строки.

Переносимость [ править ]

Хотя Microsoft никогда не реализовывала полную структуру ни в одной системе, кроме Microsoft Windows, она спроектировала эту структуру так, чтобы она была кроссплатформенной [23], и доступны реализации для других операционных систем (см. Silverlight и § Альтернативные реализации ). Microsoft представила спецификации для CLI (который включает библиотеки основных классов, CTS и CIL), [24] [25] [26] C # , [27] и C ++ / CLI [28] как в Ecma International (ECMA), так и в International. Организация по стандартизации(ISO), делая их доступными в качестве официальных стандартов. Это позволяет третьим сторонам создавать совместимые реализации платформы и ее языков на других платформах.

Безопасность [ править ]

.NET Framework имеет собственный механизм безопасности с двумя общими функциями: безопасность доступа для кода (CAS) и проверка и проверка. CAS основан на доказательствах, связанных с конкретной сборкой. Обычно доказательством является источник сборки (установлен ли он на локальном компьютере или загружен из Интернета). CAS использует свидетельства для определения разрешений, предоставленных коду. Другой код может потребовать, чтобы вызывающему коду было предоставлено указанное разрешение. Требование заставляет CLR выполнять обход стека вызовов: каждая сборка каждого метода в стеке вызовов проверяется на наличие необходимого разрешения; если какой-либо сборке не предоставлено разрешение, создается исключение безопасности.

Управляемый байт-код CIL легче реконструировать, чем собственный код, если он не запутан . [29] Программы декомпиляции .NET позволяют разработчикам, не имеющим навыков обратного проектирования, просматривать исходный код, стоящий за необфусцированными сборками .NET. Напротив, приложения, скомпилированные в собственный машинный код, гораздо сложнее реконструировать, а исходный код почти никогда не создается успешно, в основном из-за оптимизации компилятора и отсутствия отражения . [30] Это вызывает опасения в деловом сообществе по поводу возможной потери коммерческой тайны и обхода механизмов контроля лицензий. Чтобы смягчить это, Microsoft включилаDotfuscator Community Edition с Visual Studio .NET с 2002 года. [B] Сторонние инструменты обфускации также доступны от таких поставщиков, как VMware , Vi Labs , Turbo и Red Gate Software . Инструменты шифрования на уровне методов для кода .NET доступны от таких поставщиков, как SafeNet .

Управление памятью [ править ]

CLR освобождает разработчика от бремени управления памятью (выделения и освобождения по завершении); он сам обрабатывает управление памятью, определяя, когда можно безопасно освободить память. Экземпляры типов (объектов) .NET выделяются из управляемой кучи; пул памяти, управляемый CLR. Пока существует ссылка на объект, которая может быть прямой или посредством графа объектов, объект считается используемым. Когда ссылка на объект не существует, и он не может быть достигнут или использован, он становится мусором, подлежащим сборке.

.NET Framework включает сборщик мусора (GC), который периодически запускается в отдельном потоке от потока приложения, который перечисляет все непригодные для использования объекты и освобождает выделенную для них память. Это недетерминированный сборщик мусора с уплотнением и очисткой . Сборщик мусора запускается только тогда, когда используется установленный объем памяти или если в системе имеется достаточная нагрузка на память. Поскольку достижение условий для освобождения памяти не гарантируется, запуски сборки мусора не являются детерминированными . Каждое приложение .NET имеет набор корней, которые являются указателями на объекты в управляемой куче ( управляемые объекты). К ним относятся ссылки на статические объекты, объекты, определенные как локальные переменные или параметры метода, которые в настоящее время находятся в области видимости, и объекты, на которые ссылаются регистры ЦП. [31] При запуске GC он приостанавливает приложение, а затем для каждого объекта, указанного в корне, он рекурсивно перечисляет все объекты, доступные из корневых объектов, и отмечает их как достижимые. Он использует метаданные CLI и отражение для обнаружения объектов, инкапсулированных объектом, а затем рекурсивно просматривает их. Затем он перечисляет все объекты в куче (которые изначально были размещены непрерывно) с помощью отражения. Все объекты, не отмеченные как достижимые, являются мусором. [31] Это этап отметки . [32]Поскольку память, удерживаемая мусором, не имеет значения, она считается свободным пространством. Однако при этом остаются участки свободного пространства между объектами, которые изначально были смежными. Затем объекты уплотняются вместе, чтобы свободное пространство в управляемой куче снова становилось непрерывным. [31] [32] Любая ссылка на объект, признанная недействительной в результате перемещения объекта, обновляется сборщиком мусора, чтобы отразить новое местоположение. [32] Приложение возобновляется после завершения сборки мусора. Последняя версия .NET framework использует параллельную сборку мусора вместе с пользовательским кодом, делая паузы незаметными, так как это выполняется в фоновом режиме. [33]

Сборщик мусора, используемый .NET Framework, также является поколенческим . [34] Объектам присваивается поколение . Вновь созданные объекты помечаются как Generation 0 . Объекты, пережившие одну сборку мусора, помечаются как Generation 1 . Объекты поколения 1, пережившие другую коллекцию, являются объектами поколения 2 . Фреймворк использует объекты до 2-го поколения. [34] Объекты более высокого поколения собираются мусором реже, чем объекты более низкого поколения. Это повышает эффективность сборки мусора, поскольку более старые объекты, как правило, имеют более длительный срок службы, чем новые объекты. [34]Путем игнорирования старых объектов в большинстве запусков коллекции в целом требуется меньше проверок и операций сжатия. [34]

Производительность [ править ]

Когда приложение запускается впервые, .NET Framework компилирует код CIL в исполняемый код, используя свой оперативный компилятор , и кэширует исполняемую программу в .NET Native Image Cache. [35] [36] Из-за кеширования приложение запускается быстрее для последующих запусков, хотя первый запуск обычно происходит медленнее. Чтобы ускорить первый запуск, разработчики могут использовать утилиту Native Image Generator для предварительной компиляции и кэширования любого .NET-приложения вручную . [36]

Сборщик мусора, интегрированный в среду, может вызвать непредвиденные задержки выполнения, над которыми разработчик не имеет прямого контроля. «В больших приложениях количество объектов, с которыми должен работать сборщик мусора, может стать очень большим, а это означает, что на их посещение и перестановку всех их может уйти очень много времени». [37]

.NET Framework обеспечивает поддержку вызова Streaming SIMD Extensions (SSE) через управляемый код с апреля 2014 года в Visual Studio 2013 Update 2. Однако Mono обеспечил поддержку SIMD Extensions с версии 2.2 в пространстве имен Mono.Simd в 2009 году [38]. ] Ведущий разработчик Mono Мигель де Икаса выразил надежду, что эта поддержка SIMD будет принята стандартом CLR ECMA. [39] Streaming SIMD Extensions были доступны в процессорах x86 с момента появления Pentium III . Некоторые другие архитектуры, такие как ARM и MIPSтакже есть расширения SIMD. Если ЦП не поддерживает эти расширения, инструкции моделируются в программном обеспечении. [ необходима цитата ]

Альтернативные реализации [ править ]

.NET Framework - преобладающая реализация технологий .NET. Существуют и другие реализации для частей фреймворка. Хотя механизм выполнения описан спецификацией ECMA-ISO, другие его реализации могут быть затруднены из-за проблем с патентами ; Стандарты ISO могут включать в себя отказ от ответственности: «Обращается внимание на возможность того, что некоторые элементы этого документа могут быть предметом патентных прав. ISO не несет ответственности за идентификацию каких-либо или всех таких патентных прав». [40] Труднее разработать альтернативы FCL, которые не описаны в открытом стандарте и могут подпадать под ограничения авторского права. Кроме того, части FCL имеют функции и поведение, специфичные для Windows, поэтому реализация на платформах, отличных от Windows, может быть проблематичной.

Некоторые альтернативные реализации частей фреймворка перечислены здесь.

  • .NET Micro Framework - это платформа .NET для устройств с крайне ограниченными ресурсами. Он включает небольшую версию CLR и поддерживает разработку на C # (хотя некоторые разработчики могли использовать VB.NET , [41] хотя и с некоторой долей взлома и с ограниченными функциями) и отладку (в эмуляторе или на оборудовании), оба используют 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 - это платная реализация среды CLR. Однако последняя версия работает только на Windows XP SP2 и не обновлялась с 2006 года. Таким образом, она не содержит всех функций версии 2.0 .NET Framework.
  • CrossNet [42] - это реализация CLI и частей FCL. Это бесплатное программное обеспечение, использующее лицензию MIT с открытым исходным кодом .

Лицензирование [ править ]

Платформы управляемого кода Microsoft и их компоненты лицензируются следующим образом:

См. Также [ править ]

  • Список языков интерфейса командной строки
  • Стандартные библиотеки (CLI) , стандартные библиотеки .NET
  • Библиотека базовых классов (BCL)

Заметки [ править ]

  1. ^ a b Ранее лицензия называлась Ms-RL, но теперь Ms-RL означает взаимную лицензию Microsoft .
  2. ^ Dotfuscator Community Edition 4.0

Ссылки [ править ]

  1. ^ "Загрузить автономный установщик .NET Framework 4.8" . Microsoft . Архивировано 15 августа 2019 года . Проверено 15 августа 2019 года .
  2. ^ «Microsoft начинает работать с открытым исходным кодом» . Opensource.com . 19 ноября 2014 . Проверено 2 января 2020 года .
  3. ^ gewarren. «Версии .NET Framework и ОС Windows» . docs.microsoft.com . Проверено 21 ноября 2020 года .
  4. ^ "Стандартный ECMA-335: Инфраструктура общего языка (CLI)" . ecma-international.org (6-е изд.). ECMA . Июнь 2012. Архивировано 26 июня 2013 года . Проверено 31 августа 2005 года .
  5. ^ «Стандартный ECMA-334: Спецификация языка C #» . ecma-international.org (4-е изд.). ECMA . Июнь 2006. Архивировано 31 октября 2010 года . Проверено 31 августа 2005 года .
  6. ^ «ISO / IEC 23271: 2012 Информационные технологии - Общая языковая инфраструктура» . iso.org (3-е изд.). Международная организация по стандартизации . 13 февраля 2012 г.
  7. ^ «ISO / IEC 23270: 2006 - Информационные технологии - Языки программирования - C #» . iso.org (2-е изд.). Международная организация по стандартизации . 26 января 2012 года. Архивировано 6 декабря 2010 года . Проверено 1 апреля 2008 года .
  8. ^ «Пустое обещание Microsoft» . Фонд свободного программного обеспечения . 16 июля 2009 года. Архивировано 19 августа 2009 года . Проверено 3 августа 2009 года . Однако есть несколько библиотек, которые включены в Mono и обычно используются такими приложениями, как Tomboy, которые не требуются стандартом. И для ясности: мы не говорим о библиотеках для Windows, таких как ASP.NET и Windows Forms. Вместо этого мы говорим о библиотеках в пространстве имен System, которые предоставляют стандартные функции, которые программисты ожидают от современных языков программирования
  9. ^ Б Гатри Скотт (3 октября 2007). «Выпуск исходного кода для NET Framework» . Блог Скотта Гатри . Microsoft . Архивировано 7 сентября 2010 года . Проверено 15 сентября 2010 года .
  10. Гатри, Скотт (16 января 2008 г.). «Теперь доступен исходный код библиотеки .NET Framework» . Блог Скотта Гатри . Microsoft . Проверено 28 февраля 2015 года .
  11. ^ «Патентное обещание Microsoft для библиотек .NET и компонентов среды выполнения» . Архивировано 21 февраля 2021 года . Проверено 16 ноября 2014 года .
  12. ^ Криль, Павел (1 апреля 2016). «Среда выполнения Xamarin Mono получает более слабую лицензию» . InfoWorld . IDG .
  13. ^ Ferraira, Бруно (31 марта 2016). «Xamarin теперь поставляется бесплатно с Visual Studio» . Технический отчет . Архивировано 2 апреля 2016 года . Проверено 12 апреля 2016 года .
  14. ^ «Патентное обещание Microsoft для Mono» . Моно на GitHub . Моно проект. 28 марта 2016 года архивации из первоисточника 16 апреля 2016 года . Проверено 16 апреля 2016 года .
  15. ^ «Xamarin для всех» . Блог Xamarin . Xamarin. 31 марта 2016 года Архивировано из оригинального 12 апреля 2016 года . Проверено 12 апреля 2016 года .
  16. ^ «Объявление с открытым исходным кодом WPF, Windows Forms и WinUI на Microsoft Connect 2018» . Блог разработчиков Windows . Microsoft. Архивировано из оригинального 15 декабря 2018 года . Проверено 24 декабря 2018 года .
  17. ^ рпетруша. «Компиляция приложений с .NET Native» . docs.microsoft.com . Архивировано 3 декабря 2017 года . Проверено 2 декабря 2017 года .
  18. ^ «Библиотека базовых классов» . Проверено 1 июня 2008 года .
  19. ^ "Стандарт платформы .NET" . Архивировано 19 мая 2016 года . Проверено 23 апреля 2016 года .
  20. ^ «Обновление ASP.NET Core 1.0 RC2» . Проверено 23 апреля 2016 года .
  21. ^ "Галерея NuGet - Главная" . nuget.org . Архивировано 21 февраля 2021 года . Проверено 21 февраля 2021 года .
  22. Смешанные (собственные и управляемые) сборки, заархивированные 22 октября 2014 г., на Wayback Machine , MSDN
  23. ^ «Скотт Гатри: Silverlight и кроссплатформенная среда CLR» . Канал 9 . 30 апреля 2007 года. Архивировано 25 марта 2015 года . Проверено 16 апреля 2016 года .
  24. ^ «ECMA 335 - Стандартная инфраструктура общего языка ECMA-335 (CLI), 4-е издание (июнь 2006 г.)» . ECMA. 1 июня 2006 года архивации с оригинала на 14 июня 2008 года . Проверено 1 июня 2008 года .
  25. ^ «ISO / IEC 23271: 2006» . Standards.iso.org. 29 сентября 2006 года. Архивировано 1 июля 2018 года . Проверено 17 апреля 2012 года .
  26. ^ «Технический отчет TR / 84 Common Language Infrastructure (CLI) - информация, полученная из XML-файла раздела IV» . ECMA. 1 июня 2006 года архивации с оригинала на 25 марта 2015 года . Проверено 16 апреля 2016 года .
  27. ^ "Спецификация языка C # ECMA-334" . ECMA. 1 июня 2006 года архивации с оригинала на 31 октября 2010 года . Проверено 31 августа 2005 года .
  28. ^ "Стандартная спецификация языка C ++ / CLI ECMA-372" . ECMA. 1 декабря 2005 года Архивировано из оригинального 10 августа 2008 года . Проверено 16 января 2008 года .
  29. ^ Gartner, Inc., как сообщается в «Цикле рекламы киберугроз, 2006», сентябрь 2006 г., Нил Макдональд; Амрит Уильямс и др.
  30. ^ Сифуентес, Cristina (июль 1994). «6: Анализ потока управления» (PDF) . Методы обратной компиляции (тезис). Квинслендский технологический университет . Архивировано из оригинального (PDF) 22 ноября 2016 года.
  31. ^ a b c «Сборка мусора: автоматическое управление памятью в Microsoft .NET Framework» . Архивировано из оригинального 3 -го июля 2007 года . Проверено 1 июня 2008 года .
  32. ^ a b c «Сборка мусора в .NET» . Архивировано из оригинального 25 мая 2008 года . Проверено 1 июня 2008 года .
  33. ^ «.NET Framework 4.5 включает новые усовершенствования сборщика мусора для клиентских и серверных приложений» . Проверено 2 октября 2015 года .
  34. ^ a b c d «Сборка мусора - Часть 2: Автоматическое управление памятью в Microsoft .NET Framework» . Архивировано из оригинального 26 июня 2007 года . Проверено 1 июня 2008 года .
  35. ^ «Понимание своевременной компиляции .NET» . telerik.com . 28 мая 2013 года. Архивировано 11 июня 2013 года . Проверено 21 мая 2015 года .
  36. ^ a b Компиляция MSIL в собственный код. Архивировано 19 апреля 2015 г. на Wayback Machine , MSDN, Microsoft.
  37. ^ «Общие сведения о сборке мусора в .NET» . 17 июня 2009 г.
  38. ^ «Примечания к выпуску Mono 2.2 - Mono» . mono-project.com .
  39. ^ «Поддержка SIMD Mono: сделать Mono безопасным для игр» . Tirania.org. 3 ноября 2008 года. Архивировано 4 ноября 2010 года . Проверено 17 апреля 2012 года .
  40. ^ ISO 9001: 2008, Предисловие
  41. ^ «Использование VB.NET с .NET Micro Framework« / dev / mobile » . Christec.co.nz. 1 апреля 2008 . Проверено 17 апреля 2012 года .[ постоянная мертвая ссылка ]
  42. ^ "CrossNet" . Codeplex.com. Архивировано 25 января 2010 года . Проверено 17 апреля 2012 года .
  43. ^ «Лицензионное соглашение для распространяемого пакета Microsoft .NET Framework» . MSDN . Microsoft . Архивировано 2 апреля 2015 года . Проверено 28 февраля 2015 года .
  44. Брей, Брэндон (15 августа 2012 г.). «Объявление о выпуске .NET Framework 4.5 RTM - продукт и исходный код» . Блог .NET Framework . Microsoft . Архивировано 4 октября 2016 года . Проверено 18 августа 2016 года .
  45. ^ «Объявление о предварительной версии .NET 2015: новая эра для .NET» . Блог .NET Framework . Microsoft . 12 ноября 2014 года. Архивировано 19 августа 2016 года . Проверено 18 августа 2016 года .
  46. ^ «Xamarin для всех» . Блог Xamarin . Microsoft . 17 апреля 2016 года. Архивировано 12 апреля 2016 года . Проверено 12 апреля 2016 года .
  47. ^ ".NET Core 5" . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .
  48. ^ ".NET Micro Framework" . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .
  49. ^ "Лицензия Roslyn" . GitHub . .NET Foundation. 5 февраля, 2020. архивации с оригинала на 24 марта 2018 года . Проверено 14 апреля 2018 года .
  50. ^ «ASP.NET MVC, веб-API и веб-страницы (Razor)» . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .
  51. ^ «Лицензия ASP.NET Core» . GitHub . .NET Foundation. 5 июля 2017 года. Архивировано 21 февраля 2021 года . Проверено 14 апреля 2018 года .
  52. ^ «Набор средств управления ASP.NET Ajax» . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .
  53. ^ "ASP.NET SignalR" . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .
  54. ^ «Entity Framework» . dotnetfoundation.org . .NET Foundation. Архивировано из оригинального 18 апреля 2016 года . Проверено 16 апреля 2016 года .
  55. ^ "NuGet" . dotnetfoundation.org . .NET Foundation. Архивировано из оригинала 17 февраля 2015 года . Проверено 17 февраля 2015 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Обзор .NET Framework (MSDN)
  • Репозиторий .NET Github