- Съвременната .NET платформа е междуплатформена, лицензирана от MIT, рамка с отворен код с предвидим жизнен цикъл на издаване и поддръжка.
- Основни компоненти като CoreCLR, базови библиотеки, CLI, C#/VB/F# компилатори, ASP.NET Core, EF Core и ML.NET се разработват открито в GitHub.
- Фондация .NET осигурява независимо управление и дом за десетки ключови проекти, насърчавайки приноса на общността и дългосрочната устойчивост.
- Тъй като критичните инструменти и среди за изпълнение са лицензирани с разрешителен режим, екосистемата може да бъде разклонена и поддържана от общността, ако някой отделен доставчик се оттегли.

Платформата .NET се превърна от затворена, само за Windows рамка в една от най-активните и амбициозни екосистеми с отворен код в съвременната разработка. Днес можете да създавате междуплатформени приложения, да допринасяте за средата за изпълнение или компилаторите и дори да участвате в управлението чрез .NET Foundation. Ако все още свързвате .NET със старомодни приложения само за Windows, е време да актуализирате напълно този ментален модел.
В основата на тази трансформация е решението за отворен код на платформата .NET, нейните стандартни библиотеки, много от нейните инструменти и дори компилаторите за C# и Visual Basic. Тази промяна превърна .NET в съвместен проект, в който Microsoft, големи технологични компании и хиляди независими разработчици работят заедно. В това ръководство ще разгледаме ключовите характеристики на .NET с отворен код, как е организирана екосистемата, кои инструменти и езици са отворени и какво всъщност означава това за дългосрочната устойчивост и участието на общността.
Какво точно представлява съвременната .NET платформа?
Съвременната .NET платформа (преди известна като .NET Core) е безплатна, управлявана софтуерна рамка с отворен код, която работи на Windows, Linux, macOS и няколко други операционни системи и архитектури. Това е междуплатформеният наследник на оригиналния, само за Windows .NET Framework и е разработен предимно от инженери на Microsoft под ръководството на независимата .NET Foundation, използвайки много публичен модел за разработка в GitHub.
.NET е пуснат под лиценза MIT, много либерален лиценз с отворен код, който позволява търговска и некомерсиална употреба, модификация и разпространение. Този избор на лицензиране е един от най-ясните показатели, че .NET не е просто „достъпен от изходния код“, а наистина е с отворен код в смисъла, дефиниран от Инициативата за отворен код. Всеки може да разклони средата за изпълнение, библиотеките или инструментите и да продължи разработката, ако първоначалните разработчици някога са спрели.
Платформата следва редовен, предвидим ритъм на пускане на пазара, като новите основни версии обикновено се публикуват всеки ноември. Например, версиите са еволюирали от .NET Core 1.0 през 2016 г. до .NET 5, 6, 7, 8, 9 и сега .NET 10, което е издание с дългосрочна поддръжка (LTS), планирано да получава актуализации в продължение на три години. Бъдещите версии, като .NET 11 и .NET 12, вече имат прогнозни дати и периоди на поддръжка, показващи дългосрочна пътна карта за екосистемата.
Всяка .NET версия идва с ясно определен период на поддръжка, който може да бъде или „текущ“ (по-кратка поддръжка, по-бързи иновации), или LTS (около три години актуализации). В исторически план, версии като .NET Core 1.x, 2.x, 3.x и .NET 5 и 6 са достигнали края на поддръжката си според този график, докато .NET 8, 9 и 10 се поддържат в момента, като 10 е най-новата LTS. Този предвидим жизнен цикъл е от решаващо значение за производствените среди и дълготрайните приложения.
От архитектурна гледна точка, съвременната .NET платформа имплементира Common Language Infrastructure (CLI), която дефинира виртуална система за изпълнение, система от общи типове и стандартни библиотеки, позволяващи изпълнението на множество езици в една и съща среда за изпълнение. Това означава, че езици като C#, F# и Visual Basic, както и много езици на трети страни, могат да бъдат насочени към .NET и да работят взаимодействайки чрез споделена среда за изпълнение и набор от библиотеки.

