Платформа Microsoft. NET

Содержание

Слайд 2

Критерий оценки

Оценка за полугодие – часть годовой
Посещаемость лекций (>=50%, min 7)
Зачёт по

Критерий оценки Оценка за полугодие – часть годовой Посещаемость лекций (>=50%, min
спецсеминару (у кого есть семинар)
Устный экзамен

Слайд 3

Темы курса

Обзор платформы Microsoft.NET
Обзор .NET Framework
Обзор C#
Windows Forms
ADO.NET
ASP.NET
Веб-сервисы и SOA
Перспективные технологии Microsoft.NET
Бонусные

Темы курса Обзор платформы Microsoft.NET Обзор .NET Framework Обзор C# Windows Forms
лекции (если успеем)

Слайд 4

Лекция 1: Обзор .NET Framework
Архитектура .NET
Common Language Runtime
MSIL
Framework Class Library

Лекция 1: Обзор .NET Framework Архитектура .NET Common Language Runtime MSIL Framework Class Library

Слайд 5

Откуда есть пошел .NET

COM

Мудрость веков

Java

.NET

Откуда есть пошел .NET COM Мудрость веков Java .NET

Слайд 6

Languages C#, VB.NET, J#*, C++

Source
Code

Compilers C#, VB.NET, J#, C++

.NET Compilers

IL and Metadata

Execution

Languages C#, VB.NET, J#*, C++ Source Code Compilers C#, VB.NET, J#, C++
Engine

Executable
File

Runtime

Общая идея архитектуры .NET

Концептуально .NET представляет собой единение основных идей, лежащих в основе Java и COM.
*J# больше нет

Слайд 7

JIT-компиляция

Just in time compilation – компиляция во время исполнения
Переводит команды IL в

JIT-компиляция Just in time compilation – компиляция во время исполнения Переводит команды
инструкции конкретной машины
Компиляция происходит на уровне отдельных методов
Компиляция происходит только при первом обращении к коду

Если у вас на всё хватает времени, то либо у вас много времени, либо маленькое всё

Слайд 8

JIT-компиляторы:
С оптимизациями
Без оптимизаций
Платформы с ограниченными ресурсами: только упрощенный JIT-компилятор, так как

JIT-компиляторы: С оптимизациями Без оптимизаций Платформы с ограниченными ресурсами: только упрощенный JIT-компилятор,
он требует меньше памяти/времени

JIT-компиляция (продолжение)

Слайд 9

Схема трансляции в .NET

Source code

Схема трансляции в .NET Source code

Слайд 10

Лекция 2: Обзор .NET Framework
Архитектура .NET
Common Language Runtime
MSIL
Framework Class Library

Лекция 2: Обзор .NET Framework Архитектура .NET Common Language Runtime MSIL Framework Class Library

Слайд 11

Многоязычные приложения

Совместная работа программ на различных языках обеспечивается следующим:

Общая управляемая среда (CLI)
Общая

Многоязычные приложения Совместная работа программ на различных языках обеспечивается следующим: Общая управляемая
система типов (CTS)
Общеязыковая спецификация (CLS)
Метаданные (об этом на следующей лекции)

Слайд 12

CLI

Common Language Infrastructure – стандарт ECMA/ISO для единой инфраструктуры языков, по которому

CLI Common Language Infrastructure – стандарт ECMA/ISO для единой инфраструктуры языков, по
реализована .NET
Минимальный набор возможностей компилятора, требуемый для работы в .NET
В частности, определение правил для типов, чтобы они были доступны из других CLI-совместимых языков

Слайд 13

CTS

Common Type System
Общее определение типов и их поведения:
Примитивные типы, типы-значения и ссылочные
Объектные

CTS Common Type System Общее определение типов и их поведения: Примитивные типы,
и интерфейсные типы
Boxing и unboxing
Например, определяется набор видов членов классов, видимостей, правила наследования типов, виртуальных функций и т.п.

Слайд 14

CTS

VB

Fortran

CTS и CLS

C#

CLS

Языки .NET (кроме IL) поддерживают только подмножество CTS. Минимальный набор

CTS VB Fortran CTS и CLS C# CLS Языки .NET (кроме IL)
функций, который должны поддерживать все языки, определяется CLS

Внутренние типы могут не удовлетворять CTS

Слайд 15

Наведём порядок

CLI – стандарт ECMA 335 (2001 год), стандарт ISO 23271 (2003

Наведём порядок CLI – стандарт ECMA 335 (2001 год), стандарт ISO 23271
год), Microsoft + HP + Intel
CLR – конкретная реализация CLI от MS
CIL и MSIL – стандарт и конкретная реализация промежуточного языка
SSCLI – академическая open-source реализация CLI
Rotor – codename для SSCLI. Поддержаны – Win, FreeBSD, MacOS X

Слайд 16

Картинка

CLI

CLR

SSCLI (Rotor)

CIL

MSIL

Managed execution

Managed code

Картинка CLI CLR SSCLI (Rotor) CIL MSIL Managed execution Managed code

Слайд 17

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

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

CLR обеспечивает исполнение скомпилированного

CLR VB Compiler C++ C# Assembly Assembly Assembly Operating System Services MSIL
в MSIL приложения
CLR отвечает за сборку мусора
CLR обеспечивает управление версиями

Слайд 18

Лекция 2: Обзор .NET Framework
Архитектура .NET
Common Language Runtime
MSIL
Framework Class Library

Лекция 2: Обзор .NET Framework Архитектура .NET Common Language Runtime MSIL Framework Class Library

Слайд 19

MSIL

Что такое IL
Пример трансляции в IL
Основные черты IL
Что даёт IL
Ассемблер и дизассемблер

MSIL Что такое IL Пример трансляции в IL Основные черты IL Что
IL
IL и интеллектуальная собственность
IL и верификация

Слайд 20

Что такое MSIL

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

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

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

Слайд 21

Трансляция в 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;
}
}
}

