.NET Framework (читаєтьсядот-нет) — програмна технологія, запропонована фірмоюMicrosoft як платформа для створення як звичайних програм, так івеб-застосунків. Багато в чому є продовженням ідей та принципів, покладених в технологіюJava. Однією з ідей .NET є сумісність служб, написаних різнимимовами. Хоча ця можливість рекламується Microsoft як перевага .NET, платформа Java має таку саму можливість.
Однак, важливо зазначити, що.NET Framework є орієнтованим виключно на операційну систему Windows і не підтримує кросплатформенність. Для вирішення цієї проблеми Microsoft розробила.NET Core, який став першим кроком до підтримки кількох операційних систем, включаючи Linux та macOS. У 2020 році ці дві платформи були об'єднані в єдину кросплатформну екосистему —.NET, що дозволяє створювати сучасні застосунки для різних пристроїв і платформ, використовуючи одну і ту ж кодову базу.
.NET Framework поділяється на дві основні частини — середовище виконання (по сутівіртуальна машина) та інструментарій розробки.
Як і технологіяJava,середовище розробки .NET створюєбайт-код, призначений для виконаннявіртуальною машиною. Вхідна мова цієї машини в .NET називаєтьсяCIL (Common Intermediate Language), також відома як MSIL (Microsoft Intermediate Language), або просто IL. Застосуваннябайт-коду дозволяє отримати крос-платформність на рівні скомпільованого проєкту (в термінах .NET:збірка), а не на рівніпочаткового тексту, як, наприклад, вC. Перед запуском збірки в середовищі виконання (CLR) байт-код перетворюється вбудованим в середовищеJIT-компілятором (just in time, компіляція на льоту) вмашинні коди цільовогопроцесора.
Розробка Microsoft технології .NET Framework почалась у 1999 році[1].Офіційно про розробку нової технології було оголошено 13 січня 2000 року. В цей день керівництвом компанії була озвучена нова стратегія, яка отримала назву Next Generation Windows Services (скор. NGWS,укр.Нове покоління служб Windows). Нова стратегія повинна була об'єднати у єдине вже наявні і майбутні розробки Microsoft для надання можливості користувачам працювати з Всесвітньою павутиною з допомогою бездротових пристроїв, що мають доступ в Інтернет, як зі стаціонарних комп'ютерів[2].
Під час конференції, що проходила в цей деньСтів Балмер заявив, що незважаючи на великі можливості домашніх комп'ютерів, корпорація вважає важливим гарантувати забезпечення роботи служб нового покоління і на пристроях, відмінних від ПК. Аналітик компанії Patricia Seybold Group Енн Томас Мейнс, проаналізувавши словаБілла Гейтса, заявила про те, що для компанії буде корисним відійти від орієнтації лише на стаціонарні комп'ютери і перехід до розробки під мобільні пристрої. За її оцінкою Гейтс проголосив курс на перехід до нової ери роботи з комп'ютером, що не буде жорстко прив'язана до платформиWindows[2].
Зважаючи на невелику потужність джерела живлення мобільних пристроїв, зберігання і передача програм повинна здійснюватися серверами, тоді як на той момент практично вся інформація користувача, ПЗ зберігалися на стаціонарних комп'ютерах локально. Тоді ідея переходу до «сервероцентричної» моделі мала міцну підтримку серед керівників найбільших IT-компаній. Так, наприклад, Скотт МакНілл, головаSun Microsystems оголосив про придбання компанією офісного програмного забезпечення (StarOffice), щоб конкурувати зMicrosoft Office, для того, щоб перейти до сервер-клієнтського ПЗ[2].
У Microsoft на той момент було безліч причин переходу до нової стратегії. Компанія домінувала на ринку операційних систем івеб-браузерів, володіла безліччю напрацювань у галузі ПЗ для Інтернету, включаючи портали MSN і WebTV, а також мала частку в компаніях, що займалися наданням ПЗ на прокат через Інтернет[2]. Крім того, як пізніше згадувавАндерс Хейлсберг, у корпорації було безліч різних (і часто несумісних між собою) середовищ і технологій програмування, оскільки розробка інструментів для програмістів була мовноорієнтованою, тобто дляVisual Basic існував свій набір програм, а дляC++ — свій. Тому однією з цілей розробки нової платформи, було об'єднання всіх найвдаліших напрацювань в рамках єдиної платформи та їх уніфікація. Крім того, ставилося завдання слідуванню усіх актуальних тенденцій в області програмування на той момент. Для прикладу, нова платформа повинна була безпосередньо підтримуватиоб'єктну-орієнтованість, безпеку типів, збір сміття і структурну обробку винятків. Крім того, корпорації необхідно було надати свою відповідь наJava відSun, що набирала свою популярність[3].
Згідно з озвученими на той момент планам, в них входила розробка нової версії операційної системи, а також нової версії середовища розробки для програмістів, яка була б призначена для розробки веб-орієнтованих додатків. Крім того, перенесений на нову платформу мав бути і Microsoft Office. Пол Моріц, віце-президент Microsoft, як одну з майбутніх служб нової стратегії навів у приклад службу Passport, що являла собою електронний гаманець, що дозволяє користувачам зареєструвавшись одного разу здійснювати онлайн-покупки без необхідності введення на різних сайтах номерів кредитних карт і персональних даних. Тоді ж, на конференції, Балмер навів приклад реалізації нової стратегії, яка дозволить пацієнтам вирішувати безліч їх проблем через Інтернет починаючи читанням їх медичної карти і закінчуючи оплатою рахунків від лікарів[2].
За словами Моріц, основою для нової стратегії компанії стала розробкаWindows DNA 2000, представлена у вересні 1999 року. Windows DNA 2000 об'єднала в собі нову версіюСУБДSQL Server і нові програмні інструменти для полегшення розробки веб-застосунків[2].
Революція смартфонів і планшетів внесла корективи у комп'ютерний світ. Платформа Windows перестала домінувати у світі операційних систем, поруч з апаратною архітектуроюx86 значну частку ринку зайняли інші рішення. Крос-платформовість та відкритість, які до того свідомо обмежувалася уMicrosoft, вийшла на перший план і стала питанням виживання.
Навесні 2014 компанія Microsoft зробила спробу відродити інтерес розробників до платформи .NET шляхом переходу до відкритого процесу розробки деяких компонентів .NET. Для координації розвитку відкритих компонентів .NET у співпраці із створеноюМігелем де Ікаса компанієюXamarin заснована незалежна некомерційна організація .NET Foundation, націлена на організацію спільної розробки та залучення співтовариства в розвиток платформи .NET[4].
Примітно, що одночасно був представлений новий власницькийкомпілятор .NET Native, що відрізняється підтримкою компіляції .NET проєктів на мові C# в подання на мові C++, яке можна скомпілювати увиконуваний файл за допомогою звичайного C++ компілятора. При цьому, у застосунку зберігаються такі засоби якприбирання сміття, підтримка генериків і віддзеркалень, але скомпільовані програми демонструють на 60 % вищу продуктивність і на 15 % менше споживають пам'яті.
Вже у квітні 2014Мігель де Ікаса представив[5] варіант компілятора Roslyn, адаптований для роботи вUnix і використанні з платформоюMono.
У листопаді 2014 компанія Microsoft оголосила про переведення серверної частини платформи .Net в розряд відкритих проєктів та забезпеченні підтримкиLinux іMac OS X[6]. Відкритими стають не усі частини платформи .Net, а лише три компоненти: .NET Framework Libraries, .NET Core Framework Libraries і RyuJit VM[7]. Компоненти .Net для побудови користувацьких застосунків відкривати не планується.Сирцеві тексти будуть опубліковані наGitHub і будуть розвиватися в рамках відкритого процесу розробки, в якому зможе взяти участь кожен охочий.Початковий код відкритий підліцензією MIT, документація буде поставлятися під ліцензієюCreative Commons Attribution 4.0.
У травні2015Microsoft оголосила[8] про публікацію на GitHubпочаткових текстів набору бібліотекWindows Communication Foundation. Код відкритий підліцензією MIT. Слід зазначити, що відкритий не повний набір бібліотек WCF для робочого столу, а тільки його підмножина, орієнтована на взаємодію з сервісами для мобільних і серверних систем. Зокрема, відкриті бібліотеки System.ServiceModel.Primitives.Provides, System.ServiceModel.Http, System.ServiceModel.NetTcp, System.ServiceModel.Duplex і System.ServiceModel.Security. Для порівняння, всього в наборі WCF налічується більше 30 компонентів System.ServiceModel.*.Всього під управління .NET Foundation переданий код 24 пов'язаних з .NET проєктів, шість з яких раніше розвивалися компанією Xamarin. Крім раніше відкритих проєктів, таких якASP.NET MVC, Mimekit і Mailkit, під заступництво нової організації переданіпочаткові коди пакета .NET Compiler Platform («Roslyn»), що включаєкомпілятори для мов C# і Visual Basic, а також набір компонентів для побудови статичних аналізаторів коду. Код Roslyn відкритий підліцензією Apache.
Координацією проєкту займеться незалежна некомерційна організація .NET Foundation, створена Microsoft у співпраці зі створеною Мігелем де Ікаса компанією Xamarin. Починаючи з наступного випуску планується повністю відкрити весь серверний стек .NET, включаючи ASP.NET, JIT-компілятор, .NET Core Runtime, Common Language Runtime і основні бібліотеки класів. Крім того, всі компоненти серверної платформи .Net будуть портовані для операційних систем Linux і OS X, які будуть готові для промислового застосування і будуть підтримуватися поряд з Windows.
Для спрощення участі в розробці Microsoft надасть нову редакцію середовища розробкиVisual Studio Community 2013, яку зможуть безкоштовно використовувати невеликі команди розробників, в яких налічується 5 і менше учасників. На відміну від безкоштовної версії Express нова редакція дозволить використовувати доповнення та надасть комплексний набір засобів для розробки програм для десктопа,веб-застосунків і мобільних програм.
Microsoft почала розробляти. NET Framework наприкінці 1990-х під ім'ям «Next Generation Windows Services» (NGWS). У2000 році була випущена перша бета-версія. NET 1.0.
Перший реліз .NET Framework вийшов5 січня 2002 року дляWindows 98,NT 4.0,2000 таXP. Загальна підтримка здійснювалась компанією Майкрософт, закінчилася10 липня 2007 року, а розширена підтримка закінчилася14 липня 2009 року[14].
Наступний реліз .NET Framework вийшов1 квітня2003 року. Це була перша версія, що автоматично встановлювалась разом з операційною системою (Windows Server 2003). Для старіших операційних систем. NET Framework 1.1 була доступна у вигляді окремого пакету. Загальна підтримка, здійснювана компанією Майкрософт, закінчилася14 жовтня2008 року, а розширена підтримка повинна була закінчитися8 жовтня2013[14].
У основі .NET Framework 3.0 лежать в точності ті ж компілятори та бібліотеки (CLR), що і в.NET Framework 2.0. Цим створюється деяка плутанина, оскільки попередні версії .NET Framework (1.0, 1.1, 2.0) завжди містили свої власні версії компіляторів і CLR.
Крім того, .NET Framework 3.0 включає чотири нові частки:
Windows Presentation Foundation (WPF) — система для побудови клієнтських програм з привабливою візуальною можливістю взаємодії з користувачем, тобто графічна підсистема
Як і версія 3.0, .NET 3.5 використовує CLR версії 2.0. Відсутня офіційна підтримка Windows 2000, проте є не офіційна інструкція по встановленню пакета для цієї версії ОС. Нововведенням в порівнянні з .NET Framework 3.0 включають в себе:
C # 3.0 і VB.NET 9.0
Додавання мовLINQ і провайдерів LINQ to Objects, LINQ to XML і LINQ to SQL
Microsoft анонсувала .NET 4.029 вересня2008 року[15]. Перша бета-версія з'явилася 20 травня 2009 року, разом з бета-версієюVisual Studio 2010[16]. Нововведення включають в себе:
Parallel Extensions —PLINQ (ParallelLINQ) іTask Parallel Library, призначені для спрощення програмування для багатопроцесорних і розподілених систем
Окрім повної версії .Net, компанією Microsoft також випускається так званий «.Net Compact Framework». .Net Compact Framework є обрізаною версією повного фреймворка і несумісний з ним на рівні виконання (програми, написані для Compact Framework не можуть виконуватись виконавчим середовищем від повної версії фреймворка, для їх виконання необхідно встановити виконавче середовище саме від Compact Framework). Внутрішньо Compact Framework працює дещо інакше, ніж повний фреймворк, наприклад «збирач сміття» працює значно більш агресивно, не розділяючи об'єкти на покоління. Відмінності здебільшого обумовлені особливостями роботи компактних пристроїв: меншими розрахунковими можливостями, значно вищими вимогами до низьких енергозатрат, обмеженими графічними можливостями.