Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
(ФГБОУ ВПО «КубГУ»)
Кафедра вычислительных технологий
«Разработка блога на тему информационных технологий средствами
ASP.NET MVC 4»
А.А.Карапетян
Краснодар 2014
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ……………………………………………………………………….3
1. Постановка задачи ……………………………………………………………..5
2. Обзор технологии ASP.NET ………………………………………………….8
3. Схема MVC и преимущества ASP.NET MVC Framework ………………...12
4. Работа с данными …………………………………………………………… 15
5. Разработка блога …………………………………………………………….. 18
ЗАКЛЮЧЕНИЕ..………………………………………………………………. 26
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ……………………….… 27
Приложение А.Программный код модели Paper ………………………….… 28
Приложение Б.Программный код модели Comment……………...…………. 29
Приложение В.Программный код модели User …………….………………. 30
2
ВЕДЕНИЕ
Безусловно, Интернет - самое значимое изобретение в области
информационных технологий. Ведь люди получили возможность вести
беседу с человеком, который может находиться на другом конце планеты,
возможность читать книги, не ходя в библиотеки, узнавать о последних
событиях не из газет. Этот перечень можно продолжать очень долго. Но, не
обращая внимания на то, какую цель в конкретный момент пребывания в
сети преследует человек, одно можно сказать точно: ему необходим
комфорт. Практически все более-менее популярные ресурсы работают
слаженно и в то же время предоставляют пользователям всё, что им
необходимо. За это отвечают различные технологии. Быстрый отклик
сервера, приятный дизайн, дружелюбный интерфейс и многое другое – всё
это комфорт. Стоит на каком-либо ресурсе появиться какой-то новой
«фишке», которая понравится пользователю, станет привычной, так он будет
требовать того же от других ресурсов, иначе будет утрачено чувство
комфорта, о важности которого было сказано.
Одной из главных проблем для веб-разработчиков является то, что
перечень требований к их ресурсам постоянно растёт. Конечно, внесение
каких-то тривиальных изменений не является проблемой, однако на
сегодняшний день довольно часто приходится сталкиваться с ситуациями,
когда требуется в корне изменить структуру веб-приложения. Причем
подобная задача может оказаться настолько сложной, что легче написать
подобное приложение с нуля.
Современный Интернет – это постоянно растущее число страниц и вебприложений, связанных между собой ссылками. Он полон видеороликов,
изображений
и
мониторинговая
интерактивного
компания
контента.
В
Netcraftопубликовала
феврале
2013
отчёт
количестве
о
года
работающих сайтов в Интернете. Их число перевалило за 630 миллионов. Это
различные социальные сети, поисковые системы, новостные сайты и многое
3
другое. И, тем не менее, несмотря на столь огромное количество и
разнообразие, их количество растет. И одной из причин является то, что
постоянно появляются новые требования, пожелания. И у автора подобное
пожелание возникло.
В рамках
ASP.NETMVC4
ориентированных
данной курсовой работы
блога
с
рассмотрено создание
использованием
технологий
доступа
к
современных
данным,
на
объектно-
посвященного
информационным технологиям, для студентов и преподавателей технических
специальностей различных российских ВУЗов.
4
1 Постановка задачи
Блог – это веб-сайт, основное содержимое которого – регулярно
добавляемые записи, содержащие текст, изображения или мультимедиа. Для
блогов характерны недлинные записи временной значимости, упорядоченные
в обратном хронологическом порядке (последняя запись сверху). Отличия
блога от традиционного дневника обусловливаются средой: блоги обычно
публичны и предполагают сторонних читателей, которые могут вступить в
публичную полемику с автором (традиционно это реализовано в виде
возможности оставлять комментарии к записи).
Возможность публикации отзывов посетителями делает блоги средой
сетевого общения, имеющей ряд преимуществ перед электронной почтой,
группами новостей, чатами.
В настоящее время особенность блогов заключается не только в
структуре записей, но и в простоте добавления новых записей.
Каким образом это происходит:
 пользователь обращается к веб-серверу
 проходит процесс идентификации пользователя
 запись добавляется в коллекцию
Сервер представляет информацию как последовательность сообщений,
помещая в самом верху самые свежие сообщения. Структура коллекции
напоминает привычную последовательную структуру дневника или журнала.
Важно понимать, что именно необходимо пользователю, поэтому
выделим цели, которые может преследовать читатель блога:
 получение информации
 отслеживание реакции публики на те или иные действия
 чтение ради социализации, ощущения себя причастным к чему-то
