Огляд технології




Введення.


Багато програмістів, що працюють з базами даних на платформах Microsoft,
могли оцінити простоту і зручність технології ADO – ActiveX Data Objects.
Інтутітівно-зрозумілий інтерфейс і логічний набір об'єктів разом із простотою
програмування заслужено отримали визнання програмістів. Незважаючи на це,
разом з новою платформою. NET Microsoft представляє і нове покоління засобів
доступу до баз даних – ADO.NET. Cтремітельное розвиток веб додатків викликало
необхідність переглянути методи роботи з джерелами даних, краще
адаптувати їх до специфіки додатків. Непередбачуваний зростання числа клієнтів
Інтернет сайтів змушує розробників переходити від кліентсерверной до
three-tier архітектурі, що часто породжує непереборні проблеми. Бази даних
не здатні підтримувати необмежене число активних сполук, обмежуючи
доступність сайту і приносячи збитки. Брандмауери можуть бути перешкодою для передачі
двійкових даних між вузлами. ADO.NET покликане вирішити ці та інші проблеми і
разом з тим зберегти зручність і простоту програмування.


Переваги та нововведення в ADO.NET


Використання роз'єднаною моделі доступу до даних.


У клієнт-серверних додатках традиційно використовується технологія доступу
до джерела даних при якій з'єднання з базою підтримується постійно.
Однак після широкого поширення додатків, орієнтованих на Інтернет,
було виявлено деякі недоліки такого підходу. Спробуємо виявити деякі з
них.


З'єднання з базою даних вимагають виділення системних ресурсів, що може
бути критично при великому навантаженні сервера. Хоча постійне з'єднання дозволяє
дещо прискорити роботу програми, загальний збиток від розтрати системних
ресурсів зводить перевагу нанівець.


Специфіка веб додатків не дозволяє серверу в кожен момент часу знати,
що необхідно користувачу. Тобто до наступного запиту сервер не має
подання, чи потрібно ще підтримувати з'єднання.


Досвід розробників показав, що додатки з постійним з'єднанням з
джерелом даних надзвичайно важко піддаються масштабуванню.


Хоча існують і інші недоліки, наведені, на мій погляд, найбільш
істотні і найімовірніше зустрічалися читачеві. Всі ці проблеми народжуються
постійним з'єднанням з базою даних і вирішуються в ADO.NET, де використовується
інша модель доступу. Тепер з'єднання встановлюється лише на той короткий
час, коли необхідно проводити операції над базою даних.


Слід визнати, що нова технологія іноді все ж таки програє
традиційною. Для цих випадків рекомендовано (не тільки мною, а й
Microsoft) використовувати ADO. Прикладами таких додатків служать програми
проводять часті і об'ємні зміни змісту записів – замовлення квитків,
наприклад (докладніше про причини непридатності роз'єднаною моделі в цьому випадку
див. наступний розділ).


Зберігання даних в об'єктах DataSet.


При роботі з базою даних нам найчастіше доводиться працювати не з однією, а
кількома записами. Більш того, дані ці можуть збиратися з різних
таблиць. У роз'єднаною моделі доступу до бази даних не має сенсу з'єднуватися
і джерелом даних при кожному зверненні. Виходячи з цього, представляється
логічним зберігати декілька рядків і звертатися до них при необхідності. Для цих
цілей і використовується DataSet.


DataSet представляє собою, по суті, спрощену реляційну базу даних і
може виконувати найбільш типові для таких баз даних операції. Тепер, у
відміну від Recordset ми можемо зберігати в одному DataSet відразу декілька таблиць,
зв'язку між ними, виконувати операції вибірки, видалення і оновлення даних.
Безумовно, роз'єднана модель не дозволяє постійно відстежувати зміни в
базі даних, вироблені іншими користувачами. Це може призвести до помилок у
таких додатках, де інформація повинна оновлюватися кожен момент – замовлення
квитків або продаж цінних паперів. Однак у будь-яку секунду може бути
отримана свіжа інформація з бази даних через виклик методу FillDataSet. Таким
чином, DataSet залишається надзвичайно зручним для самого широкого класу
додатків: коли необхідно отримати дані з бази і як-небудь обробити
їх.


Детальніше DataSet і його програмування ми розглянемо в розділі статті,
присвяченому практичного застосування ADO.NET.