Основни компоненти: среда за изпълнение, библиотеки и инструменти
Сърцето на .NET е разделено на два основни компонента: CoreCLR (runtime) и CoreFX или неговите съвременни унифицирани библиотеки с базови класове (framework библиотеките). Те приблизително съответстват на Common Language Runtime (CLR) и Framework Class Library (FCL) от старата .NET Framework, но са проектирани да бъдат модулни, междуплатформени и с отворен код от самото начало.
CoreCLR е имплементацията на Virtual Execution System (VES) за .NET, отговорна за управляваното изпълнение на код, събирането на боклука, сигурността и компилацията just-in-time (JIT). Той използва JIT компилатора RyuJIT, за да превежда междинен език (IL) в машинен код по време на изпълнение. CoreCLR е с напълно отворен код, а кодът и системата за проследяване на проблеми са достъпни в GitHub, където можете да проверявате подробности за имплементацията, да регистрирате грешки или дори да предлагате подобрения в производителността.
Наред с JIT-базираната среда за изпълнение, .NET включва и компоненти като CoreRT и .NET Native, които се използват за сценарии за компилация ahead-of-time (AOT). Тези технологии позволяват генерирането на оригинални двоични файлове, които вграждат специализирана среда за изпълнение, което е особено полезно за сценарии като малки контейнерни изображения, услуги, критични за стартиране, или платформи, където JIT компилацията е ограничена.
Библиотечната част на проекта, исторически наричана CoreFX, имплементира стандартните библиотеки на CLI спецификацията, както и много специфични за .NET API. Тези библиотеки обхващат колекции, входно-изходни операции, мрежи, криптография, нишки, отражение, LINQ, XML, JSON и по-специализирани сценарии. Въпреки че споделят широк набор от API със стария .NET Framework, те също така въвеждат нови, по-модерни API и оптимизации, които никога не са присъствали в стария стек.
Специализиран вариант на .NET библиотеките се доставя за Universal Windows Platform (UWP), пригоден за модела на Windows приложенията, като същевременно е базиран на същите унифицирани принципи на .NET Base Class Library. Това позволява споделен код между UWP, ASP.NET Core уеб приложения, конзолни инструменти и други работни натоварвания, като специфични за платформата разширения се добавят отгоре, когато е необходимо.
В допълнение към средата за изпълнение и библиотеките, .NET предоставя интерфейс на командния ред (CLI), който осигурява основната входна точка за разработчици във всички поддържани операционни системи. - dotnet Командата ви позволява да създавате проекти, да възстановявате и управлявате NuGet пакети, да изграждате, публикувате, тествате и изпълнявате приложения. Този CLI е с отворен код и е от решаващо значение за междуплатформени работни процеси, включително интеграция с редактори, които не са на Microsoft, като VS Code, JetBrains Rider или настройки на редактор на обикновен текст + терминал.

