Типи програм.NET. Загальні відомості про основні поняття платформи.NET Framework Яке призначення загальномовної специфікації CLS

14.09.2022

Платформа.NET Framework - це інтегрований компонент Windows, який підтримує створення та виконання нового покоління додатків та веб-служб XML. Під час розробки платформи.NET Framework враховувалися такі цілі.

· Забезпечення узгодженого об'єктно-орієнтованого середовища програмування для локального збереження та виконання об'єктного коду, для локального виконання коду, розподіленого в Інтернеті, або для віддаленого виконання.

· Забезпечення середовища виконання коду, що мінімізує конфлікти при розгортанні програмного забезпечення та керуванні версіями.

· Забезпечення середовища виконання коду, що гарантує безпечне виконання коду, включаючи код, створений невідомим або не повністю довіреним стороннім виробником.

· Забезпечення середовища виконання коду, що виключає проблеми з продуктивністю середовищ виконання сценаріїв або коду, що інтерпретується.

· Забезпечення єдиних принципів роботи розробників для різних типів програм, таких як програми Windows та веб-програми.

· Розробка взаємодії на основі промислових стандартів, що забезпечить інтеграцію коду платформи .NET Framework з будь-яким іншим кодом.

Двома основними компонентами платформи.NET Framework є загальномовне середовище виконання (CLR) та бібліотека класів.NET Framework. Основою платформи .NET Framework є середовище CLR. Середовище виконання можна вважати агентом, який керує кодом під час виконання та надає основні служби, такі як управління пам'яттю, управління потоками та віддалену взаємодію. При цьому накладаються умови суворої типізації та інші види перевірки точності коду, що забезпечують безпеку та надійність. Фактично основним завданням середовища виконання є керування кодом. Код, який звертається до середовища виконання, називають керованим кодом, а код, який не звертається до середовища виконання, називають кодом, що не керується. Інший основний компонент платформи.NET Framework, бібліотека класів, представляє повну об'єктно-орієнтовану колекцію типів, які застосовуються для розробки додатків, починаючи від звичайних, що запускаються з командного рядка або з графічним інтерфейсом користувача, і закінчуючи програмами, що використовують останні технологічні можливості ASP.NET , такі як Web Forms та веб-служби XML.

Платформа.NET Framework може розміщуватись некерованими компонентами, які завантажують середовище CLR у власні процеси і запускають виконання керованого коду, створюючи таким чином програмне середовище, що дозволяє використовувати засоби як керованого, так і некерованого виконання. Платформа.NET Framework не лише надає кілька базових середовищ виконання, але й підтримує розробку базових середовищ виконання незалежними виробниками.


Для прикладу, ASP.NET hosts runtime для забезпечення швидкий, server-side environment for managed code. ASP.NET роботи безпосередньо з ходом часу, щоб забезпечити ASP.NET applications and XML Web services, which are discussed later in this topic.

Internet Explorer is example of an unmanaged application that hosts the runtime (у вигляді MIME типу extension). Використовуючи Internet Explorer для керування поточними настройками ви збираєтеся керувати компонентами або Windows Forms controls в HTML documents. Здійснюючи ходу в цьому способі керувати мобільним кодом (подібно до Microsoft® ActiveX® керування) можливим, але з значними підходами, що тільки керують кодом можна зробити, так як semi-trusted execution and isolated file storage.

Наступні зображення показують relationship of the common language runtime and the class library to your applications and to the overall system. Ілюстрація такожпоказує, як managed code operates within larger architecture.

NET Framework in context

Наступні розділи позначають основні компоненти і особливості .NET Framework in greater detail.


Наприклад, ASP.NET розміщує середовище виконання та забезпечує масштабоване середовище для керованого коду на стороні сервера. ASP.NET працює безпосередньо з середовищем виконання, щоб забезпечити виконання програм ASP.NET і веб-служб XML, що обговорюються нижче в цьому розділі.

