Библиотека базовых классов .NET

Вероятно, одним из самых больших достоинств управляемого кода, помимо упрощения процесса написания кода, является возможность использования библиотеки базовых классов .NET,

Базовые классы .NET представляют собой большую коллекцию классов управляемого кода. Они были созданы Microsoft и позволяют выполнять практически любые задачи, которые ранее были доступны благодаря Windows API.Эти классы следуют той же объ­ектной модели, основанной на одиночном наследовании, что используется промежуточ­ным языком. Это означает, что можно как создать экземпляр класса, определенного в библиотеке базовых классов .NET, так и определить класс, производный от данного.

Замечательной особенностью базовых классов .NET является то, что они просты в использовании и самодокументированны. Например, для запуска потока необходимо вызвать метод Start ()класса Thread. Для открытия файла нужно вызвать метод Open () класса File. Для того чтобы сделать неактивным TextBox, необходимо присво­ить значение false свойству Enabled объекта TextBox. Идея самодокументироаанных классов знакома разработчикам Visual Basic и Java, чьи библиотеки так же просты в применении.

Возможно, это будет большим облегчением для программистов на C++, которые вы­нуждены иметь дело с такими функциями API, как GetDIBits (), Regis terWndC lass Ex () и IsEqualHD {), а также с целой плеядой функций для обработки дескрипторов Windows. С другой стороны, разработчики на C++ всегда могут получить доступ к Windows API, в то время как разработчики на Visual Basic и Jam ограничены в применении функционально­сти Windows на низком уровне. Новым в базовых классах .NET является то, что они соче­тают в себе легкость использования библиотек Visual Basic и Java с полным описанием функций API.

К областям, покрываемым базовыми классами .NET, относятся:

· Основные возможности, предоставляемые IL, например, простые типы данных в общей системе типов

· Поддержка Windows GUI, элементов управления и т.п.

· Формы Web (ASP.NET)

· Доступ к данным (ADO.NET)

· Доступ к каталогам

· Доступ к файловой системе и реестру

· Работа с сетью и просмотр Web

· Атрибуты .NET и отражение

· Доступ к некоторым объектам операционной системы Windows, переменным окружения и т.п.

· Доступ к исходному коду и компиляторам различных языков О Совместимость с СОМ

· Графика (GDI+)

Кстати, согласно источникам в Microsoft, большая часть базовых классов .NET была написана на С#!

Компоненты платформы .NET

В этом разделе рассматриваются компоненты, которые составляют основу платформы .NET.

Сборки

К понятию «сборка» мы вернемся в следующих лекциях, сейчас обсуждаются только основные моменты.

Сборка - это логическая единица, которая содержит откомпилированный код, пред­назначенный для .NET.

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

Заметим, что для исполняемого кода и кода библиотеки используется одинаковая структура сборки. Единственное отличие заключается в том, что исполняемая сборка со­держит точку входа основной программы, а библиотечная сборка - нет.

Метаданные и манифесты

Важной характеристикой сборок является то, что они содержат метаданные, описываю­щие типы и методы, определенные в соответствующем коде. Сборка содержит также ме­таданные, которые описывают саму сборку.

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

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

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

При применении сборок отсутствует риск нарушения синхро­низации, так как все метаданные хранятся вместе с исполняемыми инструкциями про­граммы. Отметим, что хотя сборки могут храниться в нескольких файлах, это все равно не создает проблемы рассинхронизации данных. Дело в том, что файл, содержащий точ­ку входа основной программы, имеет также информацию и хэш, сформированный на основе содержимого других файлов. Если один из файлов будет удален, заменен или ка­ким-либо образом модифицирован, это будет сразу же обнаружено, и сборка не станет загружаться.

Наши рекомендации