Поддържани операционни системи, архитектури и модели на приложения
Modern .NET е безкомпромисно междуплатформен, поддържащ Windows, Linux и macOS като първокласни потребители, плюс мобилни и други операционни системи чрез допълнителни стекове. Това означава, че можете да изградите и стартирате едно и също приложение на вашия лаптоп за разработка, Linux контейнер в облака и macOS работна станция с минимални промени, ако има такива.
От страна на процесора, .NET е насочен към широк набор от архитектури, включително x86 (IA-32), x64, ARM64 и дори по-специализирани среди като IBM Z и LinuxONE (s390x) и Power ISA (ppc64le) за Linux. Докато някои комбинации са официално поддържани и тествани от Microsoft, други, като Power ISA, имат общностно управлявани компилации и кодови пътища по време на изпълнение, което показва колко разширяема и преносима е кодовата база.
Поддръжката на Alpine Linux, която разчита до голяма степен на C библиотеката musl, е налична от .NET Core 2.1 насам, което улеснява изграждането на ултрамалки Docker образи и контейнеризирани услуги с помощта на... технологии за контейнеризация. Това е често срещано изискване в облачни среди, където размерът на изображението, защитената повърхност и времето за стартиране са важни оперативни фактори.
Windows на ARM64 се поддържа нативно от .NET 5 насам, което премахна необходимостта от изпълнение на x86 двоични файлове под емулация на ARM устройства. Вградената поддръжка на ARM64 осигурява по-добра производителност и ефективност на устройства като съвременни лаптопи и таблети с Windows, базирани на ARM чипове.
От гледна точка на модела на приложението, .NET обхваща широк спектър: ASP.NET Core за уеб приложения и API, услуги за команден ред и фонови услуги, библиотеки, графични потребителски интерфейси за настолни компютри и междуплатформени приложения, използващи .NET MAUI. Тази широта на обхвата е една от най-големите силни страни на екосистемата, позволявайки на екипите да използват повторно умения, инструменти и код в напълно различни видове софтуер.
Модел на версии и гаранции за съвместимост
.NET средата за изпълнение приблизително следва семантичното версиране с a голям.малък.кръпка схема и тези числа са повече от маркетингови етикети; те кодират очакванията за съвместимост. Основните версии са запазени за значителни промени, включително евентуални критични промени или основни актуализации на зависимости, и по дизайн са предназначени да се пускат ежегодно. По-малките версии добавят API и функции, без да нарушават съществуващите, докато изданията на корекции се фокусират върху корекции на грешки, корекции за сигурност и постепенна поддръжка на платформата.
В рамките на дадена основна версия, .NET се стреми да осигури обратна съвместимост, така че по-новите среди за изпълнение да могат да изпълняват приложения, създадени за по-ранни второстепенни версии в същата основна линия. Например, приложенията, насочени към .NET Core 2.1, обикновено се очакваше да работят на .NET Core 2.2 без повторна компилация, благодарение на поведението на средата за изпълнение при пренареждане. Този подход намалява пречките при надстройката и позволява на администраторите да прилагат актуализации за сигурност и качество по-агресивно.
Механизмът за пренасочване (rollforward) позволява на .NET приложенията да се изпълняват на по-нови среди за изпълнение от тази, за която първоначално са създадени, в зависимост от конфигурацията и правилата. Това е особено полезно на споделени сървъри или контейнерни хостове, където администраторите искат да стандартизират една, актуализирана среда за изпълнение, докато приложенията може да са насочени към малко по-стари версии.
Версионирането на .NET SDK е съобразено с runtime-а, но не следва стриктно правилата за семантично версиране. Всеки SDK може да е насочен към всички предишни среди за изпълнение до максималната поддържана версия, а от 2020 г. тази поддръжка се простира и до среди за изпълнение на .NET Framework чрез отделни „таргетиращи пакети“, които можете да изтеглите от NuGet. Това означава, че един съвременен SDK може да компилира приложения за множество поколения .NET.
Важно е да се отбележи, че основните и второстепенните версии на даден SDK винаги съответстват на основните и второстепенните версии на основната среда за изпълнение, с която се доставя или е подравнена. Това помага да се запазят ясни очакванията относно инструментите: SDK, рекламиран като .NET 8.x, е тясно свързан с линията за изпълнение на .NET 8, като същевременно е способен да изгражда за по-стари цели.
Езици в .NET: C#, F#, Visual Basic и много други
Трите водещи езика, официално поддържани от Microsoft за .NET, са C#, F# и Visual Basic, всички от които се компилират до един и същ междинен език и се изпълняват в една и съща среда за изпълнение. Това означава, че можете да смесвате и съчетавате езици на ниво решение, да споделяте библиотеки и да работите взаимодействайки, без да се налага да свързвате напълно различни платформи.
C# е модерен, обектно-ориентиран език със синтаксис, който ще бъде удобен за всеки, който е използвал C, C++, Java или JavaScript. През годините той се е разраснал значително, включвайки функции като генерични кодове, LINQ, async/await, съпоставяне на шаблони, записи и други. C# компилаторът и езиковите услуги са реализирани в проекта Roslyn, който е с напълно отворен код и е част от .NET Foundation.
F# е език с отворен код, ориентиран към функционалността, с кратък синтаксис и силна типова система, предназначен да ви помогне да изразявате сложна логика с минимален, лесно четим код. Той насърчава непроменяемите данни, програмирането, базирано на изрази, и мощното извеждане на типове. F# компилаторът и инструментариумът също са с отворен код и се разработват активно с участието на общността, което ги прави чудесни за области като наука за данни, финанси, проектиране, управлявано от домейни, и системи с висока надеждност.
Visual Basic .NET е обектно-ориентиран език, който дава приоритет на четливостта и плавната крива на обучение, осигурявайки силна типова безопасност и познат синтаксис за разработчици, идващи от класически VB или скриптов опит. Въпреки че еволюцията му е по-бавна от тази на C#, Visual Basic остава поддържан в съвременния .NET, а компилаторът му е част от същата платформа за компилиране Roslyn като C#.
Тъй като .NET имплементира Common Language Infrastructure, много други езици могат да бъдат насочени към платформата, както от Microsoft, така и от трети страни. Примерите включват IronPython, IronRuby, ClojureCLR, Eiffel, варианти, базирани на PowerBuilder, и по-експериментални или нишови езици. CLI предоставя шаблон за изграждане на нови .NET-съвместими езици, определяйки как типовете, метаданните и изпълнението трябва да взаимодействат с runtime средата.
Инструменти с отворен код за разработка на front-end и десктоп системи
Що се отнася до изграждането на front-end или десктоп приложения на .NET за Windows, macOS и Linux, повечето от ключовите градивни елементи са с напълно отворен код, дори ако някои IDE или инструменти за дизайн остават патентовани. Това прави възможно създаването на графични приложения за различни платформи с отворени среди за изпълнение и библиотеки, като същевременно избирате редактора или IDE, които отговарят на вашия работен процес.
.NET Multiplatform App UI (.NET MAUI), въведен с .NET 6, е рамка с отворен код за създаване на нативни мобилни и настолни приложения от една кодова база, използвайки C# и XAML. Поддържа Android, iOS, macOS, Windows и дори Tizen, като разчита на вградени контроли, където е възможно. Платформата е достъпна в GitHub, приветства приноси и е подкрепена от .NET Foundation.
В Windows традиционните настолни технологии като Windows Forms (WinForms) и Windows Presentation Foundation (WPF) получиха поддръжка в .NET Core 3 и по-нови версии, а техните имплементации за .NET са с отворен код. Въпреки че са естествено обвързани с платформата Windows, техните кодови бази са публични, което улеснява отстраняването на грешки в поведението на рамката, изпращането на корекции или предлагането на подобрения.
В исторически план, междуплатформените графични потребителски интерфейси (GUI) можеха да бъдат изградени и с GTK# (.NET обвързване за GTK), въпреки че това конкретно обвързване не е било активно поддържано от години. Днес разработчиците по-често посягат към .NET MAUI, Avalonia (платформена рамка за потребителски интерфейс с отворен код, която не е спомената в оригиналния стек за настолни компютри, но е широко използвана) или уеб-базирани интерфейси, поддържани от ASP.NET Core и Blazor.
От гледна точка на инструментите, не сте обвързани със собствени IDE. Кода на Visual Studio е безплатен и силно разширяем, с първокласна поддръжка за .NET чрез разширения, докато JetBrains Rider и други редактори интегрират .NET CLI и SDK с отворен код. Дори тежката Visual Studio IDE, макар и самата тя да не е с отворен код, се намира върху отворени компоненти като MSBuild, .NET SDK, Roslyn и runtime.
Разработка на back-end, сървър и CLI в .NET с отворен код
От страна на сървъра, .NET се отличава като напълно отворена, високопроизводителна платформа за изграждане на уеб API, микросървиси, фонови работници и инструменти за команден ред. Всички основни съставки – среда за изпълнение, базови библиотеки, ASP.NET Core framework, CLI инструменти и компилатори – са с отворен код и са разработени в публични хранилища.
ASP.NET Core е гръбнакът на съвременната уеб разработка в .NET, предоставяйки модулна, високопроизводителна рамка за HTTP API, пълноценни MVC сайтове, Razor Pages и комуникация в реално време чрез SignalR. Това е един от водещите проекти на .NET Foundation, широко използван в производството на Microsoft и в цялата индустрия, и редовно е сравняван с най-бързите уеб рамки.
Същата платформа е идеална за конзолни приложения и помощни програми за команден ред, които могат лесно да бъдат публикувани като самостоятелни двоични файлове за Windows, macOS и Linux. Благодарение на отворения характер на инструментариума, можете да пишете скриптове, да се интегрирате в DevOps конвейери и да работите в контейнери, без да разчитате на непрозрачни собствени среди за изпълнение.
NuGet, официалният мениджър на пакети за .NET, е друг стълб в историята на отворения код за back-end системи. Той съдържа над 300 000 пакета, които разширяват .NET с всичко - от JSON сериализатори и рамки за регистриране до ORM, облачни SDK, библиотеки за тестване и CLI помощни програми. NuGet служи като основен механизъм за разпространение както за библиотеки на Microsoft, така и за библиотеки на трети страни в екосистемата.
Една специфична област, в която NuGet блести, е достъпът до данни: ADO.NET-съвместими доставчици за Oracle, MySQL, PostgreSQL и много други бази данни се доставят като NuGet пакети. Тези доставчици позволяват на .NET приложенията да се свързват с голямо разнообразие от източници на данни на различни платформи, да се интегрират с ORM технологии като Entity Framework Core и да се възползват от разширените функции на базата данни, без да са свързани директно към SQL Server.
Entity Framework Core, ML.NET и други проекти, подкрепени от фондация
Фондация .NET подкрепя някои от най-важните проекти с отворен код в екосистемата, като гарантира, че те имат управление, инфраструктура и стабилен дом отвъд която и да е отделна компания. Това е от голямо значение, когато се притеснявате за дългосрочната устойчивост или риска доставчикът да прекрати поддръжката.
Entity Framework Core (EF Core) е модерна, междуплатформена ORM система за .NET, която съпоставя вашите .NET класове с релационни таблици на бази данни. Той е напълно с отворен код, проектиран за тестваемост и композируемост и поддържа множество бази данни чрез доставчици – много от които също с отворен код – разпространявани чрез NuGet.
ML.NET е междуплатформена рамка за машинно обучение, изградена върху .NET, която ви позволява да обучавате, оценявате и внедрявате ML модели, използвайки C# или F#, без да напускате света на .NET. Той поддържа сценарии като класификация, регресия, препоръки, откриване на аномалии и други. ML.NET също е с отворен код и е част от семейството проекти на фондацията.
Roslyn, платформата за компилиране с отворен код за C# и Visual Basic, е едно от бижутата в короната на екосистемата. Той не само компилира код, но и предоставя богати API за анализ, трансформиране и генериране на C# или VB изходен код. Много функции на IDE, като IntelliSense, рефакторинги и анализатори, са изградени на Roslyn и можете да го разширите, за да създадете свои собствени инструменти.
ASP.NET Core, Entity Framework Core, ML.NET и Roslyn представляват само част от проектите под шапката на .NET Foundation. Съществуват много други рамки, инструменти и библиотеки, обхващащи области като облачна комуникация, разпределени системи, потребителски интерфейс, тестване и диагностика – всички те се възползват от приноса на общността и споделеното управление.
Фондация .NET и общността с отворен код
Фондация .NET е независима организация с нестопанска цел, първоначално създадена от Microsoft, но сега управлявана от доброволци с мисията да поддържа здрава, отворена екосистема около .NET. Той служи като неутрален дом за важни проекти, предоставя правна и оперативна подкрепа и помага на поддържащите и сътрудниците да координират усилията си.
Повече от 50 проекта с отворен код са част от .NET Foundation, обхващащи уеб рамки, достъп до данни, компилатори, инструменти и специализирани библиотеки. Големи компании като Microsoft, Google, Samsung, Red Hat и VMware (бивш Pivotal) допринасят заедно с безброй индивидуални разработчици. Този модел с множество заинтересовани страни намалява риска който и да е доставчик едностранно да контролира съдбата на платформата.
Фондацията също така се фокусира силно върху хората и общността, не само върху кода. Той подкрепя местни срещи и конференции като .NET Conf, свързва разработчици с проекти, търсещи сътрудници, и популяризира отворения код като път към обучение, работа в мрежа и кариерно развитие. Много разработчици са намерили работа и дългосрочно сътрудничество чрез работата си с отворен код в .NET.
Ако искате да се включите, .NET Foundation поддържа директория с проекти, където можете да разглеждате проекти на членове и да откривате къде е необходима помощ. Много хранилища етикетират проблемите като good first issue, help wanted or documentation, което улеснява започването, без да бъдете претоварени от кодовата база.
Общността се подсилва от комуникационни канали като дискусии в GitHub, Discord сървъри, форуми и групи в социалните медии, където поддържащите и сътрудниците координират действията си. Тези пространства са идеални за задаване на въпроси, предлагане на идеи и получаване на обратна връзка относно първите ви заявки за изтегляне (pull requests).
Начини за принос към .NET с отворен код
Допринасянето към .NET с отворен код не изисква да сте компилатор или архитект на рамки; има много входни точки за различни умения и нива на опит. Най-важното е последователността и комуникацията, а не суровият експертен опит.
Приносът към кода е най-очевидният път: можете да поправяте грешки, да добавяте функции, да оптимизирате производителността или да модернизирате стар код. Започването с малко – може би с незначителна грешка или рефакторинг – ви помага да се запознаете със стила на кодиране, процеса на преглед и стратегията за тестване на проекта, преди да се заемете с по-големи предизвикателства.
Документалната работа е изключително ценна и често подценявана. Редактирането на README файлове, подобряването на ръководствата за начало, писането на уроци или разширяването на API документацията може драстично да подобри потребителското изживяване. Много от разработчиките изрично маркират проблеми с документацията за начинаещи.
Тестването и осигуряването на качеството са друга област, в която помощта на общността е от огромно значение. Възпроизвеждането на отчети за грешки, проверката на корекции, разширяването на обхвата на модулни или интеграционни тестове и изпробването на предварителни версии помагат на поддържащите да доставят по-стабилен софтуер с по-малко регресии.
Локализацията и подкрепата на общността също са въздействащи приноси. Преводът на документи или текст на потребителския интерфейс на различни езици прави .NET инструментите достъпни за по-широка аудитория, а отговарянето на въпроси в GitHub, Stack Overflow или чатове на общността може да отблокира други разработчици и да сподели най-добри практики.
Ще бъдат ли инструментите разклоними, ако Microsoft се оттегли?
Често срещано притеснение сред разработчиците, идващи от напълно отворени екосистеми като Go или Flutter, е дали .NET стекът ще оцелее, ако Microsoft някога драстично намали инвестициите или промени посоката си. Благодарение на модела за лицензиране и управление, отговорът е много по-успокояващ, отколкото беше преди.
Тъй като основната среда за изпълнение (CoreCLR), библиотеките, компилаторите (Roslyn и F#), ASP.NET Core, EF Core, ML.NET, CLI и много други са лицензирани под MIT или подобни разрешителни лицензи, всеки може да ги разклони (fork). Това включва физически лица, компании или дори бъдеща фондация, ако настоящата е еволюирала. Изходният код, историята на проблемите и дискусията са публично достъпни, което намалява бариерата за получаване на поддръжка.
Ролята на .NET Foundation като независима организация с нестопанска цел е и предпазна мрежа. Проектите, хоствани там, не са изцяло под корпоративния чадър на Microsoft, което подобрява дългосрочната устойчивост и избягва обвързването с един доставчик. Други организации вече допринасят и разчитат в голяма степен на .NET в производствения процес, което им дава силни стимули да поддържат критичните компоненти в добро състояние.
Не всичко в екосистемата на .NET е с отворен код – някои IDE, инструменти за проектиране или облачни услуги са патентовани – но основните части, необходими за компилиране, изпълнение и поддръжка на .NET приложения, са. Докато общността се интересува от .NET, възможността за разклоняване и продължаване на инструментите е реална, а не теоретична.
Днешният .NET свят съчетава многоплатформена среда за изпълнение от производствено ниво; богати библиотеки; изпитани в битки уеб и информационни рамки; и динамична общност с отворен код под егидата на .NET Foundation, всичко това задвижвано от разрешително лицензиране, което гарантира, че екосистемата може да се развива отвъд всяка отделна компания. Независимо дали изграждате десктоп front-end системи, облачни back-end системи, задачи за машинно обучение или инструменти за команден ред, можете да го направите с отворен код .NET стек и, ако желаете, да станете част от групата, която оформя накъде ще се развива той по-нататък.
