
- •Тема 1. Информационные процессы и средства их реализации
- •Традиционные и новая технологии разраб. Прогр.
- •Язык с#. Компонентно-ориентированный язык
- •Платформа .Net
- •Устанавливаемое на компьютер по .Net
- •Готовые блоки кода
- •Visual Studio .Net позволяет создавать приложения для:
- •Интерпретатор,
- •Управляемый модуль — это стандартный переносимый исполняемый (portable executable, ре) файл Windows на промежуточном языке il, который требует для своего выполнения clr. Языки для платформы .Net
- •Программа на промежуточном языке msil
- •Переносимость
Переносимость
Alpha
ЭВМ
x86
Формат управляемого модуля
Импортируемые типы и их члены
Локальная сеть
Интернет
Метаданные — это просто набор таблиц данных, описывающих то, что определено в модуле, например, типы и их члены. Метаданные имеют также таблицы, указывающие, на что ссылается управляемый модуль, например, на импортируемые типы и их члены.
Метаданные всегда встроены в тот же EXE/DLL, что и код, поэтому метаданные и IL-код, описываемый ими, никогда не бывают рассинхронизированы.
Метаданные устраняют необходимость в заголовочных и библиотечных файлах при компиляции, так как все сведения о типах/членах, на которые есть ссылки, содержатся в файле с IL-кодом.
Функция VS .NET IntelliSense анализирует метаданные и сообщает, какие методы предлагает тип и какие параметры требуются этим методам.
CLR использует метаданные, чтобы убедиться, что ваш код совершает только «безопасные» операции.
Объединение управляемых модулей в сборку
Сборка - это логическая группировка одного или нескольких управляемых модулей или файлов ресурсов (однофайловая или многофайловая)
Сборка - это самая маленькая единица, с точки зрения повторного использования, безопасности и отслеживания версий, то есть сборка выполняется как одно целое.
Сборки позволяют вам разбить на части процесс развертывания файлов и в то же время рассматривать все файлы как единый набор (отдельные файлы могут загружаться из Web по мере надобности).
CLR знает о сборке все, что нужно для ее выполнения. (Дополнительной информации не требуется ни в реестре, ни в службе каталогов Active Directory. А раз так, развертывать сборки гораздо проще, чем неуправляемые компоненты.)
Загрузка CLR
При запуске управляемой сборки в Windows XP/.NET Server загрузчик ОС определяет, является ли файл управляемым модулем, и если это так, то автоматически загружает CLR (MSCorEE.dll) в адресное пространство процесса.
Интеграция языков и повторное использование кода
Исполнение кода сборки
Непосредственно перед исполнением метода Main() CLR находит все типы, на которые ссылается код Main(). При этом CLR выделяет внутренние структуры данных, используемые для управления доступом к типам, на которые есть ссылки.
Эти внутренние структуры данных содержат по одной записи для каждого метода, определенного в типе.
Каждая запись содержит адрес, по которому можно найти реализацию метода.
Производительность управляемых приложений
Многие специалисты считают, что управляемые приложения производительней неуправляемых, и тому есть масса подтверждений. Когда JIT-компилятор компилирует IL-код в команды процессора в период выполнения, он располагает более полными сведениями о среде выполнения в сравнении с компилятором неуправляемого кода:
JIT-компилятор может обнаружить, что приложение запускается на процессоре Pentium 4 и сгенерировать процессорный код, полностью использующий все преимущества особых команд Pentium 4. Неуправляемые приложения обычно компилируются в расчете на процессор, являющийся «наименьшим общим знаменателем», избегая специфических команд, которые заметно повышают производительность приложения на новейших процессорах.
JIT-компилятор может обнаружить, что некоторая проверка всегда приводит к отрицательному результату на конкретной машине. Например, рассмотрим метод с таким кодом:
if (numberOfCPUs > 1) {
…
}
Этот код указывает JIT-компилятору, что для машины с одним процессором не нужно генерировать никакие команды процессора. В этом случае собственный код процессора оптимизирован для конкретной машины: он короче и выполняется быстрее.
CLR может проанализировать выполнение кода и перекомпилировать IL-код в команды процессора при выполнении приложения с учетом обнаруженных некорректных прогнозов ветвления.
Код машины подвергается компилятором оптимизации.
Получение процессорного кода
Утилита NGen.exe, поставляемую с .NET Framework SDK компилирует весь IL-код некоторой сборки в процессорный код и сохраняет его в дисковом файле.
При загрузке сборки, CLR автоматически проверяет наличие предварительно скомпилированной версии сборки и, если она есть, загружает скомпилированный код, так что компиляция в период выполнения производится не будет.
Надежность приложений
По мнению специалистов, главное достоинство IL не в том, что он позволяет абстрагироваться от конкретного типа процессора. Главное — надежность приложений.
1. При компиляции IL в команды процессора CLR выполняет верификацию, в процессе которой проверяется, все ли «безопасно» делает высокоуровневый IL-код: нет ли, например, чтения памяти, в которую ничего не записывалось, нужное ли число параметров передается методу и корректны ли их типы, правильно ли используются возвращаемые методами значения, имеют ли все методы операторы возврата и т. д.
2. Метаданные управляемого модуля включают все сведения о методах и типах, необходимые для верификации. Если выясняется, что IL-код «небезопасен», генерируется исключение System.Security.VerificationException, и соответствующий метод не выполняется.
3. Так как управляемые приложения не производят некорректного обращения к памяти и не влияют на код другого приложения, CLR предоставляет возможность выполнения множества управляемых приложений в одном процессе ОС. С этим связано понятие домен приложения.
Библиотека классов .NET Framework
В .NET Framework включены сборки библиотеки классов .NET Framework Class Library (FCL), содержащие определения нескольких тысяч типов.
В результате CLR и FCL позволяют пользователям создавать следующие виды приложений:
Web-сервисы XML. Методы, к которым можно легко обратиться через Интернет.
Web-сервисы, конечно же, являются главным козырем инициативы Microsoft под названием «.NET».
Web Forms. Приложения, основанные на HTML (Web- сайты).
Обычно приложения Web Forms выполняют запросы к БД и вызовы Web-сервисов, объединяют и фильтруют полученные данные, а затем выводят их в браузере, предоставляя развитый пользовательский интерфейс, основанный на HTML.
Технология Web Forms поддерживается средой разработки в стиле Visual Basic 6.
Windows Forms. Windows-приложения с богатым графическим интерфейсом пользователя.
Как и приложения Web Forms, приложения Windows Forms выполняют запросы БД и вызовы Web-сервисов XML. Для Windows Forms предлагается среда разработки, подобная Visual Basic 6.
(Классы для офисных приложений.)
Консольные приложения Windows.
Службы Windows, которыми управляет диспетчер Windows Service Control Manager (SCM).
Библиотеки компонентов. .NET Framework позволяет создавать автономные компоненты (типы), которые легко использовать со всеми перечисленными выше видами приложений.
Пространства имен
Поскольку FCL насчитывает тысячи типов, наборы «родственных» типов скомпонованы в отдельные пространства имен:
Пространство имен
|
Описание содержимого |
System |
Все базовые типы, используемые каждым приложением. |
System.Windows. Forms |
Типы, используемые в приложениях с графическим интерфейсом пользователя Windows. |
System.Collections |
Типы для работы с наборами объектов; включает такие попу лярные типы-наборы, как стеки, очереди, хэш-таблицы и т. д. |
System.Drawing |
Типы для работы с двумерной графикой; обычно применяются в приложениях Windows Forms, а также для создания картинок для страниц Web Forms. |
System.I0 |
Типы, реализующие потоковый ввод/вывод, работу с файлами и каталогами |
System.Web Services |
Типы для создания Web-сервисов XML. |
System.Web.UI |
Типы, используемые в приложениях Web Forms. |
System.EnterpriseServices |
Типы для управления транзакциями, очередями компонентов, пулами объектов, JIT-активацией и другие функции для более эффективной реализации управляемого кода на сервере. |
System.Globalization |
Типы поддержки национальных языков (National Language Support, NLS), такие как сравнение строк, форматы и календарь. |
System.Management |
Типы для управления компьютерами посредством Windows Management Instrumentation (WMI). |
System.ServiceProcess |
Типы, используемые в приложениях-службах, которые могут управляться SCM.
|
System.Net |
Типы, реализующие сетевое взаимодействие. |
System.Reflection |
Типы, позволяющие просматривать метаданные и осуществлять позднее связывание типов и их членов. |
System.Resources |
Типы для работы с внешними ресурсами. |
System.Runtime.InteropServices |
Типы, позволяющие управляемому коду получать доступ к неуправляемым функциям ОС, таким как СОМ- компоненты и Win32 DLL. |
System.Runtime.Remoting |
Типы, обеспечивающие удаленный доступ к типам. |
System.Runtime.Serialization |
Типы, позволяющие сохранять экземпляры объектов и восстанавливать их из потоков. |
System.Security |
Типы, используемые для защиты данных и ресурсов. |
System.Text |
Типы для работы с текстом в различной кодировке, например ASCII или Unicode. |
System.Threading |
Типы, используемые для асинхронных операций и синхронизации доступа к ресурсам. |
System. Xml |
Типы для обработки XML-схем и данных. |
System.Diagnostics |
Типы, помогающие отлаживать приложения и оснащать их инструментальными средствами. |