Основы платформы

Содержание

Слайд 2

Основи .NET Framework

Зміст

Платформа .NET.
Складові частини CLI.
Основи поняття .NET-додатків та середовища виконання
.NET

Основи .NET Framework Зміст Платформа .NET. Складові частини CLI. Основи поняття .NET-додатків
-компіляція. Загальна проміжна мова CIL.
Поняття керованого коду.
Загальна система типів CTS.
Метадані. Міжмовна інтеграція у .NET.
Збірки .NET.
Just In Time (JIT) компіляція.
Управління пам'яттю. Збирання сміття.
Порівняння компонентних підходів COM та .NET.

Слайд 3

Основи .NET Framework

Від COM до .NET

За іронією долі платформа .NET Framework з'явилася

Основи .NET Framework Від COM до .NET За іронією долі платформа .NET
у результаті зусиль, спрямованих на те, щоб спростити розробку COM-додатків. Тобто сталося так, що не зовсім вдала платформа COM була не просто підправлена чи виправлена, а фактично замінена новою – .NET Framework вважається новою платформою компонентного програмування від Microsoft.

Слайд 4

Основи .NET Framework

Платформа .NET Framework. Трохи історії

Розробка платформи почалася у 1998 році.

Основи .NET Framework Платформа .NET Framework. Трохи історії Розробка платформи почалася у
Перша робоча назва – Project 42, потім була назва COM Object Runtime чи, скорочено, COR, пізніше Lightning, COM+ 2.0, Next Generation Web Services і, нарешті, Framework.
Ще у 1998 році була представлена архітектура середовища виконання .NET – “віртуальної машини .NET” :
"Більш ніяких GUID, ніяких HRESULT, ніяких IUnknown!”.
Початкова назва середовища виконання – віртуальна система виконання VES(Virtual Execution System), пізніше почав використовуватись термін загальномовне середовище виконання (Common Language Runtime, CLR).
13 лютого 2002 року – представлено пакет .NET Framework.
Загалом, .NET Framework – це пакет засобів для так званих програм нового покоління. Його ядром виступає CLR – “віртуальна машина .NET”, інструкції якої визначаються об'єктно-орієнтованою мовою CIL (Common Intermediate Language, загальна проміжна мова).
Не менш важливим компонентом платформи .NET є Framework Class Library (FCL) – єдина бібліотека класів для всіх мов платформи .NET.

Слайд 5

Основи .NET Framework

Платформа .NET Framework. Основні складові частини

.NET Framework – це пакет

Основи .NET Framework Платформа .NET Framework. Основні складові частини .NET Framework –
засобів для так званих програм нового покоління
Ядром .NET Framework виступає CLR (Common Language Runtime) – “віртуальна машина .NET”, інструкції якої визначаються об'єктно-орієнтованою мовою CIL (Common Intermediate Language, загальна проміжна мова).
Другим важливим компонентом платформи .NET Framework є Framework Class Library (FCL) – єдина бібліотека класів для всіх мов платформи .NET.

об'єктна парадигма

Слайд 6

Основи .NET Framework

Основні поняття .NET- додатків та середовища виконання

Ключові специфікації:
CIL (Common Intermediate

Основи .NET Framework Основні поняття .NET- додатків та середовища виконання Ключові специфікації:
Language) — загальна проміжна мова;
CTS (Common Type System) — система загальних типів;
CLR (Common Language Runtime) — “віртуальна машина .NET”.

FCL

Слайд 7

Основи .NET Framework

Специфікація Microsoft загальної інфраструктури мов (Common Language Infrastructure, CLI)

Загальна

