Губин М.А.1, Таранова Е.И.2
1 Елецкий государственный университет им. ИАБунина, к.полит.н., доцент кафедры математического моделирования и компьютерных технологий, fosscenter48@gmail.com 1 Елецкий государственный университет им. И.А.Бунина, магистрант
Разработка Интернет-портала олимпиад средствами
технологии ASP.NET MVC
КЛЮЧЕВЫЕ СЛОВА
ASP.NET, разработка, web-приложение. АННОТАЦИЯ
В статье рассматриваются вопросы создания сайта (портала) для проведения олимпиад, конкурсов среди учащихся разных возрастных групп. Анализируя изменения в системе образования за последние несколько лет, можно заметить, что технология создания портфолио прочно вошла в образовательную практику. Портфолио представляет собой так называемую папку достижений, включающую в себя материалы, которые позволяют учитывать результаты, достигнутые в разнообразных видах деятельности.
В современном мире, в котором продолжается стремительное развитие научно-технической деятельности, требуются всё более глобальные изменения в развитии информатизации всех сфер жизни общества. Практически во всех странах мира осуществляются программы широкомасштабной информатизации образования, — создаются единые информационные и образовательные среды, которые включают в себя совокупность технических, программных, телекоммуникационных и методических средств, позволяющих оптимально использовать новые информационные технологии в сферах, связанных с образованием и обучением, а также внедрять их во все виды и формы любой гражданской деятельности.
Почему мы не указываем на то, что наше веб-приложение является именно образовательным? Любой веб-сайт должен быть ориентирован на конечных пользователей. Сделать универсальный сайт для всех невозможно, но затронуть интересы широкой аудитории пользователей сети Интернет вполне реально. В частности образовательный портал является сложным человеко-машинным программно-информационным комплексом. Он предназначен для аккумуляции готовой, а также для подготовки, размещения и использования распределенной научной, научно-методической, образовательной и другой информации, предназначенной для совершенствования организации образовательного
процесса и управления им. Разработка такого приложения сложна с точки зрения затрат времени и, следует признать, невозможна только лишь усилиям одного человека. Но мы можем сделать попытку начала наполнения портала по частям.
Какая же часть актуальна?
Анализируя изменения в системе образования за последние несколько лет, можно заметить, что технология создания портфолио прочно вошла в образовательную практику. И это легко объяснимо. Портфолио представляет собой так называемую папку достижений, включающую в себя материалы, которые позволяют учитывать результаты, достигнутые в разнообразных видах деятельности. Более того, создание ученического портфолио стало одним из требований новых стандартов и важной составляющей системы оценивания учебных достижений. [6] Портфолио показывает уровень подготовленности обучающегося и уровень его активности как в учебной, так и внеучебной деятельности. Портфолио набрало популярность не только среди школьников и студентов, но даже среди воспитанников дошкольных учреждений. Активное участие в такого рода образовательных мероприятиях и дает возможность пополнять портфолио. Но где же брать материалы для портфолио?
При анализе всех возможных ответов на этот вопрос и появилась идея создания сайта (портала) для проведения олимпиад, конкурсов среди учащихся разных возрастных групп.
Сначала поговорим об интерфейсе сайта. Его структура очень проста, поэтому будет одинакова понятна как студентам, так и школьникам.
I РДФЫК П|>он Iли НИН МЕРОПРИЯТИЙ
ИЙТИ«Г УЧДСТММИЮ»
НЮС И мероприятий
ИНФОРМАЦИЯ
СПЕКТР ЗНАНИЙ
Добро пожаловатьI
Кратко* млопн*
ДОРОГ** УНКМНьМ ^иМЛИ, учНИИ, ЛУДЬ-ЛЫ, ДОаКйГНТа »1 ПК
Добра шшщт вл ийт дмтлнц^сммаг« митре ля знаний 'Спектр мнш''
Ц|ш пор ГШ сводам сгжфчльпо дм лрешвдшгч* комплекса дистанционных тролрнягий по сл*шп разним преда|вт*ч м т**ии. Прмнягк гчостм* • ымчгмвд* н.'-е ««ггоринв н т&тнегг1 УЧДвЦиСЯ ^л Г**6ны:< МНА1НРЙ С I Г» II МКСЫ, СТ>А*лГы н ШйСЛжТакйййИ Д.1*Ат<йАь™л
Ш на1_-4н сайт* квд^п нл Вк пдолретме г-з ддлшй. Дм юге чтобы грмерйть сьм мнм, разян'ь нывмнм, ннмоь о :йч км а »»йи^, зфудгрвиип&п и
кк'СфСж! {й ытлЛ 'к»»а», дастаготв лрлють участи* * илпи влингаадм м янксодтал г» размен прадоагь*. А »те еч*нь лркк»! н+иДщдня* иф*тсгрпрмагьея на наа^к
кратко* и 1 по
•Вс» чми участи«* получав! свстжйнкат об участим ■ н*ропрчрггии. асе по6едкг*,ти * пррмры ползают соотнтстаутои.н* днгмп*, Д так** сана* НЛМШН Гвй* Гранту «Поч^н** в «»«^МЧн»,
Пс«*.-гкет учасп« ■ мацмк юхкурса»: и апитчаак, потому чт» о»* ннпреоМг гкичесаки- раихпы] пишлк«
СИМОЦеЧЧ. * ПНРИНЧ: «рТИфНКИк 94 ДЙПЛСПМ ДНТ С!"«Т!>щррО ВЫПОЮ!№№ попел»«« я СМИ! 1ГОРГ©ОЛ1№!
участник» гю
АлгОфСЮ* Р#4Н № Г М 4 Ас* 1>|||
Рис. 1. Главная страница сайта Основное горизонтальное меню отображается на всех страницах
ресурса и состоит из пяти вкладок: «Главная», «График проведения мероприятий», «Рейтинг участников», «Итоги мероприятий», «Информация». Из названия каждой вкладки можно понять, что будет содержаться в данном пункте меню. Закладка «График проведения мероприятий» состоит из четырех блоков (олимпиады, конкурсы, викторины, домашнее задание), каждый из которых содержит всю необходимую для участника информацию о предстоящих мероприятиях. Закладка «Рейтинг мероприятий» отображает информацию о сумме баллов, полученных учащимся по итогам всех мероприятий, о месте ученика в общем списке зарегистрированных пользователей и о количестве мероприятий с его участием. Закладка «Итоги мероприятий» аналогична закладке «График проведения мероприятий», только содержит информацию о уже прошедших событиях. Закладка «Информация» дает пользователям и гостям полезную информацию о правилах сайта, порядке проведения мероприятий, возможных наградах и другую.
Теперь о технической составляющей. Для реализации проекта был выбран инструмент ASP.NET MVC Framework.
ASP.NET MVC - это платформа для разработки веб-приложений от Microsoft, которая сочетает в себе эффективность и аккуратность архитектуры «модель-представление-контроллер» (англ. MVC - model-viewcontroller), новейшие идеи и примеры гибкой разработки, а также все лучшее из существующей платформы ASP.NET. Она представляет собой полномасштабную альтернативу традиционной технологии ASP.NET Web Forms, имея при этом существенные преимущества [5].
ASP.NET стал большим коммерческим успехом, но есть и другие альтернативные способы веб-разработки. Для разработки сайтов зачастую используется PHP. Это вполне объяснимо: поддержка большинством хостингов, простота базового изучения (можно быстро что-либо подправить), большое количество специалистов и, конечно же, огромный выбор готовых CMS. Но если вы используете не готовое решение, а создаете движок с нуля под свои собственные нужды, то многие преимущества PHP отходят на второй план. Сравнивая ASP.NET и PHP, можно отметить следующее [4]. 1. Преимущества ASP.NET:
• Полноценный язык. ASP.NET поддерживает наследование, абстрактный класс, перегрузку функции и различные типы переменных. Более того, платформа .NET позволяет использовать любой .NET-совместимый язык (чаще остальных встречаются C# и VB.NET). Среди прочих можно выделить удобный объектно-ориентированный синтаксис базовых библиотек ASP.NET. PHP 5 поддерживает объектно-ориентированный синтаксис, но сказать, что это чисто объектно-ориентированный язык, нельзя. В ASP.NET внутри класса требуется объявление переменной, а в PHP
переменной может быть присвоено любое значение.
• Компиляция программ. В отличие от PHP, в .NET код компилируется, благодаря чему он исполняется гораздо быстрее.
• Идентичность среды разработки и деплоймента. Для развертывания приложения требуется встроенный в Windows IIS (Internet Information Server). При работе с PHP необходимо доустанавливать Apache и делать дополнительные настройки системы. При разработке на ASP.NET используется одинаковая среда и на девелоперских компьютерах и на серверах в Интернете.
• Полная поддержка юникода. В отличие от сайтов на PHP, все сайты на ASP.NET автоматически поддерживают UTF-8.
• Огромные возможности, включенные в состав стандартных библиотек. Для реализации многих аналогичных вещей на PHP используются сторонние библиотеки, в отличие от ASP.NET, но их использование создает дополнительные проблемы: отсутствие библиотек на хостинге, необходимость изучения.
• Расширенные возможности базы данных. Программисты ASP.NET используют MS SQL, который обладает более широкими возможностями, чем MySql. Кроме того ASP.NET поддерживает и другие платформы баз данных, включая Oracle, Microsoft Access и т.д., в отличие от PHP.
2. Преимущества PHP:
• Полная бесплатность, включая платформу. Довольно большой плюс, если вы разрабатываете масштабируемую систему, которая должна работать на десятках и сотнях серверах. В этом случае вы сэкономите много денег, используя бесплатную ОС. Если вашему сайту достаточно одного сервера, то стоимостью ОС можно пренебречь. То же относится и виртуальному хостингу.
• Простота. Это актуально для начинающих программистов, когда не требуется большое количество свойств. Но при разработке сложной системы это преимущество превращается в недостаток — неполная реализация объектности, отсутствие строгой типизации и других свойств, присущих полноценным языкам, приводит к проблемам в развитии и поддержке сложной системы.
• Большой выбор хостингов. При разработке сайта с нуля стоимость хостинга уходит на второй план по сравнению со стоимостью разработки.
Важно различать архитектурный паттерн MVC и ASP.NET MVC Framework. MVC паттерн не является новым, его корни уходят к проекту Smalltalk (1978 год) в Xerox PARC, но завоевал огромную популярность он сегодня в качестве паттерна для веб-приложений по следующим причинам:
• Взаимодействие пользователя с MVC приложением следует естественному циклу: пользователь совершает действие, в ответ на
это приложение меняет свою модель данных и предоставляет пользователю обновленный вид. А затем цикл повторяется. Это очень удобно для веб-приложений, предоставляемых в виде серии HTTP запросов и ответов.
• Необходимость веб-приложению объединять несколько технологий (например, базы данных, HTML и исполняемый код), как правило, разбивается на множество уровней или слоев. Модели, которые вытекают из этих комбинаций, естественны для концепции MVC. ASP.NET MVC Framework реализует MVC паттерн и, тем самым, обеспечивает значительно улучшенное разделение концепций. На самом деле ASP.NET MVC реализует современный вариант MVC паттерна, который особенно хорошо подходит для веб-приложений.
Применяя и адаптируя MVC паттерн, ASP.NET MVC Framework сильно конкурирует с Ruby on Rails и аналогичными платформами, и переносит MVC паттерн в основное русло мира .NET. Суммируя опыт и лучшую практику разработчиков, использующих другие платформы, можно сказать, что ASP.NET MVC может предложить даже больше, чем Rails. [7]
Для авторов, как для разработчиков, решающими факторами выбора платформы веб-разработки стали такие особенности ASP.NET MVC, как: расширяемость, жесткий контроль над HTML и HTTP, тестируемость, мощная система маршрутизации, возможность разрабатывать в лучших сегментах платформы, современный API, наличие открытого исходного кода.
Среди классов, которые используются для обеспечения функциональности сайта можно выделить несколько основных: 1. Класс работы с пользователями. Этот класс содержит в себе функции, отвечающие за регистрацию учетных записей, редактирование персональных данных и удаление записей.
Функция регистрации пользователей разделена на два этапа: процесс регистрации и процесс активации. Процесс регистрации проходит в три шага: заполнение персональной информации, внесение данных об учебном заведении и заполнение конфиденциальных полей, необходимых для авторизации на сайте.
public void CreateUser(string url, string lastName, string firstName, string middleName, string phone, string zipId, int coutryId, int regionId, int rayonId, int citiId,
string email, string password, string nameAddress, string fioAddress) {
var user = new User(); user.LastName = lastName;
_db.AddToUsers(user); _db.SaveChanges();
}
Процесс активации, запускается после нажатия на кнопку «Создать личный кабинет» (осуществляется дополнительная защита паролей, генерируется и отправляется на почту пользователя ссылка активации аккаунта).
{
}
Функция удаление записи имеет следующий вид
public void DeleteUser(int id) {
var user = GetUser(id);
_db.DeleteObject(user);
_db.SaveChanges();
}
2. Класс работы с экзаменатором. Функционал этого класса делает доступными для учителя, получившего логин и пароль у администратора, дополнительные возможности: •добавлять (редактировать, удалять) мероприятия;
if (ModelState.IsValid) {
var startDateTime = startDate + " " + startTime; var stopDateTime = stopDate + " " + stopTime; db.AddOlympiad(type, name, description, ruls, Convert.ToDateTime(startDateTime, System.Globalization.CultureInfo.GetCultureInfo("hi IN").DateTimeFormat), Convert.ToDateTime(stopDateTime, System.Globalization.CultureInfo.GetCultureInfo("hi-IN").DateTimeFormat));
var olympiad = new Olympiad(); olympiad.Type = type; olympiad.Name = name; olympiad.Description = description;
_db.AddToOlympiads(olympiad);
string emailBody = "Благодарим Вас за регистрацию на сайте Спектр знаний!<Ьг/> Ваши персональные данные: <Ьг/>Логин: " + user.Email + "<Ьг/>Пароль: " + password + "<Ьг/>Для потверждения регистрации на сайте Эрудит, пожалуйста прейдите по этой ссылке: :<a href=" + activationLink + "> активировать.</а><Ьг/>.<Ьг/> Это автоматически созданное письмо. Отвечать на него не нужно. Если Вы не отправляли запрос на регистрацию, проигнорируйте данное сообщение.";
Email.SendEmail(emailBody, activationLink, user.Email);
}
else {
}
• добавлять (редактировать, удалять) задания в уже созданных мероприятия;
public void CreateTask(string taskName, int type, int olimpiadId,
float point) {
var task = new Task(); task.TaskName = taskName; task.Type = type; task.OlimpiadId = olimpiadId; task.Point = point;
_db.AddToTasks(task); _db.SaveChanges();
}
public void EditTask(int id, string taskName, float point) {
var task = GetTask(id);
task.TaskName = taskName;
task.Point = point; _db.SaveChanges();
}
• добавлять (редактировать, удалять) новые варианты ответа в заданиях.
$(".addTask").on("click", function (e) {
e.preventDefault();
$("<div></div>") .addClass("dialog") .appendTo("body") .dialog ({
title: ("Добавляем задание"), close: function () { $(this).remove() }, modal: true
})
.load('Url.Action("AddTask", new { id = ViewBag.Id })');
});
db.AddAnswer(id, name, conferm); _db.AddToAnswers(answer);
3. Класс работы с мероприятиями. Функции этого класса направлены на сортировку и отображение мероприятий по типам и дате, есть возможность перенесения пройденных событий в архив.
var aray = db.Users;
foreach (var s in aray) {
if (s.Email != User.Identity.Name) {
continue;
}
ViewBag.S = s.Id; }
int uid = Convert.ToInt32(ViewBag.S);
ViewBag.Array = db.Participants.Where(user => user.Userld == uid); ViewBag.Olimpiads = db.Writables.OrderByDescending(id => id.StartDateTime);
foreach (QuestionnaireNew.Models.Writable o in ViewBag.Olimpiads) {
if (o.Type == "Олимпиада" & o.StopDateTime >= DateTime.Now) {
}
}
В классе реализована проверка некоторых типов заданий и ведется подсчет баллов за правильные ответы на вопросы. Организованы функция пошагового вывода заданий на экран и функция вывода вариантов ответа в случайном порядке.
ViewData["Count"] = db.Tasks.Count(t => t.OlimpiadId == id); ViewBag.Task = db.Tasks.Where(t => t.OlimpiadId == id).OrderBy(t => t.Id).Skip(pageSize * pageNum).Take(pageSize).ToList(); ViewBag.Answer = db.Answers; ViewBag.OlympiadId = id;
var answer = HttpUtility.UrlDecode(Request.QueryString["answer"]); dm.UserAnswer(userName, Convert.ToInt32(olympiadId),
Convert.ToInt32(taskId), answer);
foreach (QuestionnaireNew.Models.Task t in ViewBag.Task) {
ViewBag.TaskId = t.Id; ViewBag.TaskType = t.Type;
var answer = db.Answers.Where(a => a.TaskId == t.Id);
if (t.Type != 3) {
foreach (QuestionnaireNew.Models.Answer a in answer)
{
switch (t.Type) {
}
}
} }
var a = ViewBag.TaskType + "";
if (a == "3") {
$("#Next") .on("click", function() {
$.getJSON('/Home/AddAnswer/?olympiadId=' +
ViewBag.OlympiadId + '&taskId=' + ViewBag.TaskId + '&answer=' + $("#answerTb").val());
});
}
Конечно, каждая из процедур, используемая в классах, имеет персональные возможности и ограничения. Например, редактирование или удаление мероприятия невозможно, если оно уже запущено, т.е. участники уже выполняют задания; каждое задание имеет определенный тип (тесты, соответствия, письменные ответ), поэтому нельзя добавить в задания одного типа, задания другого типа.
Благодаря достаточно сложной структуре программного кода сайта, автору удалось приобрести необходимый опыт разработки веб-приложений.
В заключение можно сказать, что одним из преимуществ идеи по разработке портала можно считать его способность к дополнению и модификациям. Приложение может расширяться путем написания дополнительных модулей для конкретного спектра проблем. Т.к. с ростом потребностей в использовании тех или иных функций, должны расти и возможности их предоставления.
Литература
1. Роб Камерон, Дэйл Михалк ASP.NET 3.5, компоненты AJAX и серверные элементы управления для профессионалов. - Пер. с англ. - М. : ООО «И. Д. Вильямс», 2009. - 608 с. : ил
2. Мэтью Мак-Дональд, Адам Фримен, Марио Шпушта Microsoft ASP.NET 4.0 с примерами на C# 2010 для профессионалов. - Вильямс, 2011. - 1424 с.
3. Стивен Сандерсон ASP.NET MVC Framework с примерами на C# для профессионалов. -Вильямс, 2010. - 510 с.
4. http://developerguru.net/post/asp-dot-net-vs-php/
5. http://mic.urfu.ru/node/403
6. http://www.resobr.ru/materials/19/37252/
7. http: //smarly.net/pro-asp-net-mvc-4/introducing-asp-net-mvc-4/what-is-the-big-idea/key-benefits-of-asp-net-mvc