
- •Архитектуры и модели программ и знаний
- •.NET Framework
- •Common Language Runtime. Цели:
- •Common Language Runtime
- •Common Language Runtime Сборки (assemblies)
- •Common Language Runtime
- •Common Language Runtime
- •Common Language Runtime
- •Common Language Runtime
- •Common Language Runtime
- •Common Language Runtime
- •Windows Forms
- •Пример (J. Prosise):
- •GUI, создаваемый при исполнении примера Windows Forms
- •Web Forms
- •Web Forms
- •Web Forms
- •ADO.NET – обработка данных
- •Языки:
- •Общая система типов
- •Цели
- •Содержание
- •Часть 1. Обзор
- •История типов
- •типа
- •Контракты
- •Приведения (Coercions)
- •Преобразование типа (Casting)
- •Common Language
- •Часть 2: Типы и типология
- •Типы-значения и типы- ссылки
- •Примитивные типы-значения
- •Примитивные ссылочные типы
- •Boxing и Unboxing
- •Перечисления: (red, yellow, green)
- •Исключения
- •Исключения (CTS)
- •Делегаты и события
- •Атрибуты
- •Способы применения атрибутов
- •Часть 3. Внутренняя структура
- •Элементы типов 1/2
- •Элементы типов 2/2
- •Имена в CTS
- •Видимость и доступ
- •Наследование типов
- •Наследование элементов типа
- •Часть4: Пример многоязыкового наследования (Microsoft)
- •Класс “Father” на Visual Basic.NET
- •Резюме
- •Сборки
- •Цели
- •Содержание
- •Часть 1. Обзор
- •Что такое сборка
- •Статические и динамические сборки
- •Сборки
- •Зависимости
- •Зависимости типов
- •Сборки и пространства имен
- •Сборки, часть 2: Концепции и элементы
- •Манифест – стандартные элементы
- •Манифест – пользовательские элементы
- •Многофайловые сборки
- •Версии
- •Многоверсионное
- •безопасность сборки
- •Полные имена сборок
- •Утилита поддержки полных имен
- •Присваивание полного имени
- •Отложенное присваивание
- •Использование сборок с полными именами
- •Инструменты для развертывания сборок и управления ими
- •Ассемблер: ilasm
- •Дизассемблер: ildasm
- •Инсталляция
- •Преимущества GAC
- •Управление сборками во время
- •Загрузка сборки
- •Области приложений (Application Domains)
- •Оптимизации сборок во время
- •Just-In-Time (JIT) -
- •Предкомпиляция (PreJITting) с помощью утилиты ngen
- •Резюме
- •Вопросы и домашнее задание к лекции 18

Архитектуры и модели программ и знаний
Лекция 18
Обзор возможностей, типы данных, сборки, атрибуты, метаданные, рефлексия, версии, инструменты .NET
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

.NET Framework
Классы |
|
|
|
|
System.Web |
System.Windows.Forms |
|||
Services |
UI |
Form |
Button |
|
Description |
HtmlControls |
MessageBox |
ListControl |
|
Discovery |
|
|||
WebControls |
|
|
||
Protocols |
System.Drawing |
|||
|
||||
Caching |
Security |
|||
Drawing2D |
Printing |
|||
Configuration |
SessionState |
Imaging |
Text |
|
System.Data |
System.Xml |
|||
OLEDB |
SQL |
XSLT |
Serialization |
|
Design |
SQLTypes |
XPath |
|
|
|
|
System |
|
|
Collections |
IO |
Security |
Runtime |
|
Configuration |
Net |
ServiceProcess |
InteropServices |
|
Diagnostics |
Reflection |
Text |
Remoting |
|
Globalization |
Resources |
Threading |
Serialization |
|
|
(C) Сафонов В.О. 2012 |
|

Common Language Runtime. Цели:
Сервисы для разработчиков
Взаимодействие модулей на разных языках (при соблюдении CLS)
Улучшение производительности
Сервисы для развертывания приложений
Простые и надежные средства развертывания
Система версий – проблема конфликтов версий DLL в .NET
решена
Сервисы времени выполнения
Производительность (.NET быстрее Java)
Масштабируемость: .NET Compact Framework – платформа разработки ПО устройств с ограниченными ресурсами
Доступность
Надежность и безопасность
(C)Сафонов В.О. 2012

Common Language Runtime
Компиляция
Исходный код |
C++, C#, VB или другой входной язык .NET
Компилятор
csc.exe или vbc.exe
Сборка |
DLL или |
EXE |
(C) Сафонов В.О. 2012

Common Language Runtime Сборки (assemblies)
Сборка
Логическая единица развертывания
Содержит: манифест, метаданные, MSIL, ресурсы
Манифест
Метаданные описывают компоненты сборки (версию, типы, зависимости и др.)
Метаданные
Полное описание типов, определенных и используемых в сборке: свойств, методов, аргументов, результатов, атрибутов и др.
Пользовательские атрибуты (custom attributes) – очень важный механизм расширения
(C)Сафонов В.О. 2012

Common Language Runtime
Сборки
Microsoft Intermediate Language (MSIL, IL, CIL)
Исходные коды со всех языков компилируются в CIL (управляемый код)
CIL всегда компилируется в объектный код
целевой платформы перед исполнением
Ресурсы
Рисунки: .bmp, .jpg; видео/аудио-файлы: .wmv и др.
(C)Сафонов В.О. 2012

Common Language Runtime
Модель исполнения
Исходны й код
MSIL
VB |
C# |
C++ |
Compiler |
Compiler |
Compiler |
Сборка |
Сборка |
Сборка |
Ngen |
Common Language Runtime JIT Compiler |
Объектный Managed |
Managed |
Managed |
Unmanaged |
|
код |
Code |
Code |
Code |
Code |
Сервисы CLR |
|
|
|
|
целевой |
|
|
|
|
платформы |
Сервисы ОС |
|
||
|
|
|
(C) Сафонов В.О. 2012

Common Language Runtime
Сервисы
Управление исполнением кода
JIT-компиляция MSIL в код целевой платформы
Загрузка и исполнение управляемого кодаСоздание метаданных и
управление имиВерификация корректности типов
Вставка и исполнение
проверок безопасности
Управление памятью и сборка мусора
Многоязыковая обработка исключений
Взаимодействие объектов
.NET Framework, COM-
объектов и Win32 DLL- библиотек
Автоматическое размещение объектов во время позднего связыванияСервисы для разработчика
(профилирование, отладка и
др.)
(C) Сафонов В.О. 2012

Common Language Runtime
Поддержка многоязыкового программирования
Общая система типов (CTS)
Унификация и обобщение концепции типа в различных языках программирования
Общая спецификация сзыков (CLS)
CLS - спецификация, соблюдение которой реализацией какого-либо языка обеспечивает совместимость модулей, откомпилированных с разных языков
|
(более 40 правил) |
Языки |
|
|
Реализованные Microsoft: C++, Visual Basic, |
|
C#, JScript |
Реализованные другими компаниями: Cobol, |
|
|
Eiffel, Smalltalk, Scheme, Zonnon, Haskell, Java, |
|
Python, Perl и др. |
(C) Сафонов В.О. 2012

Common Language Runtime
Приложения
Приложение состоит из одной или нескольких
сборок
Взаимосвязь сборки с другими сборками
Основана на метаданных и политике
Локальные сборки
Глобальный кэш сборок (GAC) – реализован в виде директории
На одном компьютере могут исполняться несколько версий одной и той же сборки
Это облегчает развертывание и модификацию приложений
Одно и то же приложение может даже использовать несколько версий одной и той же сборки
(C)Сафонов В.О. 2012