Оглядач Internet Explorer може служити прикладом некерованої програми, яка розміщує середовище виконання (у вигляді розширень типів MIME). Розміщення середовища виконання в браузері Internet Explorer дозволяє впроваджувати керовані компоненти або елементи керування Windows Forms у HTML-документи. Таке розміщення середовища робить можливим виконання керованого мобільного коду (аналогічного елементам управління Microsoft ActiveX®), але з істотними перевагами керованого коду, такими як виконання в умовах неповної довіри та ізольоване зберігання файлів.

На наступному малюнку демонструється взаємозв'язок середовища CLR і бібліотеки класів з додатками користувача і всією системою. На малюнку також показано, як керований код працює у межах ширшої архітектури.

NET Framework у контексті

У наступних розділах наведено детальніший опис основних компонентів і засобів платформи.NET Framework.

Є однією з найбільш затребуваних, багатофункціональних мов програмування, що активно розвиваються на даний момент. З його допомогою можна розробляти практично будь-яке програмне забезпечення, починаючи від простих win forms додатків, до великих клієнт-серверних веб-додатків або навіть мобільні програми та комп'ютерні ігри.А він працює на базі платформи.NET Framework. Давайте розберемося, що це таке.

Дивитися моє відео на тему платформи.NET Framework і середовище виконання CLR для C#

Мова програмування C#є відносно свіжим, але він уже встиг заслужити на довіру. Реліз першої версії відбувся у лютому 2002 року. Крайньою версією на момент написання статті є C# 7.2, яка вийшла 16.08.2017.

Синтаксис мови C# як слід з назви входить до сімейства Сі-подібних мов і схожий на інші популярні мови цієї групи (C++, Java). Тому якщо ви вже знайомі з однією з цих мов, вам буде значно простіше освоїти мовою програмування C#.

Оскільки C# є объектно-ориентированным мовою, він підтримує успадкування, поліморфізм, інкапсуляцію, строгу типізацію змінних, навантаження операторів та інше. Всі ці поняття будуть детально розглянуті в наступних статтях. Завдяки використанню парадигми об'єктно-орієнтованого проектування за допомогою мови програмування можна легко розробляти масштабні і при цьому гнучкі проекти. При цьому регулярно виходять нові версії мови C#, додаючи нову функціональність для спрощення життя розробника, збільшення швидкості розробки, підвищення продуктивності та надійності докладання.

Платформа.NET

.NET Framework – це програмна платформа від компанії Microsoft що дозволяє виконувати розробку різними мовами програмування, тому що для всіх мов використовується єдине загальномовне середовище виконання Common Language Runtime (CLR). Таким чином, основними можливостями платформи .NET є:

  • Кросплатформеність- .NET Framework підтримується більшістю сучасних операційних систем Windows, а також є можливість створювати програми, що підтримуються Linux системами, і навіть мобільні програми.
  • Мультимовність– оскільки вихідний код, написаний мовою програмування, що транслюється, транслюється в загальномовний Common Intermediate Language (CIL) код, з'являється можливість вести розробку будь-якою підтримуваною мовою програмування, і навіть використовувати різні мови програмування в одному рішенні. Найбільш популярними мовами, що підтримуються, є C#, VB.NET, C++, F#.
  • Велика бібліотека класів та технологій– існує безліч готових до використання бібліотек для вирішення необхідних завдань. Найчастіше зовсім не доводиться реалізовувати низькорівневу логіку роботи програми, достатньо скористатися готовим рішенням, що зручно поставляється через менеджер пакетів nuget. Крім того, платформа .NET передбачає легку розробку практично будь-якого типу необхідного програмного забезпечення.

Керований та некерований код. JIT-компіляція

Керований код (managed code)– це код керований загальномовним середовищем CLR. Це означає, що керуюче середовище має можливість призупинити виконання програми та отримати специфічну інформацію про стан програми у будь-який момент його виконання. Вихідний код мови програмування транслюється в керований код CIL (його ще називають високорівневим асемблером).

