- •Інтернет-програмування
- •Тема 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. Розробка інтернет-додатків|застосувань|
7.5. Розміщення сайту в інтернеті
Інтернет-додаток|застосування| потрібно розмістити в інтернеті. Комплекс послуг з розміщення сервера, забезпечення його роботи, організація з'єднання|сполуки| з|із| Інтернетом називається «хостингом».
Залежно від ваших потреб і фінансових можливостей|спроможностей| ви можете вибрати відповідний|придатний| варіант хостингу.
Безкоштовний хостинг
Переваги:
безкоштовний (хоча це швидше|скоріше| недолік|нестача|);
он-лайнова реєстрація (зазвичай|звично| на це йде|вирушає| декілька хвилин);
дозволяє економити на початковій стадії проекту, особливо, коли потрібний тільки|лише| статичний сайт;
не вимагає реєстрації свого доменного імені.
Недоліки|нестачі|:
ім'я сайту, рідко буває легким для читання і таким, що добре запам'ятовується. Наприклад, таке: www.irk.ru/~[ваше ім'я] ім'я].boom.ru (домен 3 рівня);
обмежена функціональність;
неконтрольоване включення|приєднання| на ваших сторінках чужої реклами (замовникові може не сподобатися реклама порноресурсів| на своєму сайті);
можлива повільна або нестійка робота системи.
Платний хостинг
Достоїнства:
реєстрація домена другого рівня (можна підібрати зрозуміле ім'я, що запам'ятовується, для сайту);
доступ до великого числа системних і прикладних бібліотек, що реалізовують ряд|лаву| корисних сервісних функцій;
контрольовані вами сервіси сайту;
можливість|спроможність| застосовувати майже всі передові технології.
Недоліки|нестачі|
регулярні платежі, об'єм|обсяг| яких залежить від рівня сервісу, що надається.
При виборі варіанту хостингу і хостинг-провайдера переконайтеся в тому, що на сервері| підтримується технологія ASP| і забезпечується робота з|із| SQL-сервером| або MDB-файлами|.
7.6. База даних інтернет-додатка
Інтернет-додаток|застосування| використовує бази даних для зберігання інформації. Інформація може оброблятися, зберігатися і витягуватися з|із| бази даних. У базі даних можна зберігати добре структуровану інформацію. Таку, як: список користувачів, список замовлень, прайси. Проте|однак|, цим вид інформації, що зберігається, не обмежується. У сучасних інформаційних системах в базах даних зберігаються і тексти, і зображення, і навіть виконувані програми або скрипти. Якщо буде потрібно, то в своєму застосуванні ви можете зберігати в базі даних інструкції і опису товарів.
Ви можете використовувати MS| SQL| Server| або сховище у вигляді MDB-файлу| Access|. Надалі ми орієнтуватимемося на MS| SQL| Server|. Для MDB-файлів| можливі відмінності|відзнаки| не принципові і полягають в незначних відмінностях|відзнаках| в синтаксисі SQL-запитів| і параметрах підключення до бази даних.
У цій статті ми визначимо мінімально необхідну структуру бази даних для нашого інтернет-магазину. Структура бази даних залежить від тих функціональних завдань|задач|, які повинен виконувати Інтернет-додаток|застосування|.
Давайте спробуємо визначити функціональні завдання|задачі|, що вирішуються|рішають| нашим застосуванням.
Спочатку визначимо категорії користувачів, що працюють з|із| магазином. Це можуть бути:
анонімні відвідувачі|візитери| (користувачі, які не реєструвалися при вході в магазин);
покупці (користувачі, зареєстровані в магазині);
менеджери (користувачі з|із| розширеними правами).
Анонімні відвідувачі можуть "ходити" по магазину і "дивитися" товари.
Покупці можуть здійснювати покупки в магазині, але при цьому вони повинні надати деякий мінімум інформації про себе для того, щоб менеджери магазина могли уточнити і погоджувати з покупцем деталі по доставці покупки. Покупець може бути зареєстрованим (постійним) або разовим.
Разовий покупець може оформити разове замовлення.
Зареєстрований покупець може не лише оформляти замовлення, але і проглядати історію і стан своїх замовлень. Більш того, для постійного покупця заголовні реквізити замовлення заповнюються додатком автоматично (ім'я покупця, контактні реквізити).
Менеджери магазина повинні мати можливість додавання товарів в каталог (виставити товар на вітрину), редагувати назви і ціни товарів, проглядати списки замовлень і список зареєстрованих покупців.
Кожен магазин має каталог товарів, виставлених на продаж. У каталозі перераховуються назви товарів і їх ціни. Для нашого магазина цього вистачає. Проте в реальних електронних магазинах в каталозі зазвичай є описи товарів і їх зображення.
Всі покупки в магазині оформляються за допомогою замовлень. Замовлення - це електронний документ, в якому є дві частки: заголовок (дата замовлення, реквізити покупця) і вміст замовлення (перелік замовлених товарів і їх ціни).
Для кожного виду інформації створюється одна або декілька таблиць. Кожна таблиця складається з полів. Перелік, назви і типи полів визначаються призначенням таблиці.
Ми рекомендуємо в кожній таблиці використовувати спеціальні службові поля:
Id - ідентифікатор запису (використовується в первинних ключах для адресації записів);
Actual - ознака актуальності запису (використовується для розділення актуальних і неактуальних даних);
UpdateDate - дата зміни запису (може використовуватися для сортування записів в хронологічному порядку);
UpdateUser - ідентифікатор користувача, що створив або змінив запис (використовується для авторизації факту зміни запису).
Службовим полям доцільно дати імена однакові у всіх таблицях. В цьому випадку вам буде простіше надалі розбиратися з|із| кодом додатка|застосування|, супроводжувати і змінювати|зраджувати| його.
Призначення поля, в загальному випадку, має бути зрозуміле з його назви. Наприклад, Users - таблиця користувачів, Wares – каталог товарів.
Хорошою|доброю| практикою є|з'являється| використання спеціальних префіксів в назвах або використання назв, що складаються з декількох слів. При цьому перше слово повинне означати суть|єство| інформаційного об'єкту, а друге слово (або решта слів) - уточнення.
Наприклад, якщо Ware – товар, а Cost – ціна, то полю «ціна товару» можна привласнити ідентифікатор WareCost.
Звичайно, використання цих нехитрих правил, не є|з'являється| обов'язковим, але|та| дозволяє значно полегшити вам життя при подальшій|дальшій| розробці і супроводі програмного|програмового| продукту.
Таблиці
Wares - таблиця каталога товарів містить:
службові поля (Id, Actual, UpdateDate, UpdateUser);
WareName - назва товару;
WareCost - вартість товару;
WareHouse - ознака наявності або відсутності товару на складі.
Записи в каталозі товарів зберігаються вічно або, принаймні, до тих пір, поки є хоч одне замовлення, в якому присутній відповідний товар.
Якщо який-небудь товар потрібно прибрати з магазина, то для цього можна встановити в полі Actual ознаку неактуальності запису. Тоді, при відображенні каталогу покупцеві, можна виключати із списку такі товари.
Orders і OrderRecords - містять інформацію про замовлення. Дві таблиці потрібно для того, щоб розділити заголовки замовлень і списки замовлених товарів. В цьому випадку забезпечується мінімізація об'ємів бази даних і підвищується швидкість обробки інформації.
Orders – таблиця заголовків замовлень містить загальну інформацію про замовлення:
службові поля (Id, Actual, UpdateDate, UpdateUser);
OrderDate – дата замовлення;
ClientId – ідентифікатор запису зареєстрованого користувача в таблиці Users;
ClientName – контактна особа, з якою повинен зв'язатися менеджер при виконанні замовлення;
ClientAddress – адреса, куди потрібно доставити замовлення;
ClientPhone – телефон;
ClientEMail – адреса електронної пошти;
OrderStatus – поточний стан замовлення.
Призначення полів очевидне і не вимагає пояснень. Окрім поля OrderStatus. У цьом у полі можна зберігати код поточного стану замовлення. Наприклад: 0 – створюється, 3 – відправлений менеджерові, 5 – обробляється, 7 – виконаний. В цьому випадку можна організувати подібність document workflow (процес документообігу). Менеджер знатиме чи можна починати обробку замовлення (раптом клієнт сьогодні не закінчив створення замовлення і вирішив продовжити цей процес завтра). З іншого боку, клієнт знатиме чи прийняв менеджер магазину замовлення для виконання.
Для анонімних покупців поле ClientId містить значення NULL.
Для зареєстрованих покупців поля ClientName, ClientAddress, ClientPhone, ClientEMail заповнюються системою автоматично на підставі вмісту реєстраційної картки покупця.
OrderRecords – таблиця вмісту замовлень:
службові поля (Id, Actual, UpdateDate, UpdateUser);
OrderId – ідентифікатор запису заголовка замовлення в таблиці Orders;
WareId – ідентифікатор запису товарної позиції в таблиці Wares;
WareCost – вартість товару;
WareCount – кількість.
За допомогою поля OrderId забезпечується зв'язок між таблицями Orders і OrderRecords.
Поле WareId зв'язує запис замовлення з таблицею Wares.
Поле WareCost містить вартість одиниці даного товару у момент оформлення замовлення. Якщо менеджер в майбутньому поміняє вартість товару в каталозі, то на раніше оформлених замовленнях це не відіб'ється. Загальні суми по кожній позиції і за замовленням в цілому зберігатися не повинні, оскільки вони елементарно розраховуються в процесі відображення замовлення.
Users – таблиця користувачів зберігає інформацію про зареєстрованих покупців і менеджерів електронного магазина.
службові поля (Id, Actual, UpdateDate, UpdateUser);
LogonName – реєстраційне ім'я;
LogonPassword – пароль;
ClientName – ФІО користувача і назва компанії;
ClientAddress – адреса;
ClientPhone – телефон;
ClientEMail – електронна адреса;
UserLevel – тип користувача.
Реєстраційне ім'я і пароль потрібні для авторизації відвідувача|візитера| при роботі з|із| магазином.
Поле UserLevel використовується для визначення категорії користувача (наприклад: 1 – покупець, 3 – менеджер, і так далі). При авторизації користувача Інтернет-додаток може визначити вигляд і об'єм інформації, що надається користувачеві і вирішити або заборонити виконання деяких функцій. Наприклад, менеджерові магазина можна надати функції по редагуванню каталогу товарів і прогляданню загального списку замовлень.
У сучасному електронному магазині кількість таблиць і полів може бути істотно|суттєвий| більше. Наприклад, можна товари згрупувати по категоріях, ввести|запроваджувати| поняття дилерської ціни, зберігати в каталозі опис товару і його зображення. Не зайвими в магазині будуть: інформація про новини магазина або вашої компанії, умови і порядок|лад| оформлення покупки|купівлі|, способи оплати і доставки товарів, сторінки зворотного зв'язку з|із| покупцями (гостьова книга, форум, анкети). Можливо, регулярна публікація технічних описів і інструкцій з експлуатації товарів, що продаються вами, підвищить привабливість магазина для ваших клієнтів. Але|та| ми не ускладнюватимемо структуру нашого застосування, щоб|аби| зосередитися на основних моментах побудови|шикування| інтернет-додатка|застосування|.
