Основные понятия Технологии .NET

Содержание

Слайд 2

Слайд 3

Слайд 4

Слайд 5

Слайд 6

Платформа Java Краеугольным камнем платформы Java является виртуальная машина, которая отвечает

Платформа Java

Краеугольным камнем платформы Java является виртуальная машина, которая отвечает за

независимость Java-программ от операционных систем и аппаратных платформ.
Набор инструкций этой виртуальной машины (так называемый Java byte-code) может выполняться как на специализированных Java-процессорах, так и путем компиляции в исполняемый код конкретной аппаратной платформы.
Слайд 7

Платформа Microsoft.NET (.NET Framework) Microsoft.NET (.NET Framework) – программная платформа. Платформа

Платформа Microsoft.NET (.NET Framework)

Microsoft.NET (.NET Framework) – программная платформа.
Платформа

.NET Framework предоставляет комплексную модель программирования для создания всех типов приложений, от мобильных и веб-приложений до классических приложений. 
Содержит следующие основные компоненты:
the common language runtime (CLR)
the .NET Framework class library (.NET FCL)
Слайд 8

Список версий .NET Framework

Список версий .NET Framework

Слайд 9

CLS (Common Language Specification) Или общая спецификация языков программирования. Это набор

CLS (Common Language Specification)

Или общая спецификация языков программирования.
Это набор конструкций