Глибока інтеграція з XML.


Все більш широко поширюється XML грає найважливішу роль в ADO.NET і
приносить ще кілька переваг у порівнянні з традиційним підходом.


Зауважимо для початку, що практично будь-XML файл може бути використаний як
джерело даних і на його основі може бути створений DataSet. точно також при
передачі даних між компонентами або збереження їх у файл використовується
XML.


Програміст, що працює з ADO.NET не обов'язково повинен мати досвід роботи з
XML або пізнання в цій мові. Всі операції залишаються прозорими для
розробника.


Так як XML має текстове представлення, це дозволяє передавати його по
протоколах типу HTTP через брандмауери. Справа в тому, що системи захисту зазвичай
налаштовані на фільтрацію двійкової інформації, текстова само легко пропускається,
що полегшує створення розподілених додатків.


XML це промисловий стандарт, підтримуваний практично
будь-якої сучасної платформою, що дозволяє передавати дані будь-якого компонента,
вміє працювати з XML, і виконується під будь-якою операційною системою.


При передачі великих обсягів інформації через COM виникає
проблема приведення типів даних, так як COM підтримує лише обмежений їх
набір. Дійсно, COM маршаллінг може вимагати тривалої обробки, що
негативно позначається на продуктивності програми. XML ж підтримує
необмежене число типів і не вимагає їх конверсії, що дозволить прискорити
процес передачі даних.


Практичне застосування ADO.NET


Введення.


Уміння застосувати на практиці теоретичні знання примножує їх ціну,
тому ми присвячуємо прикладів роботи з ADO.NET окремий розділ, де розглянемо
найбільш типові завдання, розбивши їх на окремі блоки: з'єднання з джерелом
даних, вибірка, видалення та оновлення інформації, висновок вмісту на екран,
робота з XML і т.д. В якості платформи для побудови інтерфейсу буде
використана ASP.NET, а як мова програмування узятий C #.


Managed Providers.


ADO.NET підтримує два типи джерел даних – SQL Managed Provider і ADO
Managed Provider. SQL Managed Provider застосовується для роботи з Microsoft SQL
Server 7.0 і вище, ADO Managed Provider – для всіх інших баз даних.


SQL Managed Provider – працює зі спеціального протоколу, званому
TabularData Stream (TDS) і не використовує ні ADO, ні ODBC, ні яке-небудь ще
технологію. Орієнтований спеціально на MS SQL Server, протокол дозволяє
збільшити швидкість передачі даних і тим самим підвищити загальну продуктивність
додатки.


ADO Managed Provider – призначений для роботи з довільною базою даних.
Проте за рахунок універсальності є програш у порівнянні з SQL Server
Provider, так що при роботі з SQL Server рекомендовано використовувати
спеціалізовані класи. У даному огляді ми торкнемося ADO Managed Provider лише
мигцем, вказавши тільки існуючі незначні відмінності, оскільки найбільш
вживаної базою даних представляється SQL Server 7.0 або 2000, а різниця
полягає, в основному, в іменуванні.


Для роботи з нашими прикладами вам знадобиться створити базу даних dotSITE і
виконати наступні скрипти для створення структури та мінімального
наповнення.





if exists (select * from sysobjects
where id = object_id (N "[dbo]. [Articles]") and OBJECTPROPERTY (id, N "IsUserTable") = 1)
drop table [dbo].[Articles]
GO

if exists (select * from sysobjects
where id = object_id (N "[dbo]. [Authors]") and OBJECTPROPERTY (id, N "IsUserTable") = 1)
drop table [dbo].[Authors]
GO

