Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_13,14_Тема_6.docx
Скачиваний:
0
Добавлен:
14.08.2019
Размер:
195.06 Кб
Скачать

Главные компоненты платформы .Net

Теперь, когда вы знаете о некоторых преимуществах, обеспечиваемых .NET, следует познакомиться с основными компонентами, которые и обеспечивают эти преимущества: CLR, CTS, CLS и библиотека базовых классов.

С точки зрения программиста, .NET Framework можно определить как среду выполнения программ и всеобъемлющую библиотеку базовых классов.

Слой среды выполнения в .NET называется CLR (Common Language Runtime) – общеязыковая среда выполнения. Задачей CLR является размещение, загрузка и управление .NET –типами, а также решение таких низкоуровневых задач, как управление памятью и проверка безопасности.

CTS (Common Type System) – общая система типов полностью описывает все типы данных и программные конструкции, поддерживаемые средой выполнения. Конкретный язык, совместимый с .NET, может и не поддерживать абсолютно все возможности, определенные в CTS.

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

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

Роль языка c#

С учетом радикального отличия принципов .NET от предшествующих технологий Microsoft разработала новый язык программирования C# специально для использования с новой платформой. C# является гибридом множества языков и предлагает следующие возможности:

  • программы на C# обычно не требуют прямого обращения к указателям, хотя возможность получения доступа к ним имеется;

  • автоматическое управление памятью выполняется с помощью компонента «сборщик мусора»;

  • имеет формальные синтаксические конструкции для перечней, структур и свойств классов;

  • поддерживает (аналогично C++) перегрузку операций для пользовательских типов, но без лишних сложностей;

  • позволяет строить общие типы и общие члены с использованием синтаксиса, очень похожего на шаблоны C++;

  • полностью поддерживает технику программирования, основанную на использовании интерфейсов;

  • имеет полную поддержку технологии аспектно-ориентированного программирования (АОП) через атрибуты. Эта ветвь разработки позволяет назначать характеристики типам и их членам для уточнения их поведения.

Другой стороной языка C# является то, что получаемый с помощью C# программный код может выполняться только в среде выполнения .NET, т.е. его нельзя использовать для построения «классического» COM-сервера или автономного приложения Win32API.

Программирование с помощью библиотек .Net

В рамках концепции .NET получили эволюционное развитие все, ранее созданные технологии программирования, например, для визуализации графических данных GDI++ (в счет своей предшественницы GDI), ADO .NET для разработки интерфейса программных приложений доступа к базам данных (в счет ADO), для разработки Web-приложений – ASP .NET (была ASP).

ADO.NET – новая стратегия доступа к данным

ADO.NET представляет собой не просто усовершенствованную версию ADO, скорее это новая стратегия доступа к данным.

Основная идея состоит в том, что в сегодняшнем мире, для которого характерен высокий уровень информационной интеграции, приложение может использовать данные из множества источников, хранимых в различных форматах. В этой ситуации, получив требуемую информацию через сеть за достаточно короткий промежуток времени, дальнейшую обработку можно выполнять локально, без необходимости постоянно поддерживать соединение с хранилищами данных. Все внесенные изменения могут быть отправлены для сохранения в источники позднее, тогда, когда это будет удобно для пользователя. В этом состоит концептуальное отличие подхода ADO.NET от всех её предшественников, поддерживающих активное соединение с базовыми хранилищами данных, пока данные находятся в обработке.

ADO.NET представляет первичные средства доступа к данным: через объекты DataReader и DataSet. Объект DataReader предназначен исключительно для последовательного считывания информации, и поэтому используется для быстрого и эффективного доступа к потоковым данным. Объект DataSet представляет собой копию данных, размещенных в памяти. Рассмотрим подробнее место этих объектов в архитектуре ADO.NET (рис. 1).

Рисунок 1

Объект DataReader работает в режиме активного подключения и позволяет выполнять только последовательное извлечение из хранилища данных, доступных для чтения. Подключение к базе данных остается открытым, пока вы работаете с объектом DataReader, и должно быть закрыто, когда работа с ним будет завершена.

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

Объект DataSet можно считать главным объектом в ADO.NET. Он может содержать несколько таблиц, извлеченных из различных источников данных. Таблицы в объекте DataSet могут быть связаны между собой отношениями. По сути, объект DataSet является временной базой данных, хранимой в памяти, которая не связана активными подключениями с источниками данных.

ADO .NET не предполагает унифицированного набора типов для связи со всеми системами управления базами данных (СУБД). Вместо этого ADO .NET поддерживает множество поставщиков данных, каждый их которых оптимизирован для взаимодействия с СУБД конкретного вида, в частности для Oracle, SQL Server и ODBC.

Упрощенно говоря, поставщик данных – это набор типов (классов), определенных в конкретном пространстве имен библиотеки классов и «понимающий» как общаться с конкретным источником данных.

Все базовые компоненты ADO .NET имеют конкретные реализации в виде типов поставщика данных. Например, для работы с Microsoft SQL Server (версии 7.0 и выше) в пространстве имен System.Data.SqlClient содержатся типы SqlConnection, SqlDataAdapter, SqlDataReader, SqlCommand.

Рассмотрим режим активного подключения или связного уровня доступа.

При использовании связного уровня доступа программный код непосредственно соединяется с хранилищем данных. Выполняются необходимые действия по обработке данных и соединение разрывается. Если из источника должны поступать данные в приложение, то необходимо организовать чтение данных и размещение их в элементах управления формы (рис.2).

Рисунок 2

Рассмотрим режим отсоединенного подключения или связный уровень доступа.

При использовании отсоединенного подключения необходимо использовать объект DataSet для организации локального хранения данных в приложении. Для заполнения DataSet используется объект DataAdapter. Отображение данных в элементах формы в этом случае выполняется проще, так как данные хранятся в контейнере ‑ DataSet (рис.3).

Рисунок 3

Выводы:

  • При работе на несвязном уровне ADO .NET вы по-прежнему должны использовать объект соединения, но также и специальный объект, называемый адаптером данных, чтобы извлекать данные.

  • В отличие от связного слоя, данные, полученные с помощью адаптера данных, не обрабатываются с помощью объекта чтения данных. Вместо этого для перемещения данных между вызывающей стороной и источником данных объекты адаптера данных используют объекты DataSet.