Слайд 22

Трансляция в 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 на стек
// (счетчик цикла)

Слайд 23

Трансляция в 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
}
}

Слайд 24

Основные черты MSIL

Машина является стековой, причем стек является статически типизированным
Стек используется, как

Основные черты MSIL Машина является стековой, причем стек является статически типизированным Стек
правило, только для хранения промежуточных результатов
Большинство команд MSIL получают свои аргументы на стеке, удаляют их со стека и помещают вместо них результат(ы) вычисления
Машина является объектно-ориентированной: структура MSIL отражает разбиение кода на классы, методы и т.п.

Слайд 25

Что даёт MSIL

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

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

Слайд 26

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

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

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

Sample

Слайд 27

MSIL и IP

IL – весьма высокоуровневый ассемблер
ILDasm дает возможность восстановить исходный код

MSIL и IP IL – весьма высокоуровневый ассемблер ILDasm дает возможность восстановить
приложения (включая имена методов)

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

Использование утилит, «мешающих» имена (DotFuscator, .NET Reactor, CodeVeil)
Размещение части модулей на сервере
Реализация части алгоритмов в неуправляемых модулях (например, C++)

Слайд 28

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

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

MSIL и верификация

Слайд 29

Неуправляемый код: может повредить данные другого процесса
Управляемый код: проверено, мин нет
Верифицированные управляемые

Неуправляемый код: может повредить данные другого процесса Управляемый код: проверено, мин нет
приложения можно исполнять совместно в рамках одного процесса

MSIL и верификация

Слайд 30

Лекция 2: Обзор .NET Framework
Архитектура .NET
Common Language Runtime
MSIL
Framework Class Library

Лекция 2: Обзор .NET Framework Архитектура .NET Common Language Runtime MSIL Framework Class Library

Слайд 31

БИБЛИОТЕКА, и, ж.

Учреждение, собирающее и хранящее произведения печати и письменности для общественного

БИБЛИОТЕКА, и, ж. Учреждение, собирающее и хранящее произведения печати и письменности для
пользования, а также осуществляющее справочно-библиографическую работу. Публичная б. Научная, детская б. Передвижная б.
Собрание книг, произведений печати, а также помещение, где они хранятся. Б. учёного. Домашняя б.
Название серии книг, объединённых тематически или по назначению, жанру. Б. путешествий. Б. поэта (поэтическая).

Слайд 32

FCL

Содержит несколько тысяч классов, покрывающих всю функциональность WinAPI и не только
Разбита на

FCL Содержит несколько тысяч классов, покрывающих всю функциональность WinAPI и не только
пространства имен (namespaces)

Cлон – это мышь, выполненная по государственным спецификациям.
Роберт Хайнлайн

Слайд 33

Классы FCL (выдержка)

Классы FCL (выдержка)

Слайд 34

Текущая поддержка .NET

.NET Framework можно бесплатно скачать с сайта Microsoft
Windows 2003 и

Текущая поддержка .NET .NET Framework можно бесплатно скачать с сайта Microsoft Windows
более поздние: .NET поставляется c ОС. Самый последний .NET (3.5) входит в Windows Server 2008 и Windows 7
Языки: MS – C#, VB.NET, C++ (with Managed Extensions). Десятки реализаций других языков сторонними фирмами
Mono, dotGNU – open source под другие платформы
SSCLI (ROTOR) – доступно с исходными кодами, бесплатно для академических (некоммерческих) целей
.NET 3.5 и Visual Studio 2008 – вышли осенью 2007 и весной 2008 соответственно
http://www.tipsntracks.com/7/the-donet-framework-versions-road-map.html – вся история

Осуществляются наши самые смелые мечты! Может, пора исполняться и несмелым?