NET платформа

Содержание

Слайд 2

Логика работы компьютера

Внешние устройства
Внешняя память
Жесткие диски (до 1 Тб)
Дискеты

Экран
Клавиатура
Основной блок
Физическая оперативная

Логика работы компьютера Внешние устройства Внешняя память Жесткие диски (до 1 Тб)
память (до 1 Гб)
Процессор
Регистры
Арифметико-логическое устройство
Виртуальная оперативная память
Процессы
Системный
Пользовательские

Слайд 3

Пояснение работы компьютера и программ

Жесткие диски

Дискеты

*.exe

*.dll

Дисплей

клавиатура

Мышь

Внешняя память

Физическая оперативная память

Ячейки – 1 byte

0

1

2

Виртуальная

Пояснение работы компьютера и программ Жесткие диски Дискеты *.exe *.dll Дисплей клавиатура
оперативная память

Системный процесс

Процессор

Арифметико-логическое устройство
(АЛУ)

Адрес команды

Команда

Данные

Процесс1

Процесс2

. . . . . . .

ПроцессN

Данные

Регистры

Слайд 4

Классическая последовательность создания программы

Классическая последовательность создания программы

Слайд 5

Проблемы программного обеспечения

Взаимодействие программных модулей (компонент)
локальный компьютере
в сети (локальной и

Проблемы программного обеспечения Взаимодействие программных модулей (компонент) локальный компьютере в сети (локальной
глобальной)
Переносимость между разными платформами (портативность)
32 и 64 битные
настольные и портативные
Безопасность
Эффективность

Слайд 6

Технология .Net

Новый комплексный подход компании Microsoft к решению проблем создания и работы

Технология .Net Новый комплексный подход компании Microsoft к решению проблем создания и
программного обеспечения
Разработка программного обеспечения для распределенных систем
Разработка программного обеспечения для мобильных систем

Слайд 7

Общий промежуточный язык
(Common Intermediate Language - CIL)
Все компиляторы .Net создают программу на

Общий промежуточный язык (Common Intermediate Language - CIL) Все компиляторы .Net создают
специальном языке CIL
Общая среда выполнения
(Common Language Runtime - CLR)
Все программы выполняются под управлением специальной программы (CLR)
Framework Class Library (FCL)
При выполнении программы, написанные на любом языке, используют общую библиотеку

Основные идеи .Net технологии

Слайд 8

Компилятор

Выполняемый
код *.exe

Транслятор преобразует исходный код в промежуточный код, и задает метаданные модуля

Компилятор Выполняемый код *.exe Транслятор преобразует исходный код в промежуточный код, и
с ссылками на другие компоненты .

Загрузчик
(Loader)

Загрузчик создает новый процесс, в который загружает среду выполнения RTE.

.
.
.

Just In Time
Compiler

Оперативная память

RTE вызывает JIT компилятор, который по мере использования классов выполняет компиляцию на язык машинных инструкций. Вначале управление передается статической функции Main.

Процессор выполняет операторы в выделенные для программы интервалы времени и в соответствии с логикой программы. Если класс не на машинном языке, то формируется exception, которое вызывает JIT

Последовательность создания и выполнения программы на платформе .Net

Run Time
Environment

Exceptions

RTE

Программа

Слайд 9

Состав платформы .NET (the .NET Framework)

Общая среда выполнения (Common Language Runtime)
Runtime ‘engine’ для

Состав платформы .NET (the .NET Framework) Общая среда выполнения (Common Language Runtime)
управляемого кода
Управление потоками и Памятью
Хорошо гранулированная, ясная защищенность (security)
Межъязыковое управление исключениями, диагностика, отладка
Библиотека классов (.NET Framework Class Libraries)
Набор иерархически организованных библиотек классов
Используется всеми языками .NET
Встроенная общая система типов данных (common type system)
Объектно-ориентированная, расширяемая
Компиляторы/инструменты
VB .NET, C# and C++/debugger

Слайд 10

Operating System

Common Language Runtime

Base Class Library

ADO.NET and XML

Common Language Specification

Visual Studio.NET

Платформа .NET

Operating System Common Language Runtime Base Class Library ADO.NET and XML Common
Framework

Слайд 11

Факты об .NET Framework

.NET Framework SDK свободно распространяется
.NET Framework SDK включает

Факты об .NET Framework .NET Framework SDK свободно распространяется .NET Framework SDK
компиляторы для языков: C#, VB.NET и C++.
Программирование на .NET Framework SDK не требует наличия среду разработки Visual Studio .NET
Имеются бесплатные версии среды разработки Visual.Studio (Express Edition)
.NET Framework SDK включает набор инструментов, запускаемых из командной строки, такие как компиляторы, отладчики, и разные утилиты
Rotor это открытый код реализации .NET Common Language Runtime (CLR) и C# языка

Слайд 12

Два типа программ в ОС Windows

Программы (exe модули) в виде набора инструкций

Два типа программ в ОС Windows Программы (exe модули) в виде набора
процессора (native code)
выполняются процессором непосредственно
все ранее созданное программное обеспечение
Программы имеющие специальную структуру на промежуточном языке - управляемый код (managed code)
создаются на платформе .Net
выполняются в среде CLR

Слайд 13

Типы программных модулей на .Net платформе

сборки (assembly)
exe (может быть запущен на

Типы программных модулей на .Net платформе сборки (assembly) exe (может быть запущен
выполнение)
dll (библиотека классов, может использоваться в других программах, которые на нее ссылаются - reference)
Специальные модули (не включает метаданные о сборке, а только метаданные с описанием типов)
netmodule (может быть включен в сборку).

Слайд 14

csc.exe или vbc.exe

Компилятор

Создание сборки в результате компиляции в .NET

csc.exe или vbc.exe Компилятор Создание сборки в результате компиляции в .NET

Слайд 15

Новый тип программы – Сборка (assembly)

Сборка (assembly) – включает 1 или более

Новый тип программы – Сборка (assembly) Сборка (assembly) – включает 1 или
управляемых модулей (УМ)
Управляемый модуль (managed module) – содержит 1 или более классов
Один класс должен включать 1 статический метод (static method) Main()
В методе Main должно быть решение задачи, или создание экземпляров класса, которые решают задачу

Слайд 16

Сборка (продолжение)

Компилятор сразу создает управляемый модуль и сборку
Все модули сборки хранятся (один

Сборка (продолжение) Компилятор сразу создает управляемый модуль и сборку Все модули сборки
или несколько файлов) хранятся в одном каталоге
Утилита AL.exe – для создания многофайловых сборок (может быть на разных языках)
В сборке есть декларация – дополнительные метаданные, которые описывают состав сборки

Слайд 17

Структура программных единиц

Описание сборки
(только у сборок)

Описание доступных
классов

Метаданные

Код программы на IL

Структура программных единиц Описание сборки (только у сборок) Описание доступных классов Метаданные
языке

Встроенные ресурсы
(меню, рисунки, …)

Метаданные модуля – декларация (Manifest)

Метаданные типов (Type Metadata)

IL code

Resources

Слайд 18

Многофайловая сборка

CIL

Декларация

Метаданные типов

CIL

Метаданные

Картинка

CIL

Метаданные

Main.exe

Aix1.netmodule

Aix2.netmodule

Image.jpg

Многофайловая сборка CIL Декларация Метаданные типов CIL Метаданные Картинка CIL Метаданные Main.exe Aix1.netmodule Aix2.netmodule Image.jpg

Слайд 19

Вызов компилятора

csc.exe progr.cs
/reference:System.Drawing.dll,System.Windows.Forms.dll /target:exe /out:myprg.exe
По умолчанию подключается модуль
mscorlib.dll
/reference:<подключаемые библиотеки>
/target:<тип результата>
exe

Вызов компилятора csc.exe progr.cs /reference:System.Drawing.dll,System.Windows.Forms.dll /target:exe /out:myprg.exe По умолчанию подключается модуль mscorlib.dll
– консольное приложение
winexe – GUI приложение
library – библиотека классов (dll)
module – управляемый модуль
/out: <имя полученного файла>

Слайд 20

Промежуточный язык

Microsoft Intermediate Language (MSIL) является языком ассемблера виртуальной машины. Однако реально

Промежуточный язык Microsoft Intermediate Language (MSIL) является языком ассемблера виртуальной машины. Однако
система команд этой машины переводится в исполняемый код конкретного процессора перед исполнением (так называемая компиляция времени исполнения)
При этом выполняется довольно сложный анализ типов программы и проверки условий корректности кода

Слайд 21

Общий промежуточный язык (CIL)

Псевдоассемблер – определяет набор команд виртуального процессора (примерно 100

Общий промежуточный язык (CIL) Псевдоассемблер – определяет набор команд виртуального процессора (примерно
команд)
Использует стековую модель выполнения (сперва значения загружаются в стек, вызывается команда операции, а затем результаты сохраняются в памяти)
При запуске программы CLR компилирует c CIL в машинные коды
Утилита ildasm.exe - дизассеблер

Слайд 22

Трансляция в MSIL

Исходный текст на С#
using System;
class Fib // числа Фибоначчи
{
public

Трансляция в MSIL Исходный текст на С# using System; class Fib //
static void Main (String [] args)
{
int a = 1, b = 1;
for (int i = 1; i != 10; ++ i)
{
Console.WriteLine (a);
int c = a + b;
a = b; b = c;
}
}
}

Слайд 23

Трансляция в MSIL

Сгенерированный код (начало)
// объявление имени assembly
.assembly fib as "fib" {

Трансляция в MSIL Сгенерированный код (начало) // объявление имени assembly .assembly fib

// здесь могут быть параметры assembly
}
.class public Fib
{
.method public static void Main ()
{
.entrypoint // означает начало assembly
// декларация локальных переменных:
.locals (int32 a, int32 b)
ldc.i4.1 // загрузка константы 1
stloc a // сохранение 1 в a (a = 1)
ldc.i4.1
stloc b // аналогично: b = 1
ldc.i4.1 // загрузка 1 на стек
// (счетчик цикла)

Слайд 24

Трансляция в MSIL

Сгенерированный код (окончание)
Loop:
ldloc a
call void System.Console::WriteLine(int32)

Трансляция в MSIL Сгенерированный код (окончание) Loop: ldloc a call void System.Console::WriteLine(int32)
// печать a
ldloc a // stack: 1 a
ldloc b // stack: 1 a b
add // stack: 1 (a+b)
ldloc b
stloc a // a = b
stloc b // b = (a+b)
ldc.i4.1
add // инкремент счетчика
dup
ldc.i4.s 10
bne.un.s Loop // сравнение и переход
// на следующую итерацию
pop // удаление счетчика цикла со стека
ret
}
}

Слайд 25

Достоинство MSIL

Многоплатформенность
Интеграция языков программирования
Возможность отладки многоязыковых приложений
Единая модель обработки ошибок

Достоинство MSIL Многоплатформенность Интеграция языков программирования Возможность отладки многоязыковых приложений Единая модель обработки ошибок

Слайд 26

Ассемблер и дизассемблер MSIL

Ассемблер ILAsm.exe (входит в .NET Framework)
Дизассемблер ILDasm.exe (не входит

Ассемблер и дизассемблер MSIL Ассемблер ILAsm.exe (входит в .NET Framework) Дизассемблер ILDasm.exe
в .NET Framework, но входит в VS.NET)

Слайд 27

MSIL и интеллектуальная собственность

Способы защиты вашей интеллектуальной собственности:

Использование утилит, «искажающих» имена
Размещение части

MSIL и интеллектуальная собственность Способы защиты вашей интеллектуальной собственности: Использование утилит, «искажающих»
модулей на сервере
Реализация части алгоритмов в неуправляемых модулях

Слайд 28

При компиляции IL в команды процессора выполняется верификация (проверка кода на безопасность)
Верификация

При компиляции IL в команды процессора выполняется верификация (проверка кода на безопасность)
основывается на метаданных
При обнаружении небезопасного кода возбуждается исключение (System.Security.VerificationException)
Не исполняется для небезопасного кода (например, помеченного с помощью ключевого слова unsafe в C#)

MSIL и безопасность

Слайд 29

Common Language Runtime (CLR)

При запуске программы (управляемых приложений, managed application)
Запускается CLR
CLR загружает

Common Language Runtime (CLR) При запуске программы (управляемых приложений, managed application) Запускается
программу и запускает компилятор с CIL в машинный код (x86)
Запускает полученный машинный код
CLR контролирует работу программы

Слайд 30

Исполнение в .NET

CLR

VB

Исходный текст

Compiler

C++

C#

Assembly

Assembly

Assembly

Operating System Services

MSIL

Common Language Runtime JIT Compiler

Compiler

Compiler

Native-
код

Managed
Code

Managed
Code

Managed
Code

Unmanaged
Code

CLR Services

Исполнение в .NET CLR VB Исходный текст Compiler C++ C# Assembly Assembly

Слайд 31

Загрузка и управление программами

Программа1 с неуправляемым
кодом

Программа2 с неуправляемым
кодом

ПрограммаN с неуправляемым

Загрузка и управление программами Программа1 с неуправляемым кодом Программа2 с неуправляемым кодом

кодом

Программа с управляемым
кодом

CLR

OS Windows

Слайд 32

Служебные программы

Компилятор с языка C# - csc.exe
Дизассемблер с CIL (VStudio) -ildasm.exe
Редактор связей

Служебные программы Компилятор с языка C# - csc.exe Дизассемблер с CIL (VStudio)
между сборками (assembler Linker) - al.exe
Установка (/i) и удаление (/u) общедоступных сборок - gacutil.exe

Слайд 33

Базовая библиотека классов

Base Class Library (BCL)
Framework Class Library (FCL)

Базовая библиотека классов Base Class Library (BCL) Framework Class Library (FCL)

Слайд 34

Библиотека классов .NET Framework (FCL)

Более 7000 типов (классы, интерфейсы, перечисления и делегаты)
Некоторые

Библиотека классов .NET Framework (FCL) Более 7000 типов (классы, интерфейсы, перечисления и
классы до 100 методов.
Все языки используют одни и те же типы
Библиотека разделена на иерархические пространства имен (около 100)
Физически классы размещаются в DLL.
Классы одного и того же пространства имен могут находиться в разных DLL
2 800 method calls for Microsoft Win32 API
184 000 method calls for .Net Framework Class Library

Слайд 35

Организация FCL

Размещены в наборе библиотек - dll
В разных библиотеках включены разные пространства

Организация FCL Размещены в наборе библиотек - dll В разных библиотеках включены
имен – namespaces
Объекты одного пространства имен могут включаться в разные библиотеки
В пространствах имен включены классы, структуры, …

Слайд 36

Пространство имен – name space

Разделение объектов по иерархически упорядоченным группам
Иерархическое пространство имен
<имяПространства>.<имяТипа>.<имяПодтипа>.<имяСобственное>
Вложенность

Пространство имен – name space Разделение объектов по иерархически упорядоченным группам Иерархическое
нескольких имен (как почтовый адрес)
Значительно понижается вероятность совпадения имен классов разработанных разными компаниями
Для описания связей между классами (классы близкие по функциональности включены в одно пространство)
Пространство имен включает
Классы (Class)
Интерфейсы (Interface)
Перечисление (Enum)
Делегаты (Сигнатуры классов, Delegate)
Другие пространства имен
В одном модуле могут включаться разные пространства имен

Слайд 37

Пространства имен FCL (FCL Namespaces)

System

System.Data

System.Xml

System.Web

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security

Design

ADO

SQLTypes

SQL

XPath

XSLT

Runtime

InteropServices

Remoting

Serialization

Serialization

Configuration

SessionState

Caching

Security

Services

Description

Discovery

Protocols

UI

HtmlControls

WebControls

System.Drawing

Imaging

Drawing2D

Text

Printing

System.Windows.Forms

Design

ComponentModel

Пространства имен FCL (FCL Namespaces) System System.Data System.Xml System.Web Globalization Diagnostics Configuration

Слайд 38

Основные пространства имен FCL

System – общие базовые типы
System.VisualBasic – базовые типы для

Основные пространства имен FCL System – общие базовые типы System.VisualBasic – базовые
VBasic
System.Drawing – классы для рисования
System.Windows.Forms – классы для приложений с графическим интерфейсом
System.Data – классы для работы с данными в БД
System.Web – классы для ASP.NET и Web-форм
System.Net – классы для работы с сетевыми протоколами
System.Web.Services - классы для разработки Web сервисов
System.Web.UI – основные классы используемые ASP.Net

Слайд 39

Ссылки (Reference) и операторы using

Reference – ссылка на библиотеки, которые должны загружаться

Ссылки (Reference) и операторы using Reference – ссылка на библиотеки, которые должны
во время работы программы
Библиотеки – наборы классов
Хранятся в файлах Dynamic Link Libraries (DLL)
Оператор using – используется для сокращения записи наименований классов
Имя файла: NET-платформа.pptx
Количество просмотров: 163
Количество скачиваний: 0