Основи .NET Framework Специфікація Microsoft загальної інфраструктури мов (Common Language Infrastructure, CLI)
проміжна мова CIL (Common Intermediate Language). (Вона є цільовою мовою компіляторів, що орієнтуються на CLI).
Віртуальна система виконання VES (або CLR) – відповідає за завантаження і виконання CIL-програм (віртуальна машина).
Система метаданих (Metadata System) – описує збірки, типи у збірках. Зберігається в незалежному від конкретної мови програмування вигляді. Використовується для підтримки компонентної (у тому числі міжмовної) інтеграції.
Загальна специфікація мов CLS (Common Language Specification) – аспекти сумісності мов, що є важливим для реалізації компіляторів (надмовні поняття: збірки, метадані ; засади міжмовної інтеграції: створення типів, використання “зовнішніх” типів).

Складові частини CLI:
Система загальних типів CTS (Common Type System) – містить основні засади використання типів, які зустрічаються у розповсюджених мовах програмування.

Слайд 8

Основи .NET Framework

Специфікація Microsoft загальної інфраструктури мов (CLI ). Реалізації специфікації CLI

Основи .NET Framework Специфікація Microsoft загальної інфраструктури мов (CLI ). Реалізації специфікації

Окрім .NET Framework відомі й інші спроби реалізації CLI: платформа Mono компанії Ximian, проект Portable.NET. Крім того, Microsoft пропонує вихідні коди ще однієї своєї реалізації CLI під Windows та FreeBSD – це Shared Source CLI, для якої використовується також назва Rotor.
Реалізації CLI та платформи:

.NET Framework – одна з можливих реалізацій загальної інфраструктури мов CLI.
Окремі частини CLI стандартизовані асоціацією ECMA (European Computer Manufactures Association).

Слайд 9

Основи .NET Framework

.NET-компіляція

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

Основи .NET Framework .NET-компіляція .NET-компілятор за вхідним кодом генерує байт-код (керований код),
з програмного коду (набору інструкцій) у проміжній мові CIL та метаданих.
У .NET Framework результатом компіляції виступають PE-файли (Portable Executable) – .NET Framework розширює специфікацію PE-файлів, за рахунок чого програмісти .NET найчастіше мають справу зі знайомими розширеннями файлів EXE та DLL.
Але у даному випадку це знайомі “незнайомці” – модулі керованого коду (байт-коди .NET).
(Модулі із розширенням NETMODULE називають “сирими”. Вони не можуть, наприклад, окремо завантажуватись, а тим більше виконуватись).

Слайд 10

Основи .NET Framework

.

Основи .NET Framework .

Слайд 11

Основи .NET Framework

.NET-компілятори

http://www.dotnetpowered.com/languages.aspx

Основи .NET Framework .NET-компілятори http://www.dotnetpowered.com/languages.aspx

Слайд 12

Основи .NET Framework

Керований код .NET. Як запускається віртуальна машина .NET?

CLR повністю контролює

Основи .NET Framework Керований код .NET. Як запускається віртуальна машина .NET? CLR
виконання байт-коду .NET (саме тому виконуваний .NET-код називається керованим – managed). Зокрема, CLR забезпечує різноманітні служби і серед них автоматичний збирач сміття.
Windows, опрацьовуючи виконуваний .NET-файл, сканує таблицю імпорту та завантажує згадувані у ній бібліотеки, серед яких завжди є mscoree.dll (часто вона буває взагалі єдиною у таблиці імпорту, mscoree – абревіатура від Microsoft Component Object Runtime Execution Engine). Бібліотека mscoree.dll – це фасад CLR (фасад віртуальної машини .NET). А точка входу керованого коду (виконуваного .NET-файлу EXE чи DLL) є заглушкою з командою (інструкцією) передачі управління віртуальній машині .NET. (Одно- чи багатопроцесорний варіант CLR - mscorwks.dll, mscorksr.dll; JIT-компілятор mscojit.dll etc).

Основним принципом загальномов-ного середовища виконання CLR є концепція управління кодом.

Заглушка відрізняється від функції тим, що не повертає результат.

Слайд 13

Основи .NET Framework

Загальна проміжна мова CIL