5
 чтение-развлечение
 публикация материалов для получения адекватной оценки проделанной
работы
После подробного рассмотрения устройства блога и целей, преследуемых
пользователями, рассмотрим более подробно идею и проведем параллель
между подобными, уже имеющимися, решениями.
На территории Российской Федерации есть огромное количество ВУЗов с
техническими специальностями, технических ВУЗов. В каждом из них
предлагаются те или иные направления подготовки. Естественно, что
дисциплины повторяются, но руководства высших учебных заведений сами
определяют, что именно рассказывать студентам в рамках тех или иных
дисциплин. Особенно актуально это в случае дисциплин, так или иначе
связанных
с
информационными
придерживающиеся
каких-то
технологиями.
классических,
Есть
преподаватели,
проверенных
временем
программ обучения студентов в рамках некоторой дисциплины. Есть так же
такие, кто пытается идти в ногу со временем и из года в год вносят
корректировки в программу. К сожалению, последних меньше.
Идея заключается в создании такой интернет-площадки для студентов и
преподавателей российских ВУЗов, где они могли бы выкладывать на
всеобщее обозрение какие-то свои научные работы, просто интересные
статьи, так или иначе связанные и информационными технологиями. На
протяжении обучения мы сталкиваемся с множеством интересных задач,
различных способов их реализаций, знакомимся с новыми технологиями, или
нам есть что сказать о старых. На сегодняшний день в Интернете есть
большое множество
различных
блогов, в том числе посвященных
информационным технологиям. Основной аудиторией таких сайтов являются
уже достаточно опытные программисты, за плечами у которых не один год
работы, которые делятся опытом работы с теми или иными проектами,
6
зачастую довольно сложными. И большинство студентов, в силу отсутствия
опыта работы, недостатка уверенности или еще по каким-то причинам
считают себя не готовыми для таких площадок. Но ведь это не значит, что им
нечего сказать.
Следующим важным моментом является то, что блог также ориентирован
на преподавателей. Мнение сверстников о твоей работе, безусловно, важно,
но мне преподавателей еще важнее! И так как мы имеем дело с блогом, то у
читателей будет возможность оставлять отзывы к статьям. И рекомендации,
замечания и корректировки преподавателей были бы как нельзя кстати.
7
2 Обзор технологии ASP.NET
Для разработки блога была выбрана платформа .NET Framework
компании Microsoft, поэтому подробно рассмотрим, что собой представляет
данная платформа и почему выбор пал именно на нее.
.NET Framework - программная платформа, выпущенная компанией
Microsoft в 2002 году. Основой платформы является общеязыковая среда
исполнения Common Language Runtime (CLR), которая подходит для разных
языков программирования. Функциональные возможности CLR доступны в
любых языках программирования, использующих эту среду.
CLR (общеязыковая исполняющая среда) — исполняющая среда (не
виртуальная машина), интерпретирующая код на языке CIL в байт-код, в
который компилируются программы, написанные, в частности, на .NETсовместимых языках программирования.
К таким языкам относятся:
 C#
 Managed C++
 Visual Basic .NET
 F# и другие
Среды разработки, поддерживающие .NET:
 Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++, F#)
 Sharp Develop
 Mono Develop
 Embarcadero RAD Studio (Delphi for .NET); ранее Borland Developer
