Автор: Виктор Ашик
Источник: "Компьютер-Информ"
Образование - это то, что остается, когда мы уже забыли
все, чему нас учили.
Джордж Галифакс
B этом мире нет ничего постоянного, все куда-то движется и
во что-то превращается, как сказал один из героев "Алисы в
Стране Чудес". Но если некоторые изменения в природе занимают
тысячелетия, то прогресс информационных технологий летит
совершенно неудержимо.
Всего каких-то десять-пятнадцать лет назад самыми
передовыми среди персональных компьютеров были клоны IBM
PC/XT, а шедевром программного обеспечения для них - убогая
среда DOS. За эти годы сменились пять поколений операционных
систем Microsoft (DOS - Windows 3 - Windows 95 - Windows NT -
Windows 2000), корпоративные сети ушли от специализированных
внутренних протоколов к универсальному TCP/IP, а люди
перестали относиться к компьютеру как к чему-то
сверхъестественному. Языков программирования развелось
превеликое множество, что в перемножении на количество систем,
в которых могут выполняться приложения, написанные на этих
языках, дает такое количество комбинаций, что протестировать
их все становится весьма затруднительно, а то и вовсе
нереально.
В сложившихся обстоятельствах появление .NET Framework,
новой среды выполнения от фирмы Microsoft, позволяющей
абстрагироваться от типа операционной системы, на которой
работает приложение, является спасательным кругом в море
систем. Но, как показал опыт Java, без визуального средства
быстрой разработки Web-приложений даже очень хорошую среду
выполнения ждет удел инструмента для написания бизнес-логики,
потому как установка дополнительной среды выполнения на всех
клиентах - задача далеко не всегда выполнимая. Помимо этого,
скорость модернизации вычислительной техники на предприятиях
зачастую отстает от роста требований приложений к ресурсам
этой самой техники. Таким образом, использование рабочих мест
в роли тонких клиентов, где системой отображения информации
является браузер (Internet Explorer, Netscape Navigator,
Opera, Mozilla и т. п.) становится более чем актуальной
задачей. Visual Studio .NET позволяет решить эту задачу самым
изящным способом.
Для того чтобы продемонстрировать методы построения
Web-приложений при помощи Visual Studio .NET, создадим с нуля
решение для учета прочтенных авторизованных курсов Microsoft.
Для хранения информации будем использовать реляционную базу
данных (Microsoft SQL Server), в которой будем создавать
таблицы:
Cources(CourseID, Title, nDays) - каталог
курсов,
Customers(CustID, Name) - список
клиентов,
Trainers(TrainerID, Name) - список
преподавателей,
Classes(ClassID, CourceID, StartDate,
EndDate, TrainerID) - проведенные
занятия,
Students(ClassID, CustID) - факт посещения курса
клиентом, задает отношение "многие-ко-многим" между таблицами
Classes и Customers.
Для создания таблиц вовсе не обязательно вспоминать
конструкции DDL (Data Definition Language) языка SQL,
достаточно воспользоваться средствами Visual Studio .NET.
Запускаем Visual Studio .NET и создаем новый проект:
File->New->Project. Выбираем тип проекта Visual C#
Project, шаблон ASP.NET Web Application. В поле Location
задаем название приложения и сервер, на котором оно будет
выполняться. Если на машине с Visual Studio .NET установлен
IIS, то предложенный по умолчанию вариант
http://localhost/WebApplication1 подойдет, изменим только имя
приложения WebApplication1 на Education.
Для создания базы данных необходимо подключиться к серверу
SQL: View->Server Explorer. В появившемся окне Server
Explorer щелкните правой кнопкой мыши на ветви Data
Connections и из контекстного меню выберите Create New SQL
Server Database. В открывшемся диалоговом окне Create Database
введите название сервера, например, localhost, если SQL Server
установлен на этой же машине, и название базы данных, в нашем
случае: Education.
Теперь можно создавать таблицы, например, щелчком правой
кнопки мыши на ветви Tables в окне Server Explorer вызвать
контекстное меню и выбрать пункт New Table. В появившемся окне
конструктора таблиц указываем названия полей и подходящие типы
данных для таблицы Cources:
CourceID
int(4), Set Primary
Key (правой кнопкой
мыши),
Title nDays
varchar(100),
tinyint(1),
Default Value - 5.
Сохраняем таблицу: File->Save Table1, в диалоговом окне
Choose Name указываем название таблицы: Cources. Аналогичным
образом создаем оставшиеся таблицы, используя для ключевых
полей тип int(4) с автоприращением (Identity - yes).
Затем объясним SQL Server про наличие связей между
таблицами: запускаем конструктор таблицы для таблицы Cources
через контекстное меню - Design Table. Из контекстного же меню
конструктора таблицы выбираем Relationships.
Рисунок 1. Описание связей между таблицами
Создаем новую связь нажатием кнопки New, в качестве Primary
Key Table выбираем Cources, Foreign Key Table оставляем
Classes. В списках полей выбираем одноименные поля CourceID.
Аналогично создаем связь с таблицей Trainers по полю
TrainerID. Точно так же задаем связи между таблицей Students и
таблицами Customers и Classes. Чтобы не повторять все эти
операции при создании базы данных на "боевом", не учебном,
сервере, можно сгенерировать сценарий создания базы данных на
языке SQL DDL через меню Database->Generate Create Script.
Вносим в таблицы тестовые данные для отладки и приступаем к
созданию Web-формы.
На созданную вместе с проектом форму WebForm1 нужно
перетащить объекты для подключения к базе данных. Выбираем из
меню View пункт Toolbox, из набора компонентов Data в
появившемся окне Toolbox перетаскиваем объект sqlDataAdapter и
бросаем на форму. В появившемся мастере Data Adapter
Configuration Wizard переходим на следующий экран по кнопке
Next, оставляем существующее подключение к базе, Next, строим
запрос при помощи Query Builder, состоящий из таблиц Classes и
Trainers:
SELECT Classes.ClassID, Classes.CourceID,
Classes.StartDate, Classes.EndDate,Trainers.Name
FROM
Classes INNER JOIN
Trainers ON Classes.TrainerID =
Trainers.TrainerID
Затем завершаем мастер (Next, Finish). В результате на
форме созданы два объекта: sqlDataAdapter1 и sqlConnection1.
Для полного набора не хватает правил преобразования данных,
заданных с помощью XML. Через контекстное меню для объекта
sqlDataAdapter1 запускаем генератор этих правил командой
Generate Dataset, в одноименном диалоговом окне оставляем
значения по умолчанию (создать новый DataSet1) и нажимаем OK.
Отобразим на форме результат запроса. Для этого поместим в
окне Toolbox объект DataGrid, перетащив его из набора
компонентов WebForms. Для данного объекта из контекстного меню
запускаем Property Builder. В качестве источника данных
DataSource выбираем DataSet11, DataKeyField - ClassID. В
разделе Columns снимаем флажок Generate columns automatically
at run time и добавляем с помощью кнопки со стрелкой все поля,
кроме ClassID, в правый список. Закрываем диалоговое окно
кнопкой OK.

Рисунок
2. Построитель свойств объекта класса DataGrid
Проверим получившуюся форму, для чего компилируем проект:
Build->Build Solution и запускаем форму: Debug -> Start
Without Debugging. Не работает! Не хватает нескольких строк
кода, дописанных руками. В Visual Studio .NET двойным щелчком
на форме открываем исходный текст и в обработчике Page_Load
дописываем:
if (! IsPostBack)
{
sqlDataAdapter1.Fill(dataSet11);
DataGrid1.DataBind();
}
Теперь все должно быть в порядке, проверяем сборкой и
запуском без отладки, на странице отображаются данные.
Вывод: Visual Studio .NET - удобный визуальный инструмент
для построения Web-приложений, который позволяет существенно
упростить и ускорить создание Intranet.