- •Інтернет-програмування
- •Тема 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. Розробка інтернет-додатків|застосувань|
Тема 3. Обробка подій
3.1. Події життєвого циклу Web-додатка
Web-додатки живуть, поки в них є хоч один активний сеанс, а Web-форми живуть буквально миттєвості. Життя Web-додатка складається з наступних етапів:
Браузер запитує його початкову сторінку.
У гру вступає Web-сервер, що запускає частину коду додатка, яка виконується (DLL), яка і формує відгук.
Частина коду, яка виконується, створює екземпляр запитаної Web-форми, генерує HTML-текст відгуку й посилає його браузеру, після чого DLL додатку знищує створений їй екземпляр Web-форми у себе на сервері.
Після одержання браузером HTML, згенерованого додатком, користувач може заповнювати текстові поля форми, установлювати потрібні перемикачі й виконувати інші дії, поки він не спровокує подію, що викликає відправлення форми на сервер (наприклад, клацнувши кнопку).
Ця подія змусить браузер відіслати дані сторінки (стан її відображення) назад на сервер для обробки події.
Одержавши стан відображення, сервер створює новий екземпляр Web-форми, заповнює його даними стану відображення і обробляє всі події.
Завершивши обробку, сервер повертає браузеру отриманий у результаті HTML і знищує створений ним екземпляр Web-форми.
Закінчивши роботу, користувач закриває браузер або переходить на інший Web-сайт, у результаті сеанс цього користувача завершується.
Якщо з додатком більше ніхто не працює (тобто сеансів більше немає), він завершується. Однак це не завжди відбувається відразу. ASP.NET керує пам'яттю за допомогою збору сміття. При використанні цього механізму сервер періодично перевіряє посилання об'єктів. Виявивши об'єкт, що більше не використовується, сервер знищує його, звільняючи зайняту їм пам'ять. Як наслідок, не можна сказати напевно, коли саме спрацює подія Aplication_End.
3.2. Збереження даних Web-форми
Оскільки Web-форми живуть дуже недовго, ASP.NET вживає спеціальні заходи для збереження даних, уведених в елементи керування Web-форми. З кожним запитом на сервер відправляються всі дані, які було введено в елементи керування, де вони записуються в елементи керування під час обробки події Page_Init. Тепер ці дані будуть доступні оброблювачеві події Page_Load.
Дані, які ASP.NET зберігає між передачею запитів, називаються станом відображення (view state) Web-форми. Стан відображення Web-форми доступно тільки усередині цієї Web-форми. Щоб зробити уведені в Web-форму дані доступними іншим Web-формам додатка, необхідно зберегти їх у змінних станів (в об'єктах Application або Session). Ці об'єкти відрізняються областю дії:
змінні станів на основі об'єкта Application доступні всім користувачам додатка, тому їх можна розглядати як глобальні змінні, які доступні декільком користувачам. Ці змінні дозволяється читати і записувати з будь-яких сеансів;
змінні станів на основі об'єкта Session доступні в межах одного сеансу (тільки одному користувачеві). Змінні Session нагадують глобальні змінні стандартних Windows-додатків. Ці змінні станів доступні тільки в поточному сеансі.
Змінні Application і Session оголошуються інакше, ніж звичайні. Змінні станів створюються кодом «на льоту». Наступний код підраховує, скільки разів клацнули кнопку, і записує результат у змінну стану Session.
// Код з файлу Global.asax.es
protected void Session_Start(Object sender, EventArgs e)
{
// Ініціалізувати змінну стану Clicks Session
Session["Clicks"] = 0;
}
// Цей код узятий з файлу StateNEvents.asax.cs
private void Button1_Click(object sender, System. EventArgs e)
{
// Збільшити число натискань
Session["Clicks"] = (int)Session["Clicks"] + 1;
// Показати число натискань
Response.Write("Number of clicks: " + Session["Clicks"] + "<br>");
}
У змінних станів можна зберігати дані будь-якого типу, від звичайних цілочислених значень до об'єктів. Оскільки змінні станів відносяться до глобальних, необхідно виробити стратегію їх використання в додатку.
Увага! Як правило, у програмах на Visual C# змінні станів Application треба ініціалізувати перед використанням. Наприклад, перед перетворенням типів (int)Session[«Clicks»] змінну стану Clicks необхідно ініціалізувати, у противному випадку під час виконання ви одержите повідомлення про помилку: «Value null was found where an instance of an object was required».
3.3. Події об’єктів Application і Session
Код, що обробляє події об'єктів Application і Session, можна помістити у файл Global.asax. Події Application будуть використовуватися для ініціалізації об'єктів і даних, які повинні бути доступними всім поточним сеансам Web-додатка. Події Session служать для ініціалізації даних, які потрібно зберігати в межах одного сеансу, не роблячи їх доступними іншим сеансам. У таблиці перераховані оброблювачі різних подій Application із вказівкою обставин, при яких вони викликаються.
Таблиця .... Оброблювачі подій Application
Ім'я |
Коли викликається |
Application_Start |
Перший користувач відкрив початкову сторінку Web-додатка |
Application_End |
З додатком більше ніхто не працює |
Application_BeginRequest |
На початку кожного запиту до сервера. Запит відбувається щоразу, коли браузер відкриває яку-небудь сторінку додатка |
Application_EndRequest |
Наприкінці кожного запиту до сервера |
Session_Start |
Новий користувач відкрив початкову сторінку додатка |
Session_End |
Користувач покинув додаток, закривши браузер, або наступив тайм-аут по бездіяльності |
У додатках Web Forms сеанс (session) представляє унікальний екземпляр браузера. Якщо користувач запустить у себе на комп'ютері кілька екземплярів браузера і відкриє в кожному з них сторінки Web-додатка, для кожного екземпляра браузера буде створений окремий сеанс.
Щоб побачити події Application і Session у дії, додайте у файл Global.asax проекту Web Forms наступний код:
protected void Application_Start(Object sender, EventArgs e)
{
// Оголосити змінні станів Application
Application["AppCount"] = 0;
Application["SessCount"] = 0;
// Зареєструвати запуск додатка.
Application["AppCount"] = (int)Application["AppCount"] + 1;
}
protected void Session_Start(Object sender, EventArgs e)
{
// Підрахувати сеанси
Application["SessCount"] = (int)Application["SessCount"] + 1;
// Показати число екземплярів додатка.
Response.Write("Number of applications: " + Application["AppCount"] + "<br>");
// Показати число сеансів.
Response.Write("Number of sessions: " + Application["SessCount"] + "<br>");
}
protected void Session_End(Object sender, EventArgs e)
{
// Зменшити число сеансів.
Application["SessCount"] = (int)Application["SessCount"] - 1;
}
Щоб побачити, як працюють ці події, виконайте попередній код, потім запустіть новий екземпляр браузера і відкрийте в ньому свій Web-додаток, набравши його адресу. З кожним новим екземпляром браузера число сеансів збільшується, але число додатків залишається рівним 1.
Зверніть увагу, що внутрішні об'єкти, такі, як Session і Response, не доступні на момент події Application Start. Щоб задіяти ці об'єкти, прийдеться дочекатися подій, які відбуваються при їхньому створенні.