и ограничений, которые являются руководством для создателей библиотек и компиляторов в среде .NET Framework. Библиотеки, построенные в соответствии с CLS, могут быть использованы из любого языка программирования, поддерживающего CLS. Языки, соответствующие CLS (к их числу относятся языки Visual C#, Visual Basic, Visual C++), могут интегрироваться друг с другом.
CLS – это основа межъязыкового взаимодействия в рамках платформы Microsoft.NET.
Слайд 10

Основные правила общей спецификации языков: Спецификация распространяется только на доступные извне

Основные правила общей спецификации языков:

Спецификация распространяется только на доступные извне части

экспортируемых из библиотеки типов. То, что остается внутри библиотеки, может использовать любые типы, не оглядываясь на спецификацию.
Упакованные типы-значения, неуправляемые указатели и типизированные ссылки не должны использоваться.
Регистр букв в идентификаторах не имеет значения.
Методы не должны иметь переменного количества параметров.
Глобальные поля и методы не поддерживаются спецификацией.
Объекты исключений должны наследовать от System.Exception.
Слайд 11

CLR (Common Language Runtime) – Среда Времени Выполнения или Виртуальная Машина.

CLR (Common Language Runtime)

– Среда Времени Выполнения или Виртуальная Машина. Обеспечивает

выполнение сборки. Основной компонент .NET Framework.
Под Виртуальной Машиной понимают абстракцию инкапсулированной (обособленной) управляемой операционной системы высокого уровня, которая обеспечивает выполнение программного кода.
Слайд 12

Задачи CLR (Common Language Runtime) управление кодом (загрузку и выполнение), управление

Задачи CLR (Common Language Runtime)

управление кодом (загрузку и выполнение),
управление

памятью при размещении объектов, изоляцию памяти приложений,
проверку безопасности кода, преобразование промежуточного языка в машинный код,
доступ к метаданным (расширенная информация о типах),
обработка исключений, включая межъязыковые исключения,
взаимодействие между управляемым и неуправляемым кодом (в том числе и COM- объектами),
поддержка сервисов для разработки (профилирование, отладка и т.д.).
Слайд 13

Компоненты CLR Ядро (mscoree.dll) Библиотеки базовых классов (mscorlib.dll)

Компоненты CLR

Ядро (mscoree.dll)
Библиотеки базовых классов (mscorlib.dll)

Слайд 14

FCL (.NET Framework Class Library) соответствующая CLS спецификации объектно-ориентированная библиотека классов,

FCL (.NET Framework Class Library)

соответствующая CLS спецификации объектно-ориентированная библиотека классов, интерфейсов

и системы типов (типов-значений), которые включаются в состав платформы Microsoft .NET.
Данная библиотека обеспечивает доступ к функциональным возможностям системы и предназначена в качестве основы при разработке .NET приложений, компонент, элементов управления.
Слайд 15

FCL (.NET Framework Class Library) .NET FCL могут использовать ВСЕ .NET-приложения,

FCL (.NET Framework Class Library)

.NET FCL могут использовать ВСЕ .NET-приложения, независимо

от назначения, архитектуры, используемого при разработке языка программирования.
В частности, содержит:
встроенные (элементарные) типы, представленные в виде классов
классы для разработки графического пользовательского интерфейса (Windows Form)
классы для разработки Web-приложений и Web-служб на основе технологии ASP.NET (Web Forms)
классы для разработки XML и Internet-протоколами (FTP, HTTP, SMTP, SOAP)
классы для разработки приложений, работающих с базами данных (ADO.NET),
и т д
Слайд 16

MSIL (Microsoft Intermediate Language/ IL – Intermedia Language) – промежуточный язык

MSIL (Microsoft Intermediate Language/ IL – Intermedia Language)

– промежуточный язык платформы

Microsoft.NET.
Исходные тексты программ для .NET приложений пишутся на языках программирования, соответствующих спецификации CLS.
Для языков программирования, соответствующих спецификации CLS может быть построен преобразователь в MSIL.
Таким образом, программы на этих языках могут транслироваться в промежуточный код на MSIL.
Благодаря соответствию CLS, в результате трансляции программного кода, написанного на разных языках, получается совместимый IL код.
Слайд 17

МЕТАДАННЫЕ Создаются при преобразовании программного кода в MSIL. Блок МЕТАДАННЫХ содержит

МЕТАДАННЫЕ

Создаются при преобразовании программного кода в MSIL.
Блок МЕТАДАННЫХ содержит информацию о

данных, используемых в программе, это наборы таблиц, содержащих информацию о типах данных, определяемых в модуле, о типах данных, на которые ссылается данный модуль.
Слайд 18

МЕТАДАННЫЕ: ФУНКЦИИ сохранения информации о типах. При компиляции не требуются заголовочные

МЕТАДАННЫЕ: ФУНКЦИИ

сохранения информации о типах. При компиляции не требуются заголовочные и

библиотечные файлы. Всю необходимую информацию компилятор читает непосредственно из управляемых модулей,
верификации кода в процессе выполнения модуля,
управления динамической памятью (освобождение памяти) в процессе выполнения модуля,
при разработке программы стандартными инструментальными средствами (Microsoft Visual Studio.NET) на основе метаданных обеспечивается динамическая подсказка (IntelliSense).
Слайд 19

Исполняемый модуль Управляемый исполняемый модуль (управляемый модуль) это результат трансляции .NET

Исполняемый модуль

Управляемый исполняемый модуль (управляемый модуль) это результат трансляции .NET приложения.


Это стандартный переносимый исполняемый (PE – Portable Executable) файл Windows.
Слайд 20

Элементы управляемого модуля

Элементы управляемого модуля

Слайд 21

Управляемый модуль Управляемый модуль содержит управляемый код. Управляемый код - это

Управляемый модуль

Управляемый модуль содержит управляемый код.
Управляемый код - это код,

который выполняется в среде CLR.
Код строится на основе объявляемых в исходном модуле структур и классов, содержащих объявления методов.
Управляемому коду должен соответствовать определенный уровень информации (метаданных) для среды выполнения. Код C#, Visual Basic, и JScript является управляемым по умолчанию.
Одной из особенностей управляемого кода является наличие механизмов, которые позволяют работать с УПРАВЛЯЕМЫМИ ДАННЫМИ.
Слайд 22

Управляемые данные Управляемые данные - объекты, которые в ходе выполнения кода

Управляемые данные

Управляемые данные - объекты, которые в ходе выполнения кода модуля

размещаются в управляемой памяти (в управляемой куче) и уничтожаются сборщиком мусора CLR.
Данные C#, Visual Basic и JScript .NET являются управляемыми по умолчанию.
Слайд 23

Сборка (Assembly) Управляемые модули объединяются в сборки. Сборка является логической группировкой

Сборка (Assembly)

Управляемые модули объединяются в сборки.
Сборка является логической группировкой одного

или нескольких управляемых модулей или файлов ресурсов.
Управляемые модули в составе сборок исполняются в Среде Времени Выполнения (CLR).
Сборка может быть:
исполняемым приложением (файл с расширением .EXE)
библиотечным модулем (файл с расширением .DLL).
Слайд 24

Виды сборок Существует два вида сборок: однофайловые сборки; многофайловые сборки. Сборка,

Виды сборок

Существует два вида сборок:
однофайловые сборки;
многофайловые сборки.
Сборка, которая состоит из одного

единого модуля (*.dll или *.exe) называется однофайловой. В однофайловых сборках все необходимые CIL-инструкции, метаданные и манифесты размещаются в одном, четко определенном пакете.
Сборка, которая состоит из многих файлов двоичного кода .NET, называется многофайловой. Каждый из этих файлов называется модулем.
В многофайловой сборке один из модулей есть главным (primary).
Слайд 25

Манифест (manifest) Манифест – это описание самой сборки с помощью метаданных.

Манифест (manifest)

Манифест – это описание самой сборки с помощью метаданных.
В манифесте размещается

информация:
о текущей версии сборки;
сведения о культуре (локализация строчных и графических ресурсов);
перечень ссылок на все внешние сборки, которые нужны для правильного функционирования.
Слайд 26

JIT- компилятор (just in time – в нужный момент) Перевод IL

JIT- компилятор (just in time – в нужный момент)

Перевод IL кода

осуществляется JIT- компилятором (just in time – в нужный момент), который активизируется CLR по мере необходимости и выполняется процессором.
При этом результаты деятельности JIT-компилятора сохраняются в оперативной памяти.
Между фрагментом оттранслированного IL кода и соответствующим блоком памяти устанавливается соответствие, которое в дальнейшем позволяет CLR передавать управление командам процессора, записанным в этом блоке памяти, минуя повторное обращение к JIT-компилятору.
Слайд 27

Схема взаимодействия между исходным кодом, компилятором .NET и механизмом выполнения .NET.

Схема взаимодействия между исходным кодом, компилятором .NET и механизмом выполнения .NET.

Программист создает исходный код

приложения на языке, который поддерживает технологию .NET (языке C#, C++/CLI, Visual Basic .NET и т.д.). Приложение создается в некоторой среде программирования, например Microsoft Visual Studio. Компилятор формирует сборку – файл, который содержит CIL-инструкции, метаданные и манифест.
После запуска на выполнение этого приложения на некотором компьютере (некоторой платформе), в работу запускается механизм выполнения .NET. Предварительно, на компьютере должна быть установлена одна из версий (как минимум) .NET Framework.
Если в исходном коде используются библиотеки базовых классов (например из сборки mscorlib.dll), то они загружаются с помощью загрузчика классов.
JIT-компилятор осуществляет компиляцию сборки с учетом (привязкой) аппаратных и программных особенностей компьютера, на котором происходит запуск приложения.
После этого приложение выполняется.
Слайд 28

Связь между исходным кодом, компилятором и механизмом выполнения .NET

Связь между исходным кодом, компилятором и механизмом выполнения .NET

Слайд 29

Общая система типов CTS CTS (Common Type System) – система типов,

Общая система типов CTS

CTS (Common Type System) – система типов, которая содержит полное

описание всех возможных типов данных и программных конструкций, которые поддерживаются общеязыковой исполнительной средой CLR. Также здесь описывается то, как эти сущности могут взаимодействовать между собою.
Типами могут быть классы, интерфейсы, структуры, перечисления, делегаты.
Слайд 30

Назначение общеязыковой спецификации CLS Не все языки программирования, которые являются совместимыми

Назначение общеязыковой спецификации CLS

Не все языки программирования, которые являются совместимыми с .NET,

могут поддерживать функциональные возможности системы типов CTS. Для этого используется общеязыковая спецификация CLS (Common Language Specification).
Задачей CLS есть описание только того подмножества общих типов и программных конструкций, которые воспринимаются абсолютно всеми языками программирования, которые поддерживают .NET.
Слайд 31

Языки программирования, которые поддерживают технологию .NET В системе разработки приложений MS

Языки программирования, которые поддерживают технологию .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 любой версии.
Слайд 32

Структура среды выполнения CLR Код приложения .NET на одном из языков

Структура среды выполнения CLR

Код приложения .NET на одном из языков

программирования .NET

Библиотеки базовых классов (mscorlib.dll и другие)

Сборка в виде файлов DLL или EXE (Содержит IL и Метаданные)

Компилятор .NET

Ядро среды выполнения (mscoree.dll)

Загрузчик

JIT компилятор

Инструкции ассемблера

Выполнение приложения

Слайд 33

Выводы Блок метаданных CLR обеспечивает ЭФФЕКТИВНОЕ взаимодействие выполняемых .NET приложений. Для

Выводы

Блок метаданных CLR обеспечивает ЭФФЕКТИВНОЕ взаимодействие выполняемых .NET приложений.
Для

CLR все сборки одинаковы, независимо от того на каких языках программирования они были написаны.
Фактически CLR разрушает границы языков программирования (cross-language interoperability).
Благодаря CLS и CTS .NET-приложения фактически оказываются приложениями на MSIL (IL).
Слайд 34

ПРОСТРАНСТВО ИМЕН

ПРОСТРАНСТВО ИМЕН

Слайд 35

Пространство имен Пространство имен определяет декларативную область, которая позволяет отдельно хранить

Пространство имен

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

имен.
По существу, имена, объявленные в одном пространстве имен, не будут конфликтовать с такими же именами, объявленными в другом.
Классы группируются по пространствам имён, которые имеют (как правило) вложенную структуру.
Наиболее часто используемое пространство имён – System. Оно объединяет те классы из .NET Framework, которые наиболее часто используются в программах на C#
Слайд 36

Пространство имен При многократном обращаться к классам из одного и того

Пространство имен

При многократном обращаться к классам из одного и того же

пространства имен, можно упростить составные имена, используя в начале программы (до определения класса) специальный оператор:
 using <имя_пространства_имен>;
 После такого оператора для обращения к статическому члену класса из данного пространства имен можно использовать сокращенное квалифицированное имя
имя_класса.имя_члена
Слайд 37

Пространство имен Нахождения модуля числа a System.Math.Abs(a) Поместив в программу оператор

Пространство имен

Нахождения модуля числа a
System.Math.Abs(a)
Поместив в программу оператор
 using System;  
Можно

использовать сокращенное выражение:
Math.Abs(a)
Слайд 38

В чем отличие между пространством имен и именем сборки? Пространство имен

В чем отличие между пространством имен и именем сборки?

Пространство имен -

это логическая схема именования типов, в которой простому имени типа, например, МойТип, предшествует разделенное точками иерархическое имя. Такая схема именования находится полностью под контролем разработчика. Например, по имени типов МояКомпания.ФайловыйДоступ.А и МояКомпания.ФайловыйДоступ.В можно ожидать, что их функциональность имеет отношение к работе с файлами.
.NET Framework использует иерархическую схему именования типов для объединения типов в логические категории с общей функциональностью. Средства разработки позволяют удобно просматривать типы, ссылаться на них и использовать в коде. Концепция пространства имен не имеет прямого отношения к сборке. Одна сборка может содержать типы, имена которых начинаются в разных пространствах имен, и одно пространство имен может быть реализовано в нескольких сборках. В .NET Framework пространство имен является соглашением по именовании в процессе разработки, в то время как сборка устанавливает область действия имени для типа в период выполнения.
Слайд 39

Как вывести содержимое сборок, пространств имен и типов в MS Visual

Как вывести содержимое сборок, пространств имен и типов в MS Visual Studio?

В

системе Microsoft Visual Studio есть утилита Object Browser, которая вызывается с меню View. В результате откроется окно Object Browser, в котором будут отображаться сборки, которые используются в определенной технологии.

Если раскрыть содержимое сборки mscorlib (знак “+”), то будет отображен список всех пространств имен данной сборки

Слайд 40

РАЗВЕРТЫВАНИЕ И ИЗОЛЯЦИЯ ПРИЛОЖЕНИЙ

РАЗВЕРТЫВАНИЕ И ИЗОЛЯЦИЯ ПРИЛОЖЕНИЙ

Слайд 41

Варианты развертывания .NET приложения .NET Framework упрощает развертывание, делая возможным установку

Варианты развертывания .NET приложения

.NET Framework упрощает развертывание, делая возможным установку системы

без побочных эффектов и развертывать приложение, используя утилиту XCOPY. Поскольку все запросы обрабатываются сначала в приватной директории приложения, то для запуска приложения необходимо просто скопировать файлы приложения на диск. Никакой регистрации не требуется.
Такой сценарий применим для Web-приложений, Web-сервисов и клиентских приложений.
Когда приложение состоит из небольшой части приватного кода, и использует большое количество совместно используемых сборок, или когда приложение не всегда полностью установлено локально (например, определенные части приложения скачиваются и загружаются по требованию), то для таких ситуаций, в .NET Framework предусмотрены сервисы для скачивания кода и интеграция с Windows Installer.
.
Слайд 42

Домен приложения Домен приложения (сокращенно AppDomain) — это виртуальный процесс, который

Домен приложения

Домен приложения (сокращенно AppDomain) — это виртуальный процесс, который используется

для изоляции приложения. Все объекты, созданные в рамках одного приложения (другими словами, любая последовательность создания объектов, которая начинается в приложении), создаются в рамках определенного домена приложения. Несколько доменов приложений могут существовать в одном процессе операционной системы, предоставляя легкий способ для изоляции приложения.
CLR реализует изоляцию приложений, управляя памятью, использованной кодом, запущенным в рамках домена приложения. Это гарантирует, что не будет обращений в память, находящуюся все рамок домена. Важно отметить, что только безопасный код может управляться таким образом (среда выполнения не может гарантировать изоляцию, когда в домен приложения загружен небезопасный код).
Слайд 43

СБОРКА МУСОРА

СБОРКА МУСОРА

Слайд 44

Сборка мусора Сборка мусора - это механизм, позволяющий компьютеру определить, когда

Сборка мусора

Сборка мусора - это механизм, позволяющий компьютеру определить, когда объект

более недоступен. Тогда он автоматически освобождает память, используемую этим объектом (вызывая функцию finalizer, реализованную пользователем). Некоторые сборщики мусора (в т.ч. используемый в .NET), "сжимают" память, уменьшая количество ресурсов, используемых вашей программой.
Слайд 45

БЕЗОПАСНОСТЬ

БЕЗОПАСНОСТЬ

Слайд 46

Безопасность .NET Безопасность - важнейший элемент любой идеологии, технологии и инструментального

Безопасность .NET

Безопасность - важнейший элемент любой идеологии, технологии и инструментального

средства программирования.
.NET как инструментальное средство призвано обеспечивать необходимый уровень безопасности.
Для этого в .NET реализована мера безопасности - автоматизированное управление ЖЦ ПО.
Для программиста это проявляется:
в автоматической реализации процедуры "сборки мусора",
в запрете использования указателей на области памяти с неопределенным значением ("висячих" ссылок) и ссылающихся на себя указателей (циклических ссылок).
Слайд 47

Автоматизация обеспечения синтаксической коррекции кода (безопасные вызовы функций, контроль выхода за

Автоматизация обеспечения синтаксической коррекции кода (безопасные вызовы функций, контроль выхода за

границы размера статически распределяемых областей памяти, запрет использования переменных, если им не задано значение по умолчанию).
Обязательная проверка промежуточного кода (IL – Intermediate Language) на корректность типизации в рамках стратегии расширенного контроля соответствия типов.
Усовершенствованы права доступа пользователей к ресурсам (для включения компонента в проект необходимо проверить источник кода, заверенный автором цифровой подписью и подлинность отправителя).
Широкий спектр динамически корректируемых в соответствии с профилями пользователя политик доступа.
Криптографические методы для шифрования конфиденциальной, коммерческой информации, передаваемой по Internet-каналам
Слайд 48

Верификация кода При разработке платформы .NET было уделено много внимания обеспечению

Верификация кода

При разработке платформы .NET было уделено много внимания обеспечению безопасности

выполняемого программного кода. С точки зрения обеспечения безопасности можно привести следующую классификацию CIL-кода:
Недопустимый код (illegal code).
Это код, который не может быть обработан JIT-компилятором, то есть не может быть транслирован в машинный код.
Допустимый код (legal code).
Это код, который может быть представлен в виде машинного кода. При этом он может содержать вредоносные фрагменты (например, вирусы) или ошибки, способные нарушить работу не только программы, но и среды выполнения и даже операционной системы.
Слайд 49

продолжение Безопасный код (safe code). Безопасный код не содержит вредоносных фрагментов

продолжение

Безопасный код (safe code).
Безопасный код не содержит вредоносных фрагментов (в том числе ошибок)

и не может повредить ни системе выполнения, ни операционной системе, ни другим выполняемым программам.
Верифицируемый код (verifiable code).
Верифицируемый код − это код, безопасность которого может быть строго доказана алгоритмом верификации, встроенным в CLR.
Слайд 50

Стандарты Для тиражируемого коммерческого программного продукта необходимо подтверждение его соответствия мировым

Стандарты

Для тиражируемого коммерческого программного продукта необходимо подтверждение его соответствия мировым стандартам.
Теоретические

достижения и технологические инновации технологии .NET подтверждаются мнением европейской ассоциации по стандартам ECMA (European Computer Manufacturers Association).
ЯП C# и среда Common Language Infrastructure (CLI) ратифицированы организацией ECMA в качестве международного стандарта.
Разработчики ПО осуществляют проекты в соответствии со спецификациями ECMA (реализация .NET под управлением ОС Linux).
Слайд 51

Ядро системы типов .NET

Ядро системы типов .NET

Слайд 52

Ядро системы типов .NET Типы-значения представляют собой примитивные типы данных (целые

Ядро системы типов .NET

Типы-значения представляют собой примитивные типы данных (целые числа и числа с

плавающей запятой). Существуют еще пользовательские типы-значения, но мы обсудим их позже.
Ссылочные типы описывают так называемые объектные ссылки (object references), которые представляют собой адреса объектов.
Значения любого типа хранятся в ячейках (location). В качестве ячеек могут выступать локальные и глобальные переменные, параметры методов, поля объектов и элементы массивов. Для каждой ячейки известен тип значений, которые она может содержать.
Особо важным является то обстоятельство, что ячейки не могут содержать объекты. Все объекты размещаются в специальной области памяти, называемой кучей (heap). Таким образом, в ячейках могут храниться только значения типов-значений или объектные ссылки.