Після створення бібліотеки класів або програми вихідний код продовжує зберігатися мовою CIL. А при запуску програми або звернення до бібліотеки виконується Just-In-Time ( JIT) компіляція докладання у машинний код, специфічний саме у тому оточення, у якому здійснюється виконання докладання. При цьому важливою особливістю є те, що виконується компіляція тільки тієї частини програми або бібліотеки, до якої виконується звернення (та й зв'язків природно). Це дозволяє збільшити продуктивність роботи системи та економити ресурси.

Некерований код (unmanaged code)- Це код, що транслюється відразу в машинний виконуваний код і виконується операційною системою безпосередньо.

Крім того, рекомендую прочитати статтю. А також підписуйтесь на групу ВКонтакте, Telegram та YouTube-канал. Там ще більше корисного та цікавого для програмістів.

NET Framework служить середовищем підтримки, розробки та виконання розподілених додатків, що базуються на компонентах (елементах управління).

Програми можна розробляти різними мовами програмування, які підтримують цю технологію.

NET Framework забезпечує:

  • спільне використання різних мов програмування;
  • безпеку та переносимість програм;
  • загальну модель програмування з урахуванням платформи Windows.

2. Які основні складові .NET Framework?

З точки зору програмування, .NET Framework складається з двох основних складових:

  • загальномовне виконавче середовище CLR (Common Language Runtime);
  • бібліотека базових класів

Загальномовне середовище CLR вирішує завдання автоматичного виявлення типів .NET, завантаження цих типів та керування ними. Середовище CLR здійснює управління пам'яттю, обслуговування програми, обробку потоків та реалізує численні перевірки пов'язані з безпекою.

Бібліотека базових класів включає визначення різноманітних примітивів, якими можуть бути: потоки, графічні API-інтерфейси, реалізація баз даних, файлове введення-виведення та інше.

3. Який принцип дії загальномовного середовища виконання CLR (Common Language Runtime)?

Загальномовне середовище виконання CLR управляє виконанням коду .NET.

Після компіляції програми на C# (або іншій мові) створюється файл, який містить особливий псевдокод або байт-код (а не виконавчий файл, як було раніше). Цей псевдокод називається (MSIL) або Common Intermediate Language (CIL). Цей псевдокод є проміжною мовою Microsoft.

Основне призначення CLR – перетворити проміжний код MSIL на виконавчий код у процесі виконання програми.

Будь-яка програма, яка скомпільована в псевдокод MSIL може бути виконана в будь-якому середовищі, що містить реалізацію CLR . Це забезпечує переносність програм у середовищі .NET Framework.

Мал. 1. Процес перетворення вихідного коду на код мовою MSIL (CIL чи IL ) і створення файлу складання (*.dll чи *.exe )

Після цього, псевдокод перетворюється на виконуваний код. Це здійснює JIT-компілятор. JIT (Just-in-time) -компіляція - це компіляція на «льоту».

Виконавче середовище CLR відповідає за визначення розташування збирання (assembly).

Запитуваний тип, який розміщується в збірці (наприклад, клас ArrayList або інший тип), визначається в двійковому файлі (*.dll або *.exe) за допомогою зчитування метаданих цього файлу.

Після цього CLR розміщує у пам'яті лічений зі складання тип.

Потім CLR перетворює CIL-код на відповідні інструкції, які підлаштовуються під конкретну платформу (залежно від ПК, операційної системи тощо). Крім того, на цьому етапі відбуваються необхідні перевірки щодо безпеки.

Останнім відбувається виконання запитуваного програмного коду.

4. Що таке проміжна мова MSIL ( Microsoft Intermediate Language) або CIL (Common Intermediate Language)?

Спочатку проміжна мова псевдокода називалася Microsoft Intermediate Language(MSIL). Пізніше (в останніх версіях .NET) ця назва була змінена на Common Intermediate Language (CIL - загальна проміжна мова). Абревіатури MSIL, CIL і IL (Intermediate Language) означають те саме.

Проміжна мова CIL (або MSIL) формується після компіляції програми деякою мовою програмування, яка підтримує платформу .NET Framework.

MSIL є псевдокодом. MSIL визначає набір інструкцій, які:

  • можуть переноситися різні платформи;
  • не залежить від конкретного процесора.

Фактично, MSIL – це мова переносного асемблера

5. Що таке складання (assembly) з погляду технології .NET?

Складання - це файли з розширеннями *.dll або *.exe, які містять незалежні від платформи .NET інструкції проміжною мовою (Intermediate Language - IL), а також метадані типів.

Складання створюється за допомогою .NET компілятора. Складання – це великий двійковий об'єкт.

Складання призначене для збереження просторів імен (namespaces). Простір імен містять типи. Типами може бути класи, делегати, інтерфейси, перерахування, структури.

Складання може містити будь-яку кількість просторів імен. Будь-який простір імен може містити будь-яку кількість типів (класів, інтерфейсів, структур, перерахувань, делегатів).

6. Що розміщується у збірках?

У збірках розміщується CIL-код (MSIL-код або IL-код) та метадані.

CIL-код компілюється під конкретну платформу тільки тоді, коли відбувається звернення до нього з середовища .NET .

Метадані детально описують особливості кожного типу, що є всередині цієї двійкової .NET одиниці.

НаприкладПри створенні програми типу Windows Forms Application у C# створюється файл Assembly.info . Цей файл розміщується в папці Properties щодо основної папки програми. У цьому файлі вказується загальна інформація про збирання.

7. Що таке маніфест (manifest)?

Маніфест- Це опис самої збірки за допомогою метаданих.

У маніфесті розміщується інформація:

  • про поточну версію складання;
  • відомості про культуру (локалізація малих та графічних ресурсів);
  • Список посилань на всі зовнішні зборки, які необхідні для правильного функціонування.

8. Схема взаємодії між вихідним кодом, компілятором .NET та механізмом виконання .NET .

Програміст створює вихідний код програми мовою, що підтримує технологію .NET (мовою C# , C++/CLI , Visual Basic .NET і т.д.). Програма створюється в певному середовищі програмування, наприклад Microsoft Visual Studio. Компілятор формує складання – файл, який містить CIL-інструкції, метадані та маніфест.

Після запуску на виконання цієї програми на деякому комп'ютері (деякій платформі), в роботу запускається механізм виконання. Попередньо, на комп'ютері має бути встановлена ​​одна з версій (як мінімум) .NET Framework.

Якщо у вихідному коді використовуються бібліотеки базових класів (наприклад зі складання mscorlib.dll ), вони завантажуються за допомогою завантажувача класів.

JIT-компілятор здійснює компіляцію складання з урахуванням (прив'язкою) апаратних та програмних особливостей комп'ютера, на якому відбувається запуск програми.

Після цього програма виконується.

Рисунок 2. Зв'язок між вихідним кодом, компілятором та механізмом виконання .NET

9. Які існують види збирання?

Існує два види збірок:

  • однофайлові збирання;
  • багатофайлові збирання.

Складання, що складається з одного єдиного модуля (*.dll або *.exe) називається однофайловою. В однофайлових збірках всі необхідні CIL-інструкції, метадані та маніфести розміщуються в одному, чітко визначеному пакеті.

Складання, що складається з багатьох файлів двійкового коду .NET, називається багатофайловим. Кожен із цих файлів називається модулем.

У багатофайловій збірці один із модулів є головним (primary).

10. У якому файлі розміщується головне збирання бібліотеки MS Visual Studio?

Головна збірка розміщується у файлі "mscorlib.dll".

11. Що таке загальна система типів CTS?

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

Типами може бути класи, інтерфейси, структури, перерахування, делегати.

12. Яке призначення загальномовної специфікації CLS?

Як відомо, не всі мови програмування, які є сумісними з .NET, можуть підтримувати функціональні можливості системи типів CTS. Для цього використовується загальномовна специфікація CLS (Common Language Specification).

Завданням CLS є опис лише того підмножини загальних типів і програмних конструкцій, які сприймаються всіма мовами програмування, які підтримують .NET .

13. Які мови програмування підтримують технологію .NET?

У системі розробки додатків MS Visual Studio технологію .NET підтримують такі мови програмування: C# , Visual Basic .NET , C++/CLI , JScript .NET , F# , J# .

Для того, щоб можна було використовувати технологію .NET, потрібно встановити на комп'ютері програмне забезпечення. Microsoft .NET Framework Software Development Kit(SDK ) або Microsoft Visual Studio будь-якої версії.

14. Що таке простір імен (namespace)?

Простір імен призначений для об'єднання групи типів, які пов'язані між собою із семантичної точки зору. Типи розміщуються у збірках (assembly). Під типами розуміються класи, делегати, інтерфейси, структури, перерахування.

Приклади назв просторів імен:

System System.Data System.IO System.Collections System.Threading.Tasks

Наприклад, у просторі імен System.Data розміщуються основні типи для роботи з базами даних, у просторі імен System.Collections розміщуються основні типи для роботи з колекціями.

15. Як вивести вміст збірок, просторів імен та типів у MS Visual Studio?

У Microsoft Visual Studio є утиліта Object Browser , яка викликається з меню View (рисунок 3).

Мал. 3. Виклик утиліти Object Browser

В результаті відкриється вікно Object Browser , в якому будуть відображатися збирання, що використовуються у певній технології.

На малюнку 4 відображено список збірок, які відображаються у технології “.NET Framework 4”. Виділено збірку з ім'ям "mscorlib".

Мал. 4. Вікно Object Browser з виділеним збиранням mscorlib.dll

Якщо розкрити вміст збирання mscorlib (знак “ + ”), то буде відображено список усіх просторів імен цієї збірки (рисунок 5). Як видно з малюнка, збірка включає простір імен Microsoft.Win32, System, System.Collections, System.Collections.Concurrent та багато інших.

Мал. 5. Складання mscorlib та список просторів імен, які входять до неї

Аналогічно розкривається будь-яке з просторів імен. У просторах імен описуються типи. У типах описуються методи, властивості, константи тощо.

На малюнку 6 зображено клас BinaryReader із простору імен System.IO. Очевидно, у класі реалізовані методи з іменами BinaryReader() , Close() , Dispose() , FillBuffer() та інші.

Мал. 6. Вміст класу BinaryReader

16. Як підключити простір імен у програмі на C#?

Для підключення простору імен використовується ключове слово using

Всім доброго доби. На зв'язку Олексій Гулинін. У цій першій статті з C# я хотів би розповісти про платформу .NET Framework. Мова C# і сама платформа вперше з'явилися 2002 року. Основною метою їх створення було забезпечити більш просту, масштабовану і, головне, потужнішу модель програмування, порівняно з моделлю програмування COM. На базі платформи.NET Framework можна будувати програми для сімейства операційних систем Windows, також можна будувати програми для Unix, Linux, Mac OS X. Нижче представлений короткий список можливостей, які підтримуються.NET Framework:

1) Можливість взаємодії з існуючим кодом. Ця можливість дозволяє компілювати, наприклад, двійкові компоненти COM і компоненти .NET.
2) Підтримка різних мов програмування. Програми.NET можна створювати з допомогою різних мов програмування, наприклад C#, Visual Basic, F#.
3) Загальний виконуючий механізм. Сенс тут у тому, що в .NET існує певний набір типів, який здатний розуміти кожну мову, що підтримує .NET.
4) Мовна інтеграція. Можна написати клас Visual Basic, а потім розширити його на C#.
5) Велика бібліотека базових класів. Завдяки цій бібліотеці ми можемо забути про складнощі реалізації низькорівневих звернень до API-інтерфейсів і зосередитися просто на програмуванні.
6) Проста модель розгортання. На відміну від бібліотеки COM, .NET не потрібно реєструватись у реєстрі. Вона може бути у вигляді сборки.dll.

