C# .NET

2075 / C# / .NET

 

BCL (Base Class Library) – це серце Framework Class Library, що включає простір імен System і усі базові класи: Console, String, Int32, DataTime, Random +1000 класів, що використовуються і для віконних програм, і для сайтів, і для мобільних програм.
В щоденній роботі ми використовуємо саме BCL, а все інше ми тягнемо з менеджера пакетів NuGet.

Framework Class Library = BCL + WinForm + WPF + Xamarin +
Windows Store App + WebForm + + ASP.NET + Desktop + Xbox…
Вже йде розділення на різні технології: вікна, мобільні, інтернет.

 

Framework

 

CLR (Common Language Runtime) – програма, яка потрібна для запуску ваших програм написаних на С#. Ваш код транслюється (перетворюється) в проміжний байт-код Intermediate Language (il, cil, msil), який і виконує програма clr.exe (що іде з Windows).
Машинний код створюється під час виконання програми (Runtime), цей тип компіляції називається (Just in Time) і його робить JIT-компілятор (що іде з CLR).
Мінус: при запуску така програма працю повільніше за С++.
Плюс: працює всюди, де є CLR і не треба робити збірки під різні архітектури процесорів: 86x, 64x, ARM.
Ми наче запускаємо програму в пісочниці, що дає змогу використати Garbage Collection.

Інші мови можуть конвертуватися в IL-код: C++/CLI, F#, J#, IronPhyton, VB.NET, Delphi.NET… Але тут є обмеження специфікації, наприклад C++/CLI код не може містити множинного успадкування.

 

CTS (Common Type System) – це система загальних типів у IL-коді, що визначає спосіб оголошення, використання і керування типами в середовищі CLR.

 

CLS (Common Language Specification) – обмежена специфікація IL-коду, що дає змогу одночасно використовувати багато мов програмування.

 

NGen.exe – конвертує IL в бінарний код.