Код у мові CIL (Common Intermediate

Основи .NET Framework Загальна проміжна мова CIL Код у мові CIL (Common
Language) – це незалежний від процесора набір інструкцій, які, з одного боку, можна ефективно перетворити в машинний код, а з іншого боку – забезпечують об'єктну підтримку, зокрема, виклики методів об'єктів. (У CIL забезпечується також можливість використання традиційних машинних інструкцій, повязаних із виконанням арифметичних, логічних операцій, передач управління, обробкою виключень тощо).
MS дизасемблер ildasm.exe забезпечує можливість:
дизасемблювання байт-коду в “асемблерний” код;
перегляду “асемблерного” коду CIL та метаданих.
MS асемблер ilasm exe :
забезпечує підтримку програмування у CIL -“асемблерній” мові.

об'єктна парадигма

Слайд 14

Основи .NET Framework

.NET-компіляція. Метадані

Метадані є засобом самоопису коду, зокрема, метадані містять

Основи .NET Framework .NET-компіляція. Метадані Метадані є засобом самоопису коду, зокрема, метадані
інформацію про всі класи, визначені у вхідному коді (модулі), що дозволяє ефективно розв'язувати наступні важливі задачі компонентного проектування програм:
міжмовна інтеграція;
віддалена взаємодія між об'єктами (. NET Remoting);
механізми рефлексії (.NET Reflection);
серіалізація даних (Serialization).
Метадані є абсолютно прозорими для програмістів.

Слайд 15

Основи .NET Framework

Збірки .NET

Збірки — фундаментальні одиниці, "будівельні" блоки .NET. Саме збірки

Основи .NET Framework Збірки .NET Збірки — фундаментальні одиниці, "будівельні" блоки .NET.
при потребі завантажуються та виконуються віртуальною машиною. Саме зі збірками пов'язані механізм керування версіями та механізм захисту. "Повне ім'я" будь-якого типу в CIL прив'язане до збірки.
Збірка (assembly) є логічним об'єднанням програмних модулів, ресурсних файлів, а також інших збірок . Про "склад" збірки можна дізнатись з її маніфесту, який є частиною метаданих.
Збірка може розгортатись в каталозі проекту. Така збірка називається закритою, оскільки вона не є доступною для проектів в інших каталогах. Щоб забезпечити використання збірки різними додатками, її потрібно занести у кеш глобальних збірок GAC (Global Assembly Cache).
(Збірки можуть бути також динамічними. Такі збірки створюються у пам'яті під час виконання проекту.)

Слайд 16

Основи .NET Framework

Метадані містять інформацію не тільки про типи - інтерфейси, класи

Основи .NET Framework Метадані містять інформацію не тільки про типи - інтерфейси,
(ім'я, вид доступу, ієрархія успадкування, описи полів, методів, властивостей, вкладених типів тощо), але й про збірки (ім'я, версія, експортовані типи, залежності збірок, атрибути захисту тощо).
Про "склад" збірки можна дізнатись з її маніфесту, який є частиною метаданих.

.NET-компіляція. Метадані. Збірки .NET

vbc /t:library SObj_.vb
csc /r:SObj_.dll CForm_.cs

Слайд 17

Основи .NET Framework

Міжмовна інтеграція у .NET. Мовна безшовність .NET

vbc /target:library SObj_.vb
csc /reference:SObj_.dll

Основи .NET Framework Міжмовна інтеграція у .NET. Мовна безшовність .NET vbc /target:library
CForm_.cs

1

1

2

2

Слайд 18

Основи .NET Framework

Міжмовна інтеграція у .NET. Модулі .NET

vbc /t:module SObj_.vb
csc /addmodule:SObj_.netmodule CForm_.cs

vbc

Основи .NET Framework Міжмовна інтеграція у .NET. Модулі .NET vbc /t:module SObj_.vb
/t:library SObj_.vb
csc /r:SObj_.dll /t:winexe CForm_win.cs

vbc /t:module SObj_.vb
csc /addmodule:SObj_.netmodule /t:winexe CForm_.cs

vbc /t:library SObj_.vb
csc /r:SObj_.dll CForm_.cs

Слайд 19

Основи .NET Framework

Міжмовна інтеграція у .NET. Приклад. ( “Сервер у клієнтському процесі”, “внутрішній

Основи .NET Framework Міжмовна інтеграція у .NET. Приклад. ( “Сервер у клієнтському
сервер”)

vbc /t:library SObj_.vb
csc /r:SObj_.dll CForm_.cs

Загалом, ServerObject готовий і до віддаленого використання (“серверний” клас)

SObj_.vb

CForm_.cs

Слайд 20

Основи .NET Framework

Міжмовна інтеграція .NET. Приклад. (Звичайний, “не серверний” клас у DLL).

CForm_.cs

vbc

Основи .NET Framework Міжмовна інтеграція .NET. Приклад. (Звичайний, “не серверний” клас у
/t:library SObj_noMarsh_.vb
csc /r:SObj_noMarsh_.dll CForm_.cs

SObj_.vb

Слайд 21

Основи .NET Framework

Система загальних типів CTS – фундамент міжмовної взаємодії (1/2)

Усі типи

Основи .NET Framework Система загальних типів CTS – фундамент міжмовної взаємодії (1/2)
успадковуються від System.Object:
“усі типи є класами”;
не має дивувати конструкція 7.ToString();
дуже важливий для рефлексії метод GetType – тип (клас) Type надає широкий спектр методів рефлексії).
Атрибути – об'єкти, що прикріплюються до типів чи їх членів. (Декларативний стиль програмування).
Регламентуються члени класів (поля, методи, властивості, події, вкладені методи), регламентуються успадкування типів (лінійне для класів та структур і множинне для інтерфейсів).

об'єктна парадигма

Слайд 22

Основи .NET Framework

Система загальних типів CTS – фундамент міжмовної взаємодії (2/2)

Value та

Основи .NET Framework Система загальних типів CTS – фундамент міжмовної взаємодії (2/2)
reference типи:
value types – біти у стековій пам'яті, заборона на конструктори без параметрів (конструктори за замовчуванням):
вбудовані типи;
типи, що визначаються користувачем:
enum, struct;
System.DateTime, System.Decimal, System.Guid – “наперед” визначені типи FCL.
reference types – посилання: вказівник + біти у динамічній пам'яті (купі), при цьому вказівник інкапсулює одночасно адресу та інформацію про тип.
Порівняння: ідентичність (посилання на один і той самий об'єкт) та рівність (однакові біти у пам'яті) (.NET каже “ні” безтиповому підходу, адресній арифметиці. Є лише дві загальнодоступні операції над посиланнями: читання та занесення даного).
Політика безпечності типів (контроль доступу з боку CLR).
Автоматичне збирання сміття.
boxing (пакування, обгортання), unboxing.

Слайд 23

Основи .NET Framework

CTS (http://msdn.microsoft.com) (1/3)

Основи .NET Framework CTS (http://msdn.microsoft.com) (1/3)

Слайд 24

Основи .NET Framework

CTS (http://msdn.microsoft.com) (2/3)

Основи .NET Framework CTS (http://msdn.microsoft.com) (2/3)

Слайд 25

Основи .NET Framework

CTS (http://msdn.microsoft.com) (3/3)

Основи .NET Framework CTS (http://msdn.microsoft.com) (3/3)

Слайд 26

Основи .NET Framework

Типи .NET Framework – FCL (Framework Class Library) та CLS-сумісність

Основи .NET Framework Типи .NET Framework – FCL (Framework Class Library) та

Не має відповідного ключового
слова, треба вказувати повне ім'я
класу - [mscorlib]System.SByte

Слайд 27

Основи .NET Framework

Приклад віддаленої взаємодії (remoting)

Основи .NET Framework Приклад віддаленої взаємодії (remoting)

Слайд 28

Основи .NET Framework

Just In Time (JIT) компіляція у машинний код (компіляція за

Основи .NET Framework Just In Time (JIT) компіляція у машинний код (компіляція
потребою, компіляція “на льоту”)

Особливості JIT-компіляції:
Саме компіляція (у машинний код), а не інтерпретація.
Не вся програма (байт-код) компілюється. (Компіляція за потребою – враховується, що при виконанні програми не весь її код може бути використаним, а отже не весь варто компілювати).
Збірки, потреба у яких не виникає у даний момент навіть не завантажуються, не кажучи вже про їх компіляцію. (Нагадаємо, що збірка є одиницею розгортання.)
Спочатку (під час завантаження) для кожного з методів створюється спеціальна “заглушка”. При першому виклику метода заглушка забезпечує передачу управління JIT-компілятору, метод компілюється і заглушка змінюється так, щоб наступні виклики метода призводили до передачі управління отриманому машинному коду, що реалізує даний метод.

Слайд 29

Основи .NET Framework

JIT-компіляція та строга типізація коду

У процесі компіляції у машинний код

Основи .NET Framework JIT-компіляція та строга типізація коду У процесі компіляції у
CLR забезпечує перевірку, чи є код строго типізованим, тобто чи виконуються наступні вимоги:
усі посилання є, по-перше, типізованими і, по-друге – сумісними з тими даними, які адресуються відповідними вказівниками;
для об'єкта викликаються тільки правильно визначені операції;
посвідчення типів (“повні” імена типів з “префіксами” – іменами збірок) є коректними (“справжніми”).
Строга типізація дозволяє ізолювати об'єкти один від одного і унеможливити їх ненавмисне чи навмисне ушкодження. Це дуже важливо для безпеки коду.
Саме строга типізація є підґрунтям застосування доменів, а також підходу до реалізації автоматичного збирача сміття.

Слайд 30

Основи .NET Framework

Кероване виконання машинного коду. Використання служб

Загальномовне середовище виконання (віртуальна машина

Основи .NET Framework Кероване виконання машинного коду. Використання служб Загальномовне середовище виконання
.NET) надає інфраструктуру, яка забезпечує кероване (managed) виконання машинного коду: під час виконання машинного (керованого) коду віртуальна машина .NET забезпечує наступні служби:
збирання сміття;
безпеки;
взаємодії з некерованим кодом;
віддаленої взаємодії;
управління потоками;
підтримки відстеження версій.

Основним принципом загальномовного середовища виконання CLR є концепція управління кодом.

Слайд 31

Основи .NET Framework

Управління пам'яттю. Збирання сміття

Автоматичне управління пам'яттю це одна із

Основи .NET Framework Управління пам'яттю. Збирання сміття Автоматичне управління пам'яттю це одна
служб, яку “віртуальна машина” (CLR) надає у процесі керованого виконання.
Зокрема, вирішуються ключові проблеми управління пам'яттю:
“витікання пам'яті”;
“висячі посилання”.
Підхід .NET наполягає на тому, щоб відмовитись від явного управління пам'яттю, натомість пропонується використовувати екземпляри reference типів (найчастіше класів).

Слайд 32

Основи .NET Framework

Збирання сміття (garbage collection, GC). Основні поняття

“Керована” купа –

Основи .NET Framework Збирання сміття (garbage collection, GC). Основні поняття “Керована” купа
неперервна (без дефрагментацій!) область адресного простору (забезпечується висока швидкість виділення пам'яті).
“Корені”. Кожен корінь або посилається на об'єкт (типізований!), який міститься у керованій купі, або має порожнє значення. (Корені пов'язані з глобальними та статичними об'єктами, локальними змінними, параметрами у стеку).
Покоління. (0-, 1-, 2-покоління).
Ущільнення пам'яті.
Метод Finalize, черга фіналізації.

2

1

0

0

Слайд 33

Основи .NET Framework

Порівняння компонентних підходів COM та .NET. Ключова розбіжність – віртуалізація

Основи .NET Framework Порівняння компонентних підходів COM та .NET. Ключова розбіжність –
(virtualization) контрактів .NET

Контракти компонентів COM є "фізичними" ("двійковими"), звідки жорсткі умови міжкомпонентних викликів: точні зміщення у таблиці віртуальних методів vtable, точна дисципліна стека (_stdcall), точний формат вказівників на інтерфейс тощо. Практична необхідність використання метазасобів для опису контрактів. (Два метазасоби: мова IDL та бібліотеки типів TLB).
Контракти компонентів .NET є віртуалізованими – не використовується "фізичний" (“двійковий”) рівень, ніяких угод про представлення у пам'яті. Контракти представляються у форматі метаданих (metadata). (Прозорість метаданих).
Інструментальні засоби читання та генерування метаданих (генерування прозоре, автоматичне).
Для компонентів обов'язкове (автоматичне!) “супроводження” метаданими (на відміну від COM ).
CIL абстрагований від “машинного рівня”, у ньому виклики компонентних методів посилаються на метадані з використанням звичайних імен, а не вказівників чи зміщень.

Слайд 34

Основи .NET Framework

Додаток

Основи .NET Framework Додаток

Слайд 35

Основи .NET Framework

Дизасемблер ildasm.exe. Перегляд SObj_.dll, CForm_. dll

Простір імен

vbc /t:library SObj_.vb
csc /r:SObj_.dll

Основи .NET Framework Дизасемблер ildasm.exe. Перегляд SObj_.dll, CForm_. dll Простір імен vbc
CForm_.cs

Слайд 36

Основи .NET Framework

Дизасемблер ildasm.exe. Перегляд маніфесту CForm_.exe

vbc /t:library SObj_.vb
csc /r:SObj_.dll CForm_.cs

mscorlib -

Основи .NET Framework Дизасемблер ildasm.exe. Перегляд маніфесту CForm_.exe vbc /t:library SObj_.vb csc
Multilanguage Standard Common Object Runtime Library

Слайд 37

Основи .NET Framework

Дизасемблер ildasm.exe. Перегляд метода cmdCall_Click (файл CForm_.exe)

vbc /t:library SObj_.vb
csc /r:SObj_.dll CForm_.cs

CForm_.cs

CForm_.cs

DialogResult

Основи .NET Framework Дизасемблер ildasm.exe. Перегляд метода cmdCall_Click (файл CForm_.exe) vbc /t:library
[System.Windows.
Forms]System.Windows.Forms.
MessageBox::Show(string)

Слайд 38

Основи .NET Framework

Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (1/4)

Основи .NET Framework Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (1/4)

Слайд 39

Основи .NET Framework

SObj_.vb

ctor

ServerObject

ServerObject

Hi

ServerObject

TypeDefName

Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (2/4)

Основи .NET Framework SObj_.vb ctor ServerObject ServerObject Hi ServerObject TypeDefName Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (2/4)

Слайд 40

Основи .NET Framework

TypeRef

MarshalByRefObject

System.Console

System.Console

WriteLine

Assembly

SObj_

Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (3/4)

Основи .NET Framework TypeRef MarshalByRefObject System.Console System.Console WriteLine Assembly SObj_ Дизасемблер ildasm.exe. Метадані (metainfo) SObj_.dll (3/4)

Слайд 41

Основи .NET Framework

mscorlib - Multilanguage Standard Common Object Runtime Library

SObj_

mscorlib

Дизасемблер ildasm.exe. Метадані

Основи .NET Framework mscorlib - Multilanguage Standard Common Object Runtime Library SObj_
(metainfo) SObj_.dll (4/4)
Имя файла: Основы-платформы.pptx
Количество просмотров: 172
Количество скачиваний: 0