2. Що таке .NET?
1. Уніфікована, інтегрована технологічна платформа, випущена Microsoft в 2002
2. Сучасний, потужний та зручний у використанні інструментарій для розробки та
підтримки программного забезпечення
3. Ідеологія проектування та реалізація програмного забезпечення
4. Модель ефективної підтримки життєвого циклу прикладних систем
3. 5 ключових переваг .NET
1. Підтримка численних мов програмування (C#, Managed C++, Visual Basic, F#...)
2. Обширна бібліотека базових класів
3. Спільний для всіх мов механізм виконання
4. Мовна інтеграція. В .NET підтримується міжмовне наслідування
5. Сервісні можливості для розробника (відлагодження, аналіз коду, …) однакові для
всіх мов
4. Стек технологій
.NET Framework 2.0
(2002)
3.0
(2006)
3.5
(2007)
4.0
(2010)
4.5
(2012)
ASP
.NET
ADO
.NET
Win
Forms
Framework Class Library
Common Language Runtime
WPF WCF
WF
Card
Space
Entity
Framework
LINQ
Task Parallel
Library
PLINQ
.NET APIs for
Store/UWP apps
.NET APIs for
Store/UWP apps
5. Головні компоненти .NET
Бібліотека базових класів
Безпека
Web
XML/SOAP
Інше
Доступ до БД
Потоки
Віконні форми
Ввід-вивід
CLR – спільне середовище виконання
CTS – спільна система типів CLS – спільна специфікація мов
6. Базові терміни
NET компілятор – компілює вихідний код в CIL (Common Intermediate Language).
Збірка – двійковий файл, що підтримує версії, самоописує себе і обслуговується оточенням CLR
(Common Language Runtime). Окрім CIL коду в збірці міститься різноманітна службова
інформація, наприклад: інформація про зовнішні збірки (залежності), структура включених в неї
типів і т. п.
JIT компілятор – виконує перетворення коду MSIL в машинні команди по мірі виклику
підпрограм (фрагментами). На виході утворюється так званий керований код, який потім
виконується в середовищі CLR.
Керований код – це такий, що містить метадані, які дозволяють CLR виконувати перевірку
безпеки, контроль прав, контроль версій, збір мусору і т. п.
7. Схема компіляції в CLR.
1. Компіляція файла HelloWorld.cs в файл HelloWorld.dll:
csc.exe /target:library /out:"D:/HelloWorld.dll" "D:/HelloWorld.cs“
2. Компіляція файла HelloWorld.cs і створення файла HelloWorld.exe:
csc.exe /out: "D:/HelloWorld.exe" "D:/HelloWorld.cs"
11. Універсальна система типів (UTS)
тип
Типи - значення Типи - посилання Вказівники
enum structПрості типи
bool
char
sbyte
short
int
long
byte
ushort
uint
ulong
float
double
decimal
Class Interface Array Delegate
Типи, визначені користувачем
12. Вбудовані типи даних CTS
CTS VB. NET C# Managed Extensions for C++
System.Byte Byte byte unsigned char
System.SByte SByte sbyte signed char
System.Int16 Short short short
System.Int32 Integer int int or long
System.Int64 Long long __int64
System.Uint16 UShort ushort unsigned short
System.Uint32 UInteger uint unsigned int або unsigned long
System.Object Object object Object^
System.Uint64 ULong ulong unsigned __int64
System.Single Single float Float
System.Double Double double Double
System.Char Char char wchar_t^
System.String String string String^
System.Decimal Decimal decimal Decimal
System.Boolean Boolean bool Bool
13. Object
Reference types
Sub-types
Value types
Sub-types
Вбудовані типи даних CTS
public string ToString()
public bool Equals(object obj)
public int GetHashCode()
public Type GetType()
public static bool ReferenceEquals(object objA, object objB)
public static bool Equals(object objA, object objB)
protected object MemberwiseClone()
protected virtual void Finalize()
14. Garbage collector C#
• Автоматичне виділення
пам’яті
• Автоматичне очищення
пам’яті
1
• Механізм оптимізації
звільнення ресурсів
• Видалення об’єктів при
необхідності
2
• Швидкодія розробки3
15. Garbage collector C#
A B C E F G H I
Вказівник на
наступний елемент
A B E G H
Вказівник на
наступний елемент
До:
Після:
16. Ключові відмінності C# і C++
C#
• Мова програмування високого рівня.
• Компілюється в проміжний код, після чого за
допомогою Just-In-Time у виконуваний.
• Вивільненням пам'ятті керує Garbage Collector.
• C# структури можуть містити тільки Value Type.
• Делегати, події і властивості можуть бути
визначені як члени класу.
• Модифікатори доступу в C#: public, private,
protected, internal, protected internal.
• Мова програмування низького рівня.
• Компілюється в assembler-код.
• Динамічною пам'яттю керує програміст.
• C++ структури мають поведінку таку ж як класи, але
доступ за замовчуванням є публічним, а не
приватним.
• Членами класу можуть бути лише змінні,
конструктори, функції, оператор перевантаження і
деструктори.
• Модифікатори доступу в C++: public, private,
protected. C++ не підтримує внутрішні і захищені
модифікатори доступу всередині однієї зібрки.
C++
17. Ключові відмінності C# і C++
C#
• C# в конструкції обробки виняткових ситуацій
містить додатковий блок finally який
виконується при будь-яких випадках.
• Не має концепції вказівників на функції. C # має
аналогічну концепцію під назвою delegates.
• Підтримує множинне наслідування інтерфейсів
• Формальні синтаксичні конструкції для
інтерфейсів, делегатів
• Підтримує програмування на основі атрибутів
• Дає можливість писати розширення (extensions)
для класів
• C++ не підтримує блок finally в конструкції обробки
виняткових ситуацій.
• Має концепцію вказівників на функції
• Підтримує множинне наслідування класів
• Синтаксичні конструкції для інтерфейсів, делегатів
відсутні
• Не підтримує атрибути
• Не має такої можливості
C++
20. Рекомендована література
1. A. Troelsen “C# 6.0 and the .NET 4.6 Framework”
2. H. Schildt “C# 4.0 The Complete Reference”
3. J. Richter “CLR via C#”
4. J. Skeet “C# in Depth”
5. Stackoverflow.com
Лектор: Maksym Muratov, 2016