.NET Framework архитектура

Шта је то .NET Framework, какве везе има са програмским језиком C# и како функционише? Познато је да га програмери користе за развој Windows апликација и веб сервиса. Познато је и да морамо да инсталирамо или, с времена на време, ажурирамо .NET Framework како би одређене Windows апликације могле да функционишу.

C# програми извршавају се у овкиру .NET Framework-а. Шта то значи? Зар се програми не извршавају у оквиру оперативног система? У I и II разреду развијали сте апликације у програмском језику C које се извршавају у оквиру оперативног система:

Ваша апликација

Оперативни систем

Хардвер

Како би се превазишао проблем са компатибилношћу (старији програми не могу да функционишу на новијим верзијама оперативног системима и обрнуто) осмишљен је још један “слој” под називом .NET Framework. Захваљујући њему, функционалност апликације више не зависи од оперативног система:

Ваша апликација

.NET Framework

Windows

Хардвер

.NET Framework је данас саставна компонента Windows-а која садржи “општу језичку извршну платформу” (CLR – Common Language Runtime) и скуп од преко 4000 библиотека класа (FCL – Framework Class Library). CLR представља Microsoft-ову имплементацију “опште језичке инфраструктуре” (CLI – Common Language Infrastructure). CLI је међународни стандард за развој окружења у којима различити програмски језици и библиотеке раде заједно.

Изворни C# кôд, односно ваш програм, компајлира се у посреднички језик (IL – Intermediate Language) који је у складу са CLI спецификацијом. IL се често назива и MSIL (Microsoft Intermediate Language) или CIL (Common Intermediate Language).

IL кôд и ресурси, попут битмапа и стрингова, чувају се у склопу (assembly) – извршном фајлу који обично има екстензију .exe или .dll. Assembly садржи и манифест који пружа информације о типу, верзији, врсти и безбедносним захтевима.

Када се изврши C# програм, assembly се учитава се у CLR. Ако су испуњени безбедносни захтеви из манифеста, CLR врши компајлирање “тачно-на-време” (JIT – Just-in-Time) преводећи IL кôд у машинске инструкције. Поред компајлирања, CLR обезбеђује и друге услуге попут руковања изузецима (exception handling), управљања ресурсима (resource management) и аутоматског сакупљања отпадака (automatic garbage collection). Кôд који извршава CLR назива се управљив кôд, супротно од компајлираног машинског кôда који се назива неуправљив кôд.

Интероперабилност језика је једна од главних .NET Framework карактеристика. Пошто је IL кôд произведен од стране C# компајлера у складу са заједничком спецификацијом типова (CTS – Common Type Specification), он може да комуницира са кôдом из више од двадесет CTS-компатибилних програмских језика попут Visual C++, F# и Visual Basic. То значи и да један склоп може да садржи више модула написаних на различитим .NET језицима, а типови се могу међусобно позивати као да су написани на истом језику.

Компанија Microsoft је почела да развија .NET Framework касних деведесетих година, а .NET Framework v1.0 објављен је 2002 године заједно са интегрисаним развојним окружењем Visual Studio .NET. Прва верзија функционисала је на тада свим актуелним Windows клијентским и серверским платформама (NT4, 98, Me, 2000, XP, и 2003). У тренутку писања овог текста актуелна је верзија .NET Framework v4.8.

Треба напоменути да компанија Microsoft данас паралелно развија и модуларно, мултиплатформско .NET Core окружење – слободан софтвер отвореног кôда који функционише на Windows, Linux и macOS оперативним системима!