Можливо, тут я написав про якісь незрозумілі речі, наприклад класи, API-інтерфейси. Заморочуватися поки що з цим не варто. В принципі, програмувати можна і без знання всього це, але так, як ми з вами вчимося, давайте зовсім трохи розбавляти практику теорією.
Щоб зовсім вас добити теорією розповім про основні будівельні блоки платформи.NET:

1) CLR (Common Language Runtime) - загальномовне виконуюче середовище. Першорядним завданням даного середовища є завантаження та управління об'єктами.NET (щоб програміст не робив цього вручну). Крім цього, CLR дбає про ряд низькорівневих деталей, наприклад, управління пам'яттю, розміщення програми, виконання перевірок, пов'язаних з безпекою програми.
2) CTS (Common Type System) - загальна система типів. Тут описані всі можливі типи даних, що підтримуються середовищем (CLR). Потрібно знати, що окремо взята мова може не підтримувати абсолютно всі засоби, визначені специфікацією CTS. Тому існує:
3) CLS (Common Language Specification). Тут описано безліч загальних типів і програмних конструкцій, які обов'язково повинні підтримувати всіма мовами програмування для платформи.NET Framework.

На додаток до середовища CLR та специфікацій CTS/CLS, платформа.NET надає бібліотеку базових класів, яка доступна для всіх мов програмування.NET. Ця бібліотека дозволяє високому рівні (не замислюючись деталях реалізації) управляти, наприклад, файловим вводом-выводом, графікою, різними зовнішніми пристроями, потоками даних, і навіть різними службами.

