Минимизация открытых соединений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Минимизация открытых соединений



В ADO.NET связь с базой данных создается только на короткий период времени, достаточный для того, чтобы выполнять такие операции с базой данных, как, например, select или update. вы можете за короткий период времени заполнить данными объект DataSet, а затем работать с ними в состоянии "отрыва" от источника данных. В ADO объект Recordset так же может обеспечить работу с информацией в состоянии разрыва соединения с источником данных, но ADO изначально оптимизирован для работы в режиме связанного доступа.

Есть одно очень значимое различие между разъединенной обработкой в ADO и ADO.NET. В ADO происходит взаимодействие с основной базой данных через OLE DB провайдера. В ADO.NET происходит взаимодействие с базой через некого посредника — адаптера данных (OleDbDataAdapter или SqlDataAdapter). Адаптер данных позволяет контролировать процессы передачи информации из DataSet в исходную базу данных. Например, можно выполнить проверку правильности введенной информации до того, как эти изменения будут переданы источнику данных.

Разделение данных между приложениями

Передача набора данных DataSet между приложениями значительно легче, чем передача набора записей Recordset. Чтобы передавать разъединенный набор Recordset от одного компонента до другого, необходимо использовать COM marshalling. Для того чтобы передавать данные в ADO.NET, используется DataSet, который передается как XML-файл. Передача данных через XML-файлы имеет ряд преимуществ перед COM marshalling, на которых мы пока останавливаться не будем.

Соединение с источником данных (объект Connection)

Для перемещения данных между их постоянным хранилищем и приложением, в первую очередь необходимо создать соединение с источником данных (connection). В арсенале ADO.NET для этих целей имеется два объекта:

□ SqlConnection — объект, позволяющий создать соединения с базами данных MS SQL Server версии 7.0 и выше;

□ OleDbConnection — объект, позволяющий создать соединения с любыми источниками данных через OLE DB.

Объект SqlConnection создан и оптимизирован для работы с базами данных MS SQL Server версии 7.0 и выше. Объект OleDbConnection взаимодействует с OLE DB и позволяет подключиться к любым источникам данных — простые текстовые файлы, электронные таблицы, базы данных (включая и SQL Server).

Строка соединения

Первое свойство, которое необходимо определить для установления связи с базой данных — ConnectionString. Это текстовая строка, которая содержит набор элементов типа атрибут=значение атрибута и служит для определения типа провайдера, имени источника данных (DataSource), имени базы данных (Database), идентификатора пользователя (Userid), пароля доступа (Password), используемой системы безопасности и т. п. Эта строка может выглядеть, например, следующим образом:

MyConnection="Provider=SQLOLEDBl;DataSource=MySQLServer; InitialCataloq=NORTHWIND; Integrated Security=SSPI"

Перечисленные атрибуты задаются в свойстве ConnectionString объекта, обеспечивающего связь с базой данных (SqlConnection или OleDbConnection). Кроме того, можно также установить свойство ConnectionString в не связанном с приложением udl-файле (Microsoft Data Link file, файл связи данных от Microsoft).

Открытие и закрытие соединения

Объекты Connection имеют два базовых метода для открытия и закрытия соединения (Open и Close). Метод Open использует информацию из свойства ConnectionString, чтобы обратиться к источнику данных и открыть (установить) связь. Метод Close закрывает открытое соединение. Закрытие связи приложения с базой данных является очень важным событием. В этот момент освобождаются ценные системные ресурсы, и база данных может обслуживать нового пользователя (количество обслуживаемых пользователей ограничено). Такая экономия особо актуальна для Интернет-приложений, где количество обслуживаемых клиентов может достигать нескольких сотен и тысяч.

Если вы используете объекты DataAdapter или DataCommand, то нет необходимости явно открывать и закрывать соединение. Когда вызываются методы этих объектов (например, Fill или Update), то автоматически делается проверка — открыто ли соединение. Если нет, DataAdapter сам откроет соединение, выполнит свои функции и снова закроет соединение. Методы, такие как Fill, открывают и закрывают соединение автоматически только в том случае, если оно не было открыто. Если при вызове подобных методов соединение уже открыто, то оно используется и не закрывается после отработки методов. Такая стратегия дает возможность разработчикам самостоятельно управлять состоянием соединения. Это требуется в тех случаях, когда несколько объектов DataAdapter используют один объект Connection. Тогда более эффективно принудительно открыть соединение и оставлять его открытым, пока не отработают методы всех объектов DataAdapter, после чего принудительно закрыть соединение.

