- •Інтернет-програмування
- •Тема 1. Вступ до Інтернет программування 3
- •Тема 2. Аутентифікація і авторизація користувачів 18
- •Тема 7. Практична реалізація баз даних в інтернеті 91
- •Тема 1. Вступ до Інтернет программування
- •1.1. Інтернет-додатки - основні відомості
- •1.2. Принцип роботи Web-додатків
- •1.3.Можливості asp. Net
- •1.4.Переваги asp.Net
- •1.5.Структура Web-додатків
- •1.6. Компоненти Web-форм
- •1.7. Мови програмування
- •1.8.Створення проекту Web-додатка
- •1.8.1. Створення нового Web-додатка
- •1.8.2.Керування проектом за допомогою iis
- •1.8.3.Створення віртуальних каталогів для Web-додатків
- •1.8.4. Створення каталогу subweb
- •1.8.5. Створення нового проекту у віртуальному каталозі
- •1.8.6. Розміщення елементів керування й написання коду
- •Тема 2. Аутентифікація і авторизація користувачів
- •2.1. Анонімний доступ
- •2.2. Доступ аутентифікованих користувачів
- •2.3. Аутентифікація запитів html-сторінок
- •2.4. Аутентифікація Windows
- •2.4.1. Включення аутентификации Windows
- •2.4.2. Призначення прав доступу окремим користувачам
- •2.4.3. Застосування авторизації, заснованої на ролях
- •2.4.4. Витяг ідентифікаційних даних користувача
- •2.4.5.Параметри iis і аутентификация засобами Windows
- •2.5. Аутентифікація Forms
- •2.5.1. Як задіяти аутентификацию за допомогою форм
- •2.5.2. Вибір методу аутентификации
- •2.5.3 Створення вхідної Web-форми
- •2.5.4 Аутентифікація за допомогою бази даних
- •2.5.5. Додавання користувачів у базу даних
- •2.6. Аутентифікація Passport|
- •2.6.1. Як задіювати аутентифікацію Passport|
- •Тема 3. Обробка подій
- •3.1. Події життєвого циклу Web-додатка
- •3.2. Збереження даних Web-форми
- •3.4. Події Web-форми
- •3.5. Події серверних елементів керування
- •3.6. Відключення змінної стану Session
- •3.7. Визначення моменту завершення додатка
- •Тема 4. Простори імен в Web-додатках
- •4.1. Огляд простору імен Web
- •4.2. Використання об'єкту Application|
- •4.3. Використання об'єкту Page|
- •4.4. Використання об'єкту Response|
- •Тема 5. Збереження відомостей про стан
- •5.1. Способи збереження відомостей про стан
- •5.1.1 Використання рядків запитів
- •5.1.2 Використання файлів cookie|
- •5.1.3. Використання стану відображення
- •5.1.4. Використання змінних стану Application і Session
- •5.2. Впорядкування доступу до змінних стану
- •Тема 6. Використання баз даних в додатках asp.Net
- •6.1. Основні відомості про модель доступу до даних ado|.Net
- •6.1.1. АрАрхітектура ado.Net
- •6.2. Організація взаємодії з бд
- •6.2.1 Підключення до бд
- •6.2.2. Виконання команд над наборами даних
- •6.2.3. Використання команд, що параметризуються
- •6.2.4. Використання процедур, що зберігаються
- •6.3. Від'єднані набори даних
- •6.3.1. Клас DataSet|
- •6.3.2. Використання DataSet
- •6.3.3. Клас DataAdapter|
- •6.4. Прив'язка і відображення даних
- •6.4.1. Прив'язка з одним значенням
- •6.4.2. Прив'язка з множинним значенням
- •6.5. Використання параметрів в запитах
- •6.6. Оновлення даних
- •Тема 7. Практична реалізація баз даних в інтернеті
- •7.1. Яким має бути ефективний Інтернет-магазин.
- •7.1.2 . Послідовність роботи інтернет-магазину: |
- •7.1.3. Переваги і можливості|спроможності| Інтернет-магазину
- •7.1.4. Недоліки|нестачі| Інтернет-магазину
- •7.2. Конструювання інтернет-магазину
- •7.3. Технологія asp
- •7.4. Інструменти
- •7.5. Розміщення сайту в інтернеті
- •7.6. База даних інтернет-додатка
- •7.7. Створюємо інтерфейс інтернет-магазину
- •7.7.1. Короткий список основних сторінок сайту:
- •7.7.2. Реалізація каталогу товарів
- •7.7.3. Авторизація відвідувачів|візитерів| інтернет-магазину
- •7.7.4. Оформлення замовлення в інтернет-магазині
- •7.7.5. Розробка інтернет-додатків|застосувань|
Тема 6. Використання баз даних в додатках asp.Net
Діяльність більшості Web-додатків зосереджена на витяганні, відображенні і модифікації даних. Ці завдання здаються достатньо прямолінійними, але за останнє десятиліття способи використання даних постійно мінялися. Розробники перейшли від простих клієнтських застосувань з локальними базами даних до розподільних систем, заснованих на централізованих базах даних і виділених серверах. В той же час розвивалися технології доступу до даних.
Сьогодні понад 95% всіх інформаційних систем так чи інакше використовують бази даних. Ось чому питання організації взаємодії додатка з базою даних є актуальними, а увага провідних розробників програмного забезпечення прикована до цієї проблеми. Дана лекція присвячена вивченню питань, пов'язаних з організацією взаємодії Web-приложений з базами даних.
6.1. Основні відомості про модель доступу до даних ado|.Net
ADO.NET є набором бібліотек, що входять в Microsoft .NET Framework і призначених для взаємодії з різними сховищами даних з .NET-додатків. Бібліотеки ADO.NET включають всі необхідні класи для підключення до джерел даних практично довільного формату, виконання запитів до цих джерел і отримання результату.
Крім того, безперечною перевагою ADO.NET є можливість роботи з від'єднаними джерелами даних, що є структурами, які організовують дані в оперативній пам'яті комп'ютера і працювати з якими можливо з використанням тих засобів доступу до даних, що стали вже звичними. Таким чином, ADO.NET можна використовувати як надійний, ієрархічно організований від'єднаний від джерела кеш даних для автономної роботи, що незамінне при побудові застосувань, що масштабуються, особливо орієнтованих на Web.
На сьогоднішній день ADO.NET є найбільш розвиненою технологією доступу до даних серед технологій, розроблених корпорацією Microsoft. Вона розвиває ті принципи, які були закладені в таких технологіях, як DAO і ADO, роблячи їх простішими в застосуванні, потужнішими і універсальними. В той же час ADO.NET є вже іншою технологією доступу до даних.
6.1.1. АрАрхітектура ado.Net
Оскільки ADO.NET є набором класів для організації взаємодії клієнтського застосування з базою даних, розгледимо об'єктну модель ADO.NET
На рис......показані класи, складові об'єктної моделі ADO.NET
INCLUDEPICTURE
"http://www.intuit.ru/department/internet/aspnetvsnet/10/10_01.png"
\* MERGEFORMATINET
Рис. .... Ієрархія об'єктів ADO.NET
Об'єкти, розташовані в лівій частці, називаються приєднаними і необхідні для управління з'єднанням, транзакціями, вибіркою даних і передачею змін даних в БД. Вони безпосередньо взаємодіють з базою даних.
Об'єкти, розташовані в правій частці, називаються від'єднаними. Вони дозволяють працювати з даними автономно. Від'єднані об'єкти не взаємодіють безпосередньо з приєднаними для отримання даних з БД. Точніше, можна сказати, що вони не взаємодіють зі всіма об'єктами лівої частки ієрархії об'єктів. І хоча питання заповнення даними від'єднаних об'єктів обговорюватимуться пізніше, можна сказати, що однією з форм взаємодії цих двох груп є використання об'єктом DataAdapter об'єкту DataSet для заповнення останнього набором даних, що витягують безпосередньо з БД.
Одній з основних ідей, лежачих в основі ADO.NET, є наявність постачальників даних.
Постачальник даних - це набір класів, призначених для взаємодії з сховищем даних певного типа. За рахунок цього модель ADO.NET є надзвичайно гнучкою і розширюваною. Розгледимо рівні моделі постачальників ADO.NET.
Додаток .NET взаємодіє з базою даних за допомогою постачальників даних. Кожен постачальник даних може забезпечувати доступ тільки до бази даних певного формату. Так, для доступу до БД Microsoft SQL Server використовується постачальник SQL Server для .NET, для доступу до БД Oracle - постачальник Oracle для .NET і так далі Названі бази даних є одними з найпоширеніших у всьому світі, тому постачальники даних для них виділені в окремі елементи моделі ADO.NET; проте існує безліч баз даних іншого формату, до яких необхідно здійснювати доступ з додатка .NET. Для цього можуть застосовуватися постачальники даних OleDb для .NET або ODBC для .NET, що забезпечують доступ до будь-яких даних, для яких існує драйвер OleDb або ODBC відповідно.
При побудові додатка, що використовує доступ до даних, необхідно спочатку спробувати знайти "рідного" постачальника даних .NET Коли ж такого не існує, можна скористатися OleDb, якщо існує відповідний драйвер для джерела даних, до якого встановлюється підключення. Так як. технологія OleDb існує достатньо давно, створено багато драйверів для різних джерел даних, що підтримують її. Якщо в системі не встановлений відповідний драйвер OleDb, його можна спробувати знайти на сайті розробника тієї бази даних, до якої здійснюється доступ, або на сайті Microsoft.
Те ж саме справедливо і для технології ODBC. У ряді випадків існує декілька альтернативних варіантів організації доступу до даних певного формату. Наприклад, доступ до джерела даних на основі SQL Server можна організувати використовуючи або постачальник SQL Server для .NET, або постачальник OleDb. Проте завжди переважно використовувати той постачальник даних, який спеціально призначений для забезпечення доступу до конкретного джерела даних, оскільки він враховує його особливості.
Кожен постачальник .NET реалізує однакові базові класи - Connection, Transaction, DataAdapter, Command, Parameter, DataReader імена яких залежать від постачальника. Наприклад, у постачальника SQL Server існує об'єкт SqlDataAdapter, у постачальника OleDb — OleDbDataAdapter і так далі
У кожного постачальника даних існує власний простір імен. Хоча всі постачальники відносяться до простору імен System.Data, кожен з них містить свій підрозділ цього простору, який містить об'єкти, специфічні для даного постачальника. Наприклад, об'єкт SqlDataAdapter знаходиться в просторі імен System.Data.SqlClient.
Всі постачальники даних .NET реалізують однакові базові функції, тому код, що створюється для доступу до даних, виглядає приблизно однаково незалежно від постачальника. Це означає, що, розглядуючи використання інтерфейсів окремого постачальника, ми фактично розглядуємо можливість використання цих же інтерфейсів застосовно і до інших постачальників даних.
Розгледимо їх детальніше об’єкти доступу до даних.
Об'єкт Connection - представляє з'єднання з джерелом даних. З його допомогою можна задати типа джерела даних, його місцезнаходження, параметри доступу і ряд інших атрибутів. Перш ніж почати взаємодію з джерелом даних, необхідно встановити підключення до нього за допомогою об'єкту Connection.
Об'єкт Command - представляє запит до джерела даних, виклик процедури, що зберігається, або прямий запит на повернення вмісту конкретної таблиці. Як відомо, існує декілька типів запитів. Частку з них повертають дані, витягувані з джерела даних, інші змінюють записи, треті, - управляють структурою БД. За допомогою об'єкту Command можливо виконати будь-який з перерахованих типів запитів. Відмінності в поведінці об'єкту Command починають виявлятися тоді, коли необхідно виконати той або інший запит. Так, наприклад, при необхідності виконання запиту, що не повертає запису, необхідно використовувати метод ExecuteNonQuery об'єкту Command, а при витяганні даних з БД - метод ExecuteReader, який, у свою чергу, повертає об'єкт DataReader, що дозволяє проглядати отримані в результаті запиту записи.
Об'єкт DataReader призначений для максимально швидкої вибірки і проглядання записів, що повертаються запитом. Проте він дозволяє проглядати весь результуючий набір записів шляхом переміщення від одного запису до іншої і, таким чином, проглядати тільки одну запис за раз. Крім того, DataReader не має можливості для оновлення значень записів і тому може працювати в режимі "тільки для читання", за рахунок чого володіє високою продуктивністю.
Об'єкт Transaction дозволяє здійснювати угрупування записів в логічну одиницю роботи, званою транзакцією. Транзакція логічно об'єднує декілька різних дій, пов'язаних з маніпулюванням даними, в єдине ціле. В процесі виконання дій, здійснюваних в рамках транзакції, СУБД зазвичай кэширует зміни, що вносяться цими діями в дані до моменту завершення транзакції. Це дозволяє проводити відміну будь-яких змін, виконаних в рамках транзакції, у випадку, якщо хоч би одна з дій транзакції завершилася невдало.
Об'єкт Parameter дозволяє вводити в запит елемент, значення якого може бути задане безпосередньо перед виконання запиту. За рахунок цього відпадає необхідність кожного разу змінювати текст самого запиту.
Об'єктом DataAdapter є сполучна ланка між від'єднаними об'єктами ADO.NET і базою даних. З його допомогою здійснюється заповнення таких об'єктів, як DataSet або DataTable, значеннями, отриманими в результаті виконання запиту до бази даних, для подальшої автономної роботи з ними. Окрім цього DataAdapter реалізує ефективний механізм виконання оновлення даних, що зберігаються в базі даних, змінами, внесеними до даних об'єктів DataSet і DataTable.
Об'єкт DataTable дозволяє проглядати дані у вигляді наборів записів і стовпців. Фактично, він є аналогом таблиці БД, розміщеним в пам'яті. Гідністю такої організації є можливість автономної роботи з даними. Це означає, що після встановлення з'єднання з базою даних, читання даних і заповнення ними об'єкту DataTable можна відключитися від джерела даних і продовжувати працювати з ним в автономному режимі. Така можливість надзвичайно корисна при організації Web-приложений, які мають бути такими, що добре масштабуються і орієнтовані на многопользовательский режим роботи. При цьому, проте, виникають і побічні ефекти, один з яких пов'язаний з тим, що людина, що працює з автономним набором даних, не може побачити змін, що вносяться до даних у цей момент іншими користувачами.
Об'єктом DataColumn є стовпець об'єкту DataTable. Набор же всіх стовпів об'єкту DataTable є колекцією Columns. За допомогою цього об'єкту можна дістати доступ до значення осередку відповідного стовпця.
Об'єкт DataRow є рядком об'єкту DataTable. Набор всіх рядків цього об'єкту є колекцією Rows. DataRow дуже часто використовується для доступу до значення конкретного поля певного запису. При цьому застосовується властивість Item.
Об'єктом DataSet є від'єднаний набір даних, який може розглядуватися як контейнер для об'єктів DataTable. DataSet дозволяє організовувати усередині себе структуру, повністю відповідну реальній структурі таблиць і зв'язків між ними в БД. Це зручно у тому випадку, коли при роботі з базою даних необхідні дані з різних таблиць. В цьому випадку замість того, щоб багато разів звертатися до сервера і вибирати дані з однієї таблиці за раз, можна помістити всі дані в об'єкт DataSet, а потім передати його клієнтському застосуванню. DataSet є дуже потужним інструментом для роботи з від'єднаними наборами даних. Всі зміни, які вносяться до даних, що зберігаються в DataSet кэшируются в об'єктах DataRow. Коли виникає необхідність передачі змін з DataSet в БД, можливо здійснити передачу тільки змінених даних, замість того щоб передавати всі дані об'єкту, і це значно знижує об'єм даних, що передаються між клієнтським комп'ютером і сервером.
Об'єктом DataRelation є опис зв'язків між таблицями реляційної бази даних. Він надається об'єктом DataSet і дозволяє організовувати взаємозв'язку між таблицями від'єднаного набору даних об'єкту DataSet. Об'єкт DataRelation виконує функцію, аналогічну тій, яку виконують зв'язки, визначувані в СУБД між таблицями при створенні структур даних. Це стосується і дотримання принципів посилальної цілісності інформації. Наприклад, DataRelation можна набудувати так, щоб зміни значення первинного ключа батьківської таблиці автоматично передавалися (каскадували) дочерним записам, а при видаленні запису в батьківській таблиці автоматично віддалялися записи в дочірніх таблицях, пов'язаних з нею.
Об'єкт DataView призначений для організації можливості проглядання вмісту DataTable різними способами. Це відноситься до таких операцій, як сортування і фільтрація записів. За допомогою DataView допускається проглядати вміст одного об'єкту DataTable з різними установками фільтрації і сортування. Для цього необхідно використовувати два різні об'єкти DataView, пов'язаних з одним об'єктом DataTable. Така можливість виключає необхідність зберігання одного набору даних в двох різних структурах.