Studio (Delphi for .NET, C#)
 Zonnon
 PascalABC.NET
8
Приложения .NET также можно разрабатывать в текстовом редакторе,
просто вызывая компилятор из командной строки.
Для разработки блога использовалась среда Microsoft Visual Studio
2013.
Объектные классы .NET, доступные для всех поддерживаемых языков
программирования, содержатся в библиотеке Framework Class Library (FCL).
В FCL входят классы Windows Forms, ADO.NET, ASP.NET, Language
Integrated Query, Windows Presentation Foundation, Windows Communication
Foundation и другие. Рассмотрим один из них подробнее.
ASP.NET(Active Server Pages) -технология создания веб-приложений и
веб-сервисов от компании Майкрософт. Она является составной частью
платформы Microsoft .NET и развитием более старой технологии Microsoft
ASP. На момент написания этой работы последней версией технологии
является ASP.NET 4.5.1.
ASP (активные серверные страницы) - технология, предложенная
компанией Microsoft в 1996 году для создания Web-приложений. Эта
технология
основана
на
внедрении
в
обыкновенные
веб-страницы
специальных элементов управления, допускающих программное управление.
По своей сути, ASP — это технология динамического создания страниц
на стороне сервера, приблизившая проектирование и реализацию Webприложений к той модели, по которой проектируются и реализуются
обычные приложения.
Для реализации приложений ASP используются языки сценариев
(VBScript или JScript)
ASP.NET внешне во многом сохраняет схожесть с более старой
технологией ASP, что позволяет разработчикам относительно легко перейти
на ASP.NET. В то же время внутреннее устройство ASP.NET существенно
9
отличается от ASP, поскольку она основана на платформе .NET и,
следовательно, использует все новые возможности, предоставляемые этой
платформой.
Хотя ASP.NET берёт своё название от старой технологии Microsoft
ASP, она значительно от неё отличается. Microsoft полностью перестроила
ASP.NET, основываясь на Common Language Runtime (CLR), которая
является основой всех приложений Microsoft .NET. Разработчики могут
писать
код
для
ASP.NET,
используя
практически
любые
языки
программирования, входящие в комплект .NET Framework (C#, Visual
Basic.NET и JScript .NET). ASP.NET имеет преимущество в скорости по
сравнению со скриптовыми технологиями, так как при первом обращении
код компилируется и помещается в специальный кэш, и впоследствии только
исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.
Преимущества ASP.NET перед ASP:
 Компилируемый код выполняется быстрее, большинство ошибок
отлавливается ещё на стадии разработки
 Значительно
улучшенная
обработка
ошибок
во
время
выполнения запущенной готовой программы, с использованием
блоков try..catch
 Пользовательские элементы управления (controls) позволяют
выделять часто используемые шаблоны, такие как меню сайта
 Расширяемый набор элементов управления и библиотек классов
позволяет быстрее разрабатывать приложения
 ASP.NET опирается на многоязыковые возможности .NET, что
позволяет писать код страниц на VB.NET, Delphi.NET, Visual C#,
J# и т. д.
 Возможность кэширования всей страницы или её части для
увеличения производительности
10
 Возможность разделения визуальной части и бизнес-логики по
разным файлам
 Встроенная поддержка AJAX
 ASP.NET имеет преимущество в скорости по сравнению с
другими технологиями, основанными на скриптах
11
3 Схема MVC и преимущества ASP.NET MVC Framework
ASP.NET MVC Framework-фреймворк для создания веб-приложений,
который реализует шаблон Model-view-controller.
Шаблон
архитектуры
Model-View-Controller
(MVC)
разделяет
приложение на три основных компонента: модель, представление и
контроллер. Платформа ASP.NETMVC представляет собой альтернативу
схеме веб-форм ASP.NET при создании веб-приложений. Платформа
ASP.NETMVC является легковесной платформой отображения с широкими
возможностями тестирования и, подобно приложениям на основе веб-форм,
интегрирована с существующими функциями ASP.NET, например, с
главными страницами и проверкой подлинности на основе членства.
Платформа MVC определяется в сборке System.Web.Mvc.
Рисунок 1 – Шаблон разработки MVC
В состав платформы MVC входят следующие компоненты:
 Модели. Объекты моделей являются частями приложения,
реализующими логику для домена данных приложения. Объекты
моделей часто получают и сохраняют состояние модели в базе
данных. Например, объект Product может получать информацию
12
из базы данных, работать с ней, а затем записывать обновленные
данные в таблицу Products базы данных SQL Server.
 Представления.
Представления
служат
для
отображения
пользовательского интерфейса приложения. Пользовательский
интерфейс
обычно
создается
на основе
данных
модели.
Примером может служить представление для редактирования
таблицы
Products,
которое
содержит
текстовые
поля,
раскрывающиеся списки и флажки, значения которых основаны
на текущем состоянии объекта Product.
 Контроллеры. Контроллеры осуществляют взаимодействие с
пользователем, работу с моделью, а также выбор представления,
отображающего пользовательский интерфейс. В приложении
MVC представления только отображают данные, а контроллер
обрабатывает
вводимые
данные и
пользователя.
Например,
контроллер
отвечает
может
на
действия
обрабатывать
строковые значения запроса и передавать их в модель, которая
может использовать эти значения для отправки запроса в базу
данных.
Шаблон MVC позволяет создавать приложения, различные аспекты
которых (логика ввода, бизнес-логика и логика интерфейса) разделены, но
достаточно тесно взаимодействуют друг с другом. Эта схема указывает
расположение каждого вида логики в приложении. Пользовательский
интерфейс располагается в представлении. Логика ввода располагается в
контроллере. Бизнес-логика находится в модели. Это разделение позволяет
работать со сложными структурами при создании приложения, так как
обеспечивает одновременную реализацию только одного аспекта. Например,
13
разработчик может сконцентрироваться на создании представления отдельно
от бизнес-логики.
Связь между основными компонентами приложения MVC также
облегчает параллельную разработку. Например, один разработчик может
создавать представление, другой — логику контроллера, а третий — бизнеслогику модели.
ASP.NET MVC имеет следующие преимущества:
 Облегчает управление сложными структурами путем разделения
приложения на модель, представление и контроллер.
 Не использует состояние просмотра и серверные формы. Это делает
платформу MVC идеальной для разработчиков, которым необходим
полный контроль над поведением приложения.
 Использует схему основного контроллера, при которой запросы вебприложения обрабатываются через один контроллер. Это позволяет
создавать
приложения,
поддерживающие
расширенную
инфраструктуру маршрутизации.
 Обеспечивает расширенную поддержку разработки на основе
тестирования.
 Хорошо подходит для веб-приложений, поддерживаемых крупными
коллективами разработчиков, а также веб-разработчикам, которым
необходим высокий уровень контроля над поведением приложения.
14
4 Работа с данными
ORM(Object-relational mapping, Объектно-реляционное отображение) технология
концепциями
программирования,
которая
объектно-ориентированных
связывает
языков
базы
данных
с
программирования,
создавая «виртуальную объектную базу данных».
В качестве примера можно рассмотреть адресную книгу, которая
содержит список людей с нулём или более телефонов и нулём или более
адресов. В терминах объектно-ориентированного программирования они
будут представляться объектами класса «Человек», которые будут содержать
следующий список полей: имя, список (или массив) телефонов и список
адресов.
Суть задачи состоит в преобразовании таких объектов в форму, в
которой они могут быть сохранены в файлах или базах данных, и которые
легко могут быть извлечены в последующем, с сохранением свойств
объектов и отношений между ними.
ADO.NET Entity
Framework
(EF) — объектно-ориентированная
технология доступа к данным, является object-relational mapping (ORM)
решением для .NET Framework от Microsoft. Предоставляет возможность
взаимодействия с объектами как посредством LINQ в виде LINQ to Entities,
так и с использованием Entity SQL.
Entity SQL представляет собой язык, подобный языку SQL, который
позволяет выполнять запросы к концептуальным моделям в Entity
Framework.
LINQ to Entities отделяет сущностную объектную модель данных от
физической базы данных, вводя логическое отображение между ними. Так,
например, схемы реляционных баз данных не всегда подходят для
построения объектно-ориентированных приложений и в результате мы
имеем объектную модель приложения существенно отличающуюся от
15
логической модели данных, в этом случае используется LINQ to Entities,
который использует модель EDM (Entity Data Model). То есть, если вам
нужно ослабить связь между вашей сущностной объектной моделью данных
и физической моделью данных, например, если ваши сущностные объекты
конструируются из нескольких таблиц или вам нужна большая гибкость в
моделировании ваших сущностных объектов используйте LINQ to Entities.
К работе с данными Entity Framework имеется три подхода:
 Database First:
В случае уже имеющейся базы данных Entity Framework
может автоматически создать модель данных, состоящую из
классов и свойств, соответствующих объектам базы данных
(таким, как таблицы и столбцы). Информация о структуре базы
(store schema), модель данных (conceptual model) и отображение
их друг на друга содержится в XML в файле .edmx. VisualStudio
предоставляет
графический
дизайнер
Entity Framework,
с
помощью которого можно просматривать и редактировать .edmx.
 Model First:
Если базы нет, вы можете начать с создания модели
данных, используя дизайнер Entity Framework VisualStudio. После
окончания работ над моделью дизайнер сгенерирует DDL (data
definition language)-код для создания базы. В этом подходе для
хранения
информации
о
модели
и
отображениях
также
используется .edmx.
 Code First:
Вне зависимости от наличия базы вы можете вручную
написать код классов и свойств, соответствующих сущностям в
базе
и
использовать
этот
16
код
с
Entity
Framework
без
использования файла .edmx. Именно поэтому можно порой
увидеть, как этот подход называют code only, хотя официальное
наименование CodeFirst.
17
5 Разработка блога
В данном случае использовался подход Code First, поэтому первым
делом были описаны следующие модели:
public class Paper
{
Public int PaperId { get; set; }
public string Title { get; set; }
public User User { get; set; }
public Date Time Add Time { get; set; }
public string Content { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public virtual ICollection<User> Likes { get; set; }
}
public class User
{
Public int UserId { get; set; }
public string Nick { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime regTime = DateTime.Now;
public virtual ICollection<Paper> Papers { get; set; }
public virtual ICollection<Paper> Like { get; set; }
}
public class Comment
18
{
Public int CommentId { get; set; }
public User User { get; set; }
private DateTime addTime = DateTime.Now;
public string Content { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public Comment ParentComment { get; set; }
public Paper Paper { get; set; }
}
Класс Paper в базе данных будет представлен таблицей Papers (следуя
соглашениям Entity Framework), которая будет хранить статьи. Свойства
класса будут являться столбцами.
Для
классов
Userи
Commentбудут
созданы
таблицы
Usersи
Commentsсоответственно.
Свойства классов, перед которыми указано слово virtualявляются
навигационными. Свойства навигации в Entity Framework обеспечивают
навигацию по сопоставлению между двумя типами сущностей.
19
По этим моделям были созданы следующие таблицы в базе данных:
Рисунок 2 – Таблицы в базе данных
Подробно разбирать особенности работы Entity Frameworkв рамках
данной курсовой работы не представляется возможным, ибо это очень
объемная тема.
Следующим шагом является создание контроллеров. Полностью код
контроллеров приведен не будет в силу объемности, однако некоторые
фрагменты рассмотрим для получения общего представления.
Опишем класс для работы со статьями PaperController и унаследуем его
от Controller:
Public Class PaperController : Controller
{
Public ActionResult Index{…}
Public ActionResult Create{…}
Public ActionResult Details{…}
Public ActionResult Edit{…}
20
Public ActionResult Delete{…}
}
Как видно, мы описали 5 действий контроллера, отвечающих за
получение списка всех статей из базы данных, создание новой статьи,
просмотр, изменение и удаление соответственно.
Рассмотрим создание новой статьи:
Public ActionResult Create(Paper newPaper)
{
using (var db = new DataContext())
{
String userName = User.Identity.Name.ToString();
User profile = (from c in db.Users where c.Nick == userName select
c).First();
New Paper.User = profile;
New Paper.AddTime = DateTime.Now;
db.Papers.Add(newPaper);
db.SaveChanges();
return RedirectToAction("Index");
}
Происходит следующее:
 так как возможность добавлять новые статьи в блог должны
иметь только авторизованные пользователи, то первым делом
проверяется имя пользователя в системе, обратившегося к методу
контроллера
21
 из базы данных извлекается информация об этом пользователе, и
он указывается в качестве автора новой статьи
 свойству AddTime, обозначающему время создания статьи
присваивается текущее время
 статья добавляется в базу данных
 изменения сохраняются
 происходит перенаправление к действию index, передающему в
представление список всех статей
ДействиеIndex:
Public ActionResult Index()
{
var papers = (DbQuery<Paper>)db.Papers.Include(c
=>c.User).OrderByDescending(c =>c.AddTime);
returnView(papers.ToList());
}
Избазы данных выбирается список всех статей в отсортированном виде,
чтобы новые статьи отображались первыми, и возвращается представление, в
которое этот самый список был передан.
Другие действия в контроллерах работают аналогичным образом. При
необходимости происходит обращение к базе (будь то извлечение данных,
изменение, удаление), возвращается представление.
22
Как уже говорилось, представления служат для отображения
пользовательского интерфейса. Они в себе содержат html-разметку и
фрагменты кода на языке C#.
Вот, к примеру, как выглядит представление, отображающее некоторую
информацию о статьях:
@model IEnumerable<Final_Project.Models.Paper>
<table>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem =>item.Title)
</td>
<td>
@Html.DisplayFor(modelItem =>item.AddTime)
</td>
<td>
@Html.DisplayFor(modelItem =>item.User.Nick)
</td>
</tr>
}
</table>
В
первой
строке
указывается,
какой
объект
был
передан
представлению (в данном случае список всех статей). Затем в цикле для
каждой статьи выводится её заголовок, дата публикации и ник автора.
23
Для остальных представлений всё идентично. То есть, в представление
передается некоторый объект и его можно использовать для извлечения из
него некоторых данных, или же наоборот, добавления.
Также в приложение интегрирована технология AJAXбиблиотеки
jQuery.
AJAX (Asynchronous Javascript and XML ) - подход к построению
интерактивных
пользовательских
интерфейсов
веб-приложений,
заключающийся в «фоновом» обмене данными браузера с веб-сервером. В
результате, при обновлении данных веб-страница не перезагружается
полностью, и веб-приложения становятся быстрее и удобнее.
Несмотря на наличие собственных расширений(ASP.NETAJAX), jQuery
AJAX является хорошо зарекомендовавшим и, как следствие, самым
распространённым решением на данный момент.
Предусмотрена защита от XSS-атак. XSS (англ. Сross Site Sсriрting«межсайтовый скриптинг») - тип атаки на веб-системы, заключающийся во
внедрении в выдаваемую веб-системой страницу вредоносного кода
(который будет выполнен на компьютере пользователя при открытии им этой
страницы) и взаимодействии этого кода с веб-сервером злоумышленника.
В ASP.NET присутствует стандартный механизм защиты, который
реагирует на наличие в контенте программного кода. К сожалению, не всегда
верно определяется, представляет ли код угрозу на самом деле или нет.
Таким образом, при попытке внесения в статью описания класса с
использованием синтаксиса языка C, механизм защиты сработал. А ведь блог
посвящен информационным технологиям и вероятность необходимости
приведения кода в статье достаточно велика.
Решение было найдено и заключалось в отключении фильтра проверки
контента. Однако в этом случае перестает проверятся абсолютно весь
24
контент, поступивший на вход действию контроллера. И как следствие это
приводит к уязвимости. Поэтому было решено наложить на свойства классов
специальный атрибут allowHtml, разрешающий наличие программного кода в
пределах свойства (а не всего контента, как в случае фильтра проверки
контента). Несмотря на это, вероятность попадания вредоносного кода всё же
существует. Для того, чтобы он ни в коем случае не имел возможности быть
исполненным на стороне клиента, перед отправкой (то есть перед
отображением в браузере пользователя) код кодируется в текстовый формат,
тем самым лишая его возможности сработать.
25
ЗАКЛЮЧЕНИЕ
В рамках данной курсовой работы на примере создания блога на тему
информационных технологий были рассмотрены особенности разработки на
ASP.NET. Приведены преимущества по сравнению с предшествующей ASP.
Была рассмотрена схема Model-View-Controller. Приведены причины,
по которым следует делать выбор в пользу ASP.NET MVC, если Вы
собираетесь создавать гибкое, легко модифицируемое веб-приложение.
Рассмотрены
особенности
работы
объектно-ориентированной
технологии доступа Entity Framework, обеспечивающей взаимодействие
приложений с базой данных.
26
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Фримен А., Сандерсон С. ASP.NETMVC 4 Fraemwork с примерами на
C# для профессионалов // Вильямс: 2011, - С. 672
2. Эспозито Д. Программирование на ASP.NET 4 // Питер: 2012, - С. 880
3. Чедвик Д., Снайдер Т., Панда Х. ASP.NETMVC 4 Разработка реальных
веб-приложений с помощью ASP.NET MVC // Вильямс, - 2013, - С. 432
4. Эспозито Д. Разработка веб-приложений с использованием ASP.NET и
AJAX// Питер:2012, - С. 400
5. Klein S. Pro Entity Framework 4.0 // Apress, - 2010, - С. 140
6. Lerman J., Miller R. Programming Entity Framework: Code First // O’Reilly
Media, - 2011, - С. 240
7. Pialorsi P., Russo М. Programming Microsoft LINQ in Microsoft .NET
Framework 4 // Microsoft Press, - 2010, - С. 704
27
ПРИЛОЖЕНИЕ А
Код модели Paper:
Namespace Final_Project.Models
{
[Table("Papers")]
public class Paper
{
Public int PaperId { get; set; }
public string Title { get; set; }
public User User { get; set; }
public DateTime AddTime { get; set; }
public string Content { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public virtual ICollection<User> Likes { get; set; }
public Paper()
{
Likes = new HashSet<User>();
}
}
}
28
ПРИЛОЖЕНИЕБ
Код модели Comment:
Namespace Final_Project.Models
{
[Table("Comments")]
public class Comment
{
Public int CommentId { get; set; }
public User User { get; set; }
private DateTime addTime = DateTime.Now;
public string Content { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public Comment ParentComment { get; set; }
publicintPaperId { get; set; }
public Paper Paper { get; set; }
}
}
29
ПРИЛОЖЕНИЕ В
Код модели User:
Namespace Final_Project.Models
{
[Table("Users")]
public class User
{
Public int UserId { get; set; }
public string Nick { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime regTime = DateTime.Now;
private string userType = "U";
}
}
30
Download