середа clr
NET Framework надає середовище виконання (середу CLR), яка виконує код і пропонує служби, що полегшують процес розробки.
Компілятори та інші засоби дозволяють використовувати функції середовища CLR і дають розробникам можливість писати код, який використовує переваги цього середовища керованого виконання. Код, розроблений з мовним компілятором, який звертається до середовища виконання, називають керованим кодом. У ньому використовуються переваги таких засобів, як об'єднання мов програмування, об'єднана обробка винятків, посилена безпека, підтримка відстеження версій і розгортання, спрощена модель взаємодії компонентів, а також служби налагодження і профілювання.
Компілятори та інструменти можуть створювати вихідні дані для загальномовного середовища виконання (CLR), оскільки система типів, формат метаданих та Виконавча (віртуальна система виконання) визначаються відкритим стандартом - специфікацією загальномовна інфраструктури ECMA. Додаткові відомості див. У статті ECMA C # and Common Language Infrastructure Specifications (Специфікації ECMA для C # і загальномовного інфраструктури (CLI)).
Щоб включити в середовищі виконання надання служб керованого коду, мовні компілятори повинні надавати метадані з описом типів, членів і посилань в коді. Метадані зберігаються разом з кодом. Вони містяться в кожному переданому переносимому исполняемом (PE) файлі середовища CLR. Метадані в середовищі виконання використовуються для пошуку і завантаження класів, розміщення примірників в пам'яті, розпізнавання імен при виклику методів, створення машинного коду, забезпечення безпеки і установки кордонів контексту часу виконання.
Середа CLR спрощує розробку компонентів і додатків, об'єкти яких можуть працювати в різних мовах. Об'єкти, написані на різних мовах, можуть взаємодіяти один з одним, а їх поведінка може бути тісно інтегровано. Наприклад, розробник може визначити клас, а потім на іншій мові створити похідний від нього клас або викликати метод з вихідного класу. Можна також передати екземпляр класу в метод класу, написаного іншою мовою. Така інтеграція мов програмування можлива в силу того, що мовні компілятори і програми, які звертаються до середовища виконання, використовують систему загальних типів, певну середовищем виконання, і дотримуються правил середовища виконання при визначенні нових типів, а також при створенні, використанні, збереженні і прив'язки до типам.
У складі своїх метаданих все керовані компоненти містять відомості про компоненти і ресурсах, на базі яких вони побудовані. Середовище виконання використовує ці відомості, щоб забезпечити наявність всіх необхідних ресурсів для компонента або програми. Це знижує ймовірність збоїв коду через будь-яких незадоволених залежностей. Відомості про реєстрацію та дані про стан більше не зберігаються в реєстрі, де їх важко ставити й підтримувати. Замість цього відомості про які визначаються розробником типах (і їх залежностях) зберігаються разом з кодом у вигляді метаданих, що істотно спрощує реплікацію і видалення компонентів.
Мовні компілятори і програми надають функції середовища виконання так, щоб вони були корисні і інтуїтивно зрозумілі для розробників. Це означає, що деякі засоби середовища виконання можуть бути помітними в одному середовищі більше, ніж в інший. Характеристики середовища виконання залежать від використовуваних мовних компіляторів і програм. Наприклад, розробник Visual Basic при роботі з середовищем CLR може помітити, що мова Visual Basic має більше засобів об'єктно-орієнтованого програмування, ніж раніше. Середовище виконання надає наступні переваги:
можливість легко використовувати компоненти, розроблені на інших мовах;
розгортаються типи, що надаються бібліотекою класів;
мовні можливості (наприклад, успадкування, інтерфейси і перевантаження) для об'єктно-орієнтованого програмування;
підтримку явної вільної потокової обробки, що дозволяє створювати масштабовані багатопотокових додатки;
підтримку структурованої обробки виключень;
підтримку настроюються атрибутів;