- •Лекція 2. Основи технологічної платформи ms .Net Framework
- •2.1. Причини появи та ключові характеристики платформи ms .Net Framework
- •3. Технологічна платформа ms.Net
- •2.2. Архітектура платформи ms .Net
- •2.3. Архітектура ms .Net Framework. Динамічна і статична складові
- •2.4. Структура бібліотеки класів fcl. Простір імен
- •2.5. Загальномовне середовище виконання – динамічна складова ms.Net Framework
- •2.6. Універсальна система типів
- •Питання і завдання для самостійної роботи студента
- •12. Лабораторна робота № 1.
2.5. Загальномовне середовище виконання – динамічна складова ms.Net Framework
Базовий рівень підсистеми MS.NET Framework складає загальномовне середовище виконання (Common Language Runtime або CLR).
Середовище виконання CLR реалізує управління пам'яттю, типами даних, міжмовною взаємодією, розгортанням (deployment) застосувань.
Середовище CLR активізує виконуваний код, виконує для нього перевірку безпеки, розташовує цей код в пам'яті і виконує його. Важливою частиною роботи середовища CLR є управління пам'яттю, а саме автоматичне вивільнення пам'яті, що звільняється при роботі програм (збірка сміття).
В ході компіляції програма на .NET-сумісній мові програмування трансформується відповідно до наперед заданої узагальненої специфікації типів Common Type System (CTS). Система типів CTS повністю описує всі типи даних, які підтримуються середовищем виконання, визначає їх взаємозв'язки і зберігає їх відображення в систему типів .NET.
Програмні файли на мові CIL, одержувані після компіляції програм на алгоритмічних мовах платформи MS.Net, називаються збірками (assembly), інше їх найменування - переносимі виконувані файли (Portable Executable або PE).
Збірки є файлами з розширеннями exe або dll і складаються з безпосередньо програмного коду на мові CIL і додаткових службових даних, які називаються метаданими (у складі метаданих необхідна інформація про збірку – відомості про типи, дані про версію, посилання на зовнішні збірки і т.п.)
Збірки перед своїм виконанням повинні пройти певні налаштування для роботи в умовах конкретної вибраної платформи – для виконання таких налаштувань у складі середовища CLR є ряд JIT-компіляторів (Just-Іn-Time compilers), що викликаються для перекладу програмного коду на проміжній мові (CIL-кода) в машинний (native) код платформи виконання.
Рис. 2.4. CLR: загальна схема виконання збірок
Таким чином, має місце 2-етапна компіляція модулів:
1. На першому етапі створюється незалежний від платформи PE-файл (керований модуль). Цей файл містить код на проміжній мові і метадані, які містять всю необхідну інформацію про програму для її подальшого використання.
2. На другому етапі за допомогою JIT (Just In Time Compiler) виконується компіляція і верифікація модулів, формування збірок для конкретної платформи та їх виконання.
2.6. Універсальна система типів
Cистема типів Microsoft .NET утворює ієрархію із зростанням спільності знизу вгору, в якій явно виділяються дві великі групи типів, а саме, типи-значення (value type) і типи-посилання (reference type) (рис. 2.5).
Ця система типів спільна для всіх мов, які підтримуються в .NET. Існує також механізм відображення типів з CTS (Common Type System) на типи конкретних мов програмування і навпаки.
Типи-значення є статичними типами, пам’ять для них виділяється у стеку і вивільняється після завершення роботи програми.
Типи-значення не беруть участь в наслідуванні. Крім того, типи-значення копіюються при привласненні значення.
Посилкові (ссылочные) типи потребують використання покажчиків на об’єкти, що типізуються, а також централізованого зберігання і вивільнення пам'яті. Отже, об’єкти цього типу є динамічними, пам’ять під них виділяється з «купи» і вивільняється після знищення об’єкту («збірка сміття»).
Рис. 2.5. Структура системи типів Microsoft .NET
Посилкові типи можуть приймати одну з трьох форм:
1) об'єктні типи (object type);
2) інтерфейсні типи (interface type);
3) типи-покажчики (pointer type).
Управління типами в CTS
• Типи можуть використовуватися після ініціалізації (з урахуванням методу виклику, властивостей get і set і т.д.).
• Над типами можуть виконуватися перетворення (як явним, так і неявним чином).
Типи даних також об’єднуються в простори імен (namespace). Базовим простором імен є простір System.
Таблиця 2.2. Вбудовані типи-значення в CTS
Відповідає FCL-типу |
|
System.SByte |
Цілий. 8-розрядне із знаком. Діапазон значень: –128 ... 127 |
System.Byte |
Цілий. 8-розрядне без знаку. Діапазон значень: 0 ... 255 |
System.Int16 |
Цілий. 16-розрядне із знаком. Діапазон значень: –32768 ... 32767 |
System.UInt16 |
Цілий. 16-розрядне без знаку. Діапазон значень: 0 ... 65535 |
System.Int32
|
Цілий. 32-розрядне із знаком. Діапазон значень: –2147483648 ... 2147483647 |
System.UInt32 |
Цілий. 32-розрядне без знаку. Діапазон значень: 0 ... 4294967295 |
System.Int64
|
Цілий. 64-розрядне із знаком. Діапазон значень: –9223372036854775808 ... 9223372036854775807 |
System.UInt64 |
Цілий. 64-розрядне без знаку. Діапазон значень: 0 ... 18446744073709551615 |
System.Char |
16 (!) розрядний символ UNICODE |
System.Single |
Плаваючий. 32 разряди. Стандарт IEEE |
System.Double |
Плаваючий. 64 розряди. Стандарт IEEE |
System.Decimal |
128-розрядне значення підвищеної точності з плаваючою крапкою |
System.Boolean |
Значення true або false |
Висновки
Під платформою Microsoft.NET слід розуміти інтегровану систему (інфраструктуру) засобів розробки, розгортання і виконання складних (як правило, розподілених) програмних систем.
Основа .Net – це Microsoft .Net Framework – своєрідний каркас, набір засобів і технологій для розробки і виконання програмних систем.
До складу MS.NET Framework входить: загальномовне середовище виконання (Common Language Runtime або CLR) і бібліотека класів підсистеми MS.NET Framework.
Бібліотека класів FCL (Framework Class Library) – це статична складова платформи.
Загальномовне середовище виконання CLR (Common Language Runtime) - динамічна складова платформи.
Середовище виконання CLR реалізує управління пам'яттю, типами даних, міжмовною взаємодією, розгортанням (deployment) застосувань.
В Microsoft .Net Framework має місце 2-етапна компіляція модулів:
1. На першому етапі створюється незалежний від платформи PE-файл (керований модуль). Цей файл містить код на проміжній мові і метадані, які містять всю необхідну інформацію про програму для її подальшого використання.
2. На другому етапі за допомогою JIT (Just In Time Compiler) виконується компіляція і верифікація модулів, формування збірок для конкретної платформи та їх виконання.