Писати теорію я не майстер, тому скажу для тих, хто хоче глибше зрозуміти філософію.NET, я рекомендую прочитати перший розділ книги Ендрю Троелсена "Мова програмування C# 5.0 і платформа.NET 4.5, рік видання 2013". Ця коротка інформація про платформу .NET взята з цієї книги. Проблема, з якою я зіткнувся щодо цієї книги, — це складність викладу матеріалу для новачка. Можливо, вам так не здасться, це лише моя думка.

Ну що, друзі мої, у вас ще не відпало бажання вивчати C#? Тоді давайте сміливо йти далі, обіцяю, що в майбутньому теоретичних статей буде щонайменше (якщо тільки на початку вивчення C#), тільки одна практика. Якщо потрібна теорія - "куріть" книгу Ендрю Троєлсена.
А так, якщо потрібна якась інформація за класом або його методом, йдіть відразу на

Платформа.NET Framework – це один із компонентів системи Windows. Він дозволяє створювати та використовувати додатки нового покоління. Призначення платформи .NET Framework :

  • створення цілісної об'єктно-орієнтованого середовища програмуваннящо допускає різні варіанти реалізації: код може зберігатися та виконуватися локально; виконуватися локально, а поширюватись через Інтернет; або виконуватись віддалено;
  • надання середовища виконання коду, в якому кількість конфліктів при розгортанні програмного забезпечення та керуванні версіями буде зведено до мінімуму;
  • забезпечення безпеки виконання коду в середовищі - у тому числі коду, створеного невідомим розробником або розробником із частковою довірою;
  • надання середовища виконання коду, що дозволяє усунути проблеми, пов'язані з продуктивністю середовищ на основі сценаріїв чи інтерпретації;
  • уніфікація роботи розробників у різних додатках: як у додатках Windows, і у веб-додатках;
  • використання промислових стандартів у всіх галузях обміну даними та, як наслідок, забезпечення сумісності коду, створеного в .NET Framework, з іншими програмами.