CREATE TABLE [dbo].[Articles] (
[Theme] [char] (50) NOT NULL ,
[Author] [int] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Authors] (
[AuthorID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [char] (50) NULL ,
[SirName] [char] (50) NULL
) ON [PRIMARY]
GO

insert into Authors (Name, SirName) values ("Michael", "Kondratiev")
insert into Authors(Name,SirName) values (“Andrew”,”Filev”)
insert into Authors(Name,SirName) values (“Alex”,”Utkin”)

insert into Articles (AuthorID, Theme) values (1, "ASPNET Authentication")
insert into Articles (AuthorID, Theme) values (2, "ASPNET Overview")
insert into Articles(AuthorID,Theme) values (3,”Soap”)

Тепер, коли ми створили базу даних, можна
переходити безпосередньо до прикладів. У всіх випадках, крім особливо обумовлених
буде використовуватися SQL Managed Provider.


Встановлення з'єднання з базою даних:


Щоб встановити з'єднання з нашейбазой даних слід виконати наступний
код:




 SQLConnectionmyConnection = newSQLConnection ("server = localhost; uid = sa; pwd =; database
= dotSITE");
myConnection.Open();
Як видно, при використанні SQL Managed
Provider не вказується DSN. Для роботи з довільною базою даних рядок
з'єднання що показують як в ADO. У цьому випадку використовуються ADO орієнтовані
класи: ADOConnection, ADOCommand, ADODataReaderі ін

Важливо! Не забудьте імпортувати відповідні простору імен в
Залежно від використовуваного Managed Provider. У ASP.NET це буде
виглядати:




 <% "ДЛЯ ADO Managed Provider%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>

<% "ДЛЯ SQL Managed Provider%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>


Вибірка, видалення і оновлення даних:


Для виконання операцій над базою даних використовується клас SQLConnection.
При його створенні ми передаємо рядок, що містить SQL скрипт і ім'я з'єднання. У
нашому випадку це буде:




 ADOCommand myCommand = new ADOCommand ("select * from Authors", myConnection);
Після цього, якщо це операція вибірки можна
використовувати Dataset для передачі до нього даних:




DataSet ds = new DataSet();
myCommand.FillDataSet(ds, "Authors");
Якщо ж вироблялося видалення, оновлення або
вставка, то використовується метод ExecuteNonQuery (). При цьому також потрібно відкрити,
а після виконання дій закрити з'єднання. Наступний фрагмент коду
іллюстріркет це:




myCommand.ActiveConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.ActiveConnection.Close();
Тепер зберемо все це разом і продемонструємо
приклад aspx сторінки, що виводить на екран вміст нашої бази даних. При цьому
використовується серверний контрол DataGrid:




<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL"%>
<html>
<script language="C#"runat="server">
protectedvoidPage_Load(ObjectSrc,EventArgsE){
SQLConnectionmyConnection = newSQLConnection ("server = localhost; uid = sa; pwd =; database = dotSITE");
SQLDataSetCommand myCommand = new SQLDataSetCommand ("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.FillDataSet(ds, "Authors");
MyDataGrid.DataSource = ds.Tables ["Authors"]. DefaultView;
MyDataGrid.DataBind();
}

</script>

<body>

<h3>
<font face="Verdana">
Висновок результатів вибірки на екран </ font> </ h3>

<ASP: DataGrid id = "MyDataGrid" runat = "server"
Width="700"
BackColor="red"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="green"
MaintainState="false"
/>

</body>
</html>

Останнє, що ще не було продемонстровано –
заповнення DataSet з XML файлу:




<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>

<html>
<script language="C#" runat="server">

protected void Page_Load(Object Src, EventArgs E)
{
DataSet ds = new DataSet();

FileStream fstream = new
FileStream (Server.MapPath ("XMLData.xml"), FileMode.Open, FileAccess.Read);
StreamReader STRreader = new StreamReader(fstream);
ds.ReadXml(STRreader);
fstream.Close();

DataView Source = new DataView(ds.Tables[0]);

MySpan.InnerHtml = Source.Table.TableName;
MyDataGrid.DataSource = Source;
MyDataGrid.DataBind();
}

</script>

<body>

<h3>
<font face= "Verdana"> Дані з XML:
<span runat="server" id="MySpan"/> </ font> </ h3>

<ASP: DataGrid id = "MyDataGrid" runat = "server"
Width="900"
BackColor="red"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="green"
MaintainState="false"
/>

</body>
</html>


Як видно, є невеликі відмінності від роботи з DataSet, що заповнюється з SQL БД,
полягають в основному у використанні FileStreamObject. Однак, на мій
погляд, текст досить прозорий і не потребує коментарів.


Підіб'ємо підсумок. ADO.NET представляє нову структуру об'єктів і нову модель
доступу до даних, що дозволяє поліпшити продуктивність найбільш часто
зустрічаються додатків. Це дає нам підстави пророкувати ADO.NET як основну
технологію доступу даним у веб додатках.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*