Пул соединений

В Web-приложениях часто множество различных пользователей могут обращаться к одной и той же базе и запрашивать одни и те же данные. В этих случаях исполняемое приложение может создать пул соединений к источнику данных.

Примечание

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

Если используется класс OleDbConnection, то пул соединений формируется автоматически провайдером, так что разработчик освобождается от управления этим процессом. Если используется класс SqConnection, то создание пула соединений также обеспечивается, но программист имеет возможность вмешиваться в его управление.

Транзакции

Объекты Connection поддерживают транзакции с помощью метода BeginTransaction, который создает объект OleDbTransaction или SqlTransaction. Объекты Transaction в свою очередь поддерживают методы, которые позволяют вам завершить транзакцию (Commit) или сделать "откат" назад (Rollback).

1.3.5. Конфигурирование свойств Connection

Во многих приложениях содержимое объекта Connection не может быть однозначно определено на этапе разработки проекта. Например, в приложении, которое будет распространяться среди множества клиентов, в Connection не могут быть жестко прописаны такие параметры, как имя сервера, имя пользователя или пароль пользователя. У каждого потребителя программного продукта значения этих атрибутов будут свои. Следовательно, содержимое свойства ConnectionString должно формироваться динамически при запуске приложения. Поскольку динамические свойства соединения заносятся и хранятся в отдельном конфигурационном файле, который не компилируется, то они могут быть впоследствии изменены без перекомпиляции приложения. Динамические свойства автоматически получают значения из конфигурационного файла во время выполнения приложения. За работу этого механизма отвечает среда.NET Framework.

Сохранение элементов строки ConnectionString (таких как, например, имя сервера, имя пользователя и пароль) как динамических свойств может иметь смысл и для повышения безопасности вашего приложения.

1.3.6. Объект Connection и безопасность

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

Как вы будете обеспечивать безопасность приложения и порядок доступа из него к источнику данных зависит от архитектуры разрабатываемой системы. В Web-приложениях, например, пользователи обычно получают анонимный доступ к Internet Information Services (IIS), и поэтому не предоставляют никаких сертификатов на право пользования информацией. В этом случае, ваше приложение должно обеспечивать собственную проверку прав входа в систему, чтобы дать "добро" на открытие соединения и обращения к базе данных. Имя пользователя и пароль могут быть или "прошиты" в откомпилированном приложении (в виде значения свойства, установленного во время разработки), или могут быть определены как динамические свойства, которые установлены в файле конфигурации Web-приложения. Двоичные файлы Web-приложения и файл конфигурации защищены от доступа из сети Интернет собственными средствами защиты ASP.NET, которые предотвращают доступ к этим файлам через любой Интернет-протокол (гипертекстовый транспортный протокол — HTTP, протокол передачи файлов — FTP, и так далее). Чтобы предотвратить доступ к Web-серверу из вашей внутренней сети, необходимо использовать возможности защиты Windows.

В Интранет или в двухуровневых приложениях вы можете использовать интегрированную защиту — средствами Windows, IIS и SQL-сервером. В такой модели защиты для обращения к ресурсам базы данных используются параметры идентификации пользователя в сети, а не имя и пароль, заданные в строке соединения. При этом права доступа к информации устанавливаются на сервере базы данных через группы пользователей, так что нет необходимости установить индивидуальные параметры разрешения для каждого пользователя, который мог бы обратиться к базе данных. В данной модели вообще не нужно сохранять параметры соединения, и нет необходимости в принятии дополнительных мер по защите параметров строки соединения.

1.3.7. Создание объекта Connection в режиме дизайнера с помощью Server Explorer

Проводник Server Explorer обеспечивает наиболее простой путь создания соединения с источниками данных в режиме дизайнера на этапе проектирования приложения. Здесь программист имеет возможность просмотреть все доступные источники (базы) данных; увидеть таблицы, столбцы и многие другие элементы, а также редактировать и создавать новые элементы базы данных.

Ваше приложение непосредственно не использует соединения, созданные этим путем. И вообще информация, поставляемая соединением в режиме дизайнера при проектировании приложения, используется для того, чтобы задать свойства нового объекта Сonnection, который вы добавите к вашему приложению. Иными словами объекты Сonnection, с которыми вы работаете в окне Server Explorer, являются элементами Server Explorer и служат шаблонами для создания объекта Сonnection, который будет являться элементом формы и реально работать в вашем приложении.

Например, во время разработки вы задействовали Server Explorer для создания связи (объекта Connection) С SQL-сервером с именем MyServer и базой данных Northwind, которая поставляется вместе с SQL Server. Затем, при проектировании формы, через это соединение вы можете просмотреть структуру базы данных Northwind, выбирать таблицы, выделять нужные вам столбцы и перетаскивать их на форму. Как раз в момент "перетаскивания" элементов из базы данных на проектируемую форму будут автоматически сформированы объекты Connection и DataAdapter. В новое соединение скопируется информация из СonnectionString соединения-шаблона проводника Server Explorer. Когда разработанное приложение будет запущено на выполнение, то объект Connection, расположенный на форме (а не в Server Explorer) будет реально обеспечивать соединение вашего приложения с источником данных.

Информация о соединениях в режиме проектирования приложений храниться на вашем локальном компьютере и не зависит от загруженного в данный момент проекта. Поэтому, как только вы загрузили в Visual Studio какой-либо проект, активизируется объект Connection режима проектирования приложений — и вы видите доступные базы данных в проводнике Server Explorer.

1.3.8. Инструменты Visual Studio для создания объектов Connection

Программистам при работе с Visual Studio нет необходимости "руками" формировать свойства объектов connection. Для этого есть соответствующие инструментальные средства — например, Мастер Адаптера Данных, который запрашивает у разработчика информацию относительно источника данных и автоматически создает объект Connection на форме или на другом компоненте, с которым вы работаете. Однако при желании разработчик можете сам добавить объект Connection на форму или другой компонент и задать нужный набор свойств.

1.3.9. Создание объекта Connection в ADO.NET

Для создания объекта connection можно использовать следующие возможности:

□ Мастера Visual Studio:

• Мастер конфигурации объекта DataAdapter. Этот мастер создает Connection, как элемент, необходимый для формирования DataAdapter;

• Мастер форм данных — данный мастер создает Connection как часть формы, которую он формирует.

□ Путь переноса таблицы, выбранных столбцов таблицы или хранимой процедуры из Server Explorer на форму. При перемещении одного из этих элементов на форму будут автоматически созданы объекты Connection и DataAdapter.

□ Создание автономного объекта Connection. В этом варианте создается объект Сonnection на форме или компоненте, свойства которого вы конфигурируете вручную. Данный способ можно использовать и тогда, когда вы предпочитаете устанавливать свойства объекта в окне Properties.

□ Создание объекта Сonnection во время работы программы.

Для создания автономного объекта connection нужно выполнить следующие действия.

1. Создайте Windows- или Web-приложение.

2. Из вкладки Data панели инструментов Toolbox поместите объект Сonnection на вашу форму или компонент. Для этого левой кнопкой мыши выделите объект OleDbConnection или SqlConnection (рис. 1.5), затем щелкните левой кнопкой мыши в любом месте формы.

• Используйте объект SqlConnection, если вы будете работать с базой данных SQL Server версии 7.0 и выше. При этом будет создан объект Connection с именем SqlConnectionN, где N — последовательный номер (например, SqlConnection1).

• Используйте объект OleDbConnection, если вы будете работать с любым другим источником данных, или если тип источника данных впоследствии может измениться. При этом будет создан объект Connection с именем OleDbConnectionN, где N— последовательный номер (например, OleDbConnectioni).

3. Выделите объект Connection в окне дизайнера, затем в окне Properties модифицируйте значение свойства ConnectionString. Здесь вы можете установить или изменить такие свойства как DataSource, Database, UserName и так далее (вы не сможете переопределить атрибут Provider для объекта SqlConnection).

Если вы хотите переименовать объект Сonnection — измените его свойство Name.

Если параметры объекта connection должны быть переустановлены во время выполнения приложения, то необходимо сконфигурировать свойства объекта connection как динамические. Для этого в окне Properties раскройте узел DynamicProperties и щелкните в поле в правой части строки Connectionstring (рис. 1.6).

В открывшемся дополнительном окне Dynamic Propertys установите флажок Map property to a key in configuration file и нажмите кнопку OK (рис. 1.7).

 

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



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.154 (0.02 с.)