Содержание

Введение
Глава 1. Задание
Глава 2. Постановка задачи
Глава 3. Обзор и анализ технических решений
3.1 Особенности ASP.NET MVC
3.2 Начало работы с ASP.NET MVC
3.3 Создание проекта
Заключение
Список использованных источников

Введение

ООО «ИСЕРВ» была основана в 2001 году и представляла собой небольшую группу единомышленников — разработчиков Интернет-проектов.

За 15 лет компания разрослась до группы компаний с большим опытом, своей историей развития, философией и ценностями, принципами работы проектной команды (используются стандарты управления проектами MSF и MOF).

Компании группы функционируют в таких направлениях как:

  • Реализация ИТ-проектов в области энергетики и ЖКХ;
  • Реализация проектов для государства;
  • Комплексные IT-проекты в области здравоохранения, культуры, образования;
  • Комплексная защита информации;
  • Профессиональные консультации в области информационных технологий;
  • Внедрение современных информационных технологий ведения бизнеса;
  • Разработка интернет-приложений (внешних и внутренних корпоративных порталов);
  • Интеграционные решения;
  • Поставки лицензионного программного обеспечения.

Штат группы компаний представлен высококвалифицированными специалистами с большим опытом работы в области разработки проектных решений. Сегодня в команде более 100 специалистов. Мы ценим каждого игрока команды, так как понимаем, что вклад любого из них – бесценен, как и сама способность работать в команде и разделять общие цели и задачи.

С целью постоянного наращивания компетенций специалисты посещают как внутренние корпоративные обучения, так и внешние курсы, и тренинги.

Глава 1. Задание

Целью практики является ознакомление магистром реального предприятия и условий работы на нем, получение прикладных навыков в разработке и сопровождении программ, изучении информационных потоков и документооборота, способов хранения и обработки информации, сбор материалов для отчета и предварительного выбора вероятной темы магистерской диссертации.

Глава 2. Постановка задачи

Ознакомление с платформой ASP.NET, которая позволяет с помощью языка программирования C# создавать веб-приложения, веб-сайты, веб-сервисы самых различных масштабов.

Глава 3. Обзор и анализ технических решений

3.1. Особенности ASP.NET MVC

Платформа ASP.NET MVC представляет собой Фреймворк для создания сайтов и веб-приложений с помощью реализации паттерна MVC.

Концепция паттерна (шаблона) MVC (model — view — controller) предполагает разделение приложения на три компонента:

Контроллер (controller) представляет класс, обеспечивающий связь между пользователем и системой, представлением и хранилищем данных. Он получает вводимые пользователем данные и обрабатывает их. И в зависимости от результатов обработки отправляет пользователю определенный вывод, например, в виде представления.

Представление (view) — это собственно визуальная часть или пользовательский интерфейс приложения. Как правило, html-страница, которую пользователь видит, зайдя на сайт.

Модель (model) представляет класс, описывающий логику используемых данных.

Общую схему взаимодействия этих компонентов можно представить следующим образом:

В этой схеме модель является независимым компонентом — любые изменения контроллера или представления не затрагивают модель. Контроллер и представление являются относительно независимыми компонентами, и нередко их можно изменять независимо друг от друга.

Благодаря этому реализуется концепция разделение ответственности, в связи с чем легче построить работу над отдельными компонентами. Кроме того, вследствие этого приложение обладает лучшей тестируемостью. И если нам, допустим, важная визуальная часть или фронтэнд, то мы можем тестировать представление независимо от контроллера. Либо мы можем сосредоточиться на бэкэнде и тестировать контроллер.

Конкретные реализации и определения данного паттерна могут отличаться, но в силу своей гибкости и простоты он стал очень популярным в последнее время, особенно в сфере веб-разработки.

Свою реализацию паттерна представляет платформа ASP.NET MVC. 2013 год ознаменовался выходом новой версии ASP.NET MVC — MVC 5, а также релизом Visual Studio 2013, которая предоставляет инструментарий для работы с MVC5.

Хотя во многих аспектах MVC 5 не слишком сильно будет отличаться от MVC 4, многое из одной версии вполне применимо к другой, но в то же время есть и существенные отличия:

В MVC 5 изменилась концепция аутентификации и авторизации. Вместо SimpleMembershipProvider была внедрена система ASP.NET Identity, которая использует компоненты OWIN и Katana.

Для создания адаптивного и расширяемого интерфейса в MVC 5 используется css-фреймворк Bootstrap

Добавлены фильтры аутентификации, а также появилась функциональность переопределения фильтров

В MVC 5 также добавлены атрибуты маршрутизации

Это наиболее важные нововведения в MVC 5. Кроме того, есть еще ряд менее значимых, например, использование по умолчанию Entity Framework 6, некоторые изменения при создании проекта (концепция One ASP.NET), дополнительные компоненты и т.д.

В любом случае все полученные при работе с MVC 4 навыки можно успешно применять при использовании MVC 5, учитывая, конечно, нововведения.

3.2. Начало работы с ASP.NET MVC

Для создания веб-приложений на платформе ASP.NET MVC 5 необходима среда разработки — Visual Studio 2013 или Visual Studio 2015.

Структура проекта MVC

Весь этот функционал обеспечивается следующей структурой проекта:

Вкратце рассмотрим, для чего нужны все эти папки и файлы.

  • App_Data: содержит файлы, ресурсы и базы данных, используемые приложением
  • App_Start: хранит ряд статических файлов, которые содержат логику инициализации приложения при запуске
  • Content: содержит вспомогательные файлы, которые не включают код на c# или javascript, и которые развертываются вместе с приложением, например, файлы стилей css
  • Controllers: содежит файлы классов контроллеров. По умолчанию в эту папку добавляются два контроллера — HomeController и AccountController
  • fonts: хранит дополнительные файлы шрифтов, используемых приложением
  • Models: содержит файлы моделей. По умолчанию Visual Studio добавляет пару моделей, описывающих учетную запись и служащих для аутентификации пользователя
  • Scripts: каталог со скриптами и библиотеками на языке javascript
  • Views: здесь хранятся представления. Все представления группируются по папкам, каждая из которых соответствует одному контроллеру. После обработки запроса контроллер отправляет одно из этих представлений клиенту. Также здесь имеется каталог Shared, который содержит общие для всех представления
  • asax: файл, запускающийся при старте приложения и выполняющий начальную инициализацию. Как правило, здесь срабатывают методы классов, определенных в папке App_Start
  • cs: поскольку в приложении MVC 5 используются библиотеки, применяющие спецификацию OWIN, то данный файл организует связь между OWIN и приложением. (OWIN представляет спецификацию, описывающую взаимодействие между компонентами приложения)
  • config: файл конфигурации приложения

Конкретная структура каждого отдельного приложения, естественно, будет отличаться, а гибкость MVC позволяет изменять структуру, приспосабливая, ее к своим потребностям. Но описанные выше моменты будут общими для большинства проектов.

3.3. Создание проекта

В проекте уже по умолчанию определена папка Models. В ней будут находиться наши модели. Нажмем на эту папку правой кнопкой мыши и в появившемся меню выберем Add->Class…. Назовем первый новый класс Book и добавим в него код, описывающий модель книги:

public class Book

{

// ID книги

public int Id { get; set; }

// название книги

public string Name { get; set; }

// автор книги

public string Author { get; set; }

// цена

public int Price { get; set; }

}

Подобным образом второй класс — модель Purchase, которая будет отвечать за отдельную совершаемую покупку книги:

public class Purchase

{

// ID покупки

public int PurchaseId { get; set; }

// имя и фамилия покупателя

public string Person { get; set; }

// адрес покупателя

public string Address { get; set; }

// ID книги

public int BookId { get; set; }

// дата покупки

public DateTime Date { get; set; }

}

Условности при создании моделей

Как вы видите, модель представляет обычный класс на языке C#.  Все модели здесь имеют набор свойств, описывающие реальные свойства объекта.  В то же время при создании моделей следует соблюдать некоторые условности. Поскольку мы будем использовать для хранения моделей базу данных SQL Server, то для манипуляции над объектами в базе данных нам надо

определить для них первичный ключ (Primary Key), который выполняет роль универсального идентификатора объекта. Поэтому первым свойством в каждой модели идет свойство Id, предназначенное для хранения первичного ключа.

EntityFramework

Для работы с данными в ASP.NET MVC рекомендуется использовать Фреймворк Entity Framework, хотя его использование необязательно и всецело зависит от предпочтений разработчика. Преимущество этого Фреймворка состоит в том, что он позволяет абстрагироваться от структуры конкретной базы данных и вести все операции с данными через модель.

Создание контекста данных

Контекст данных использует EntityFramework для доступа к БД на основе некоторой модели. Итак, добавим в папку Models новый класс BookContext:

public class BookContext : DbContext

{

public DbSet<Book> Books { get; set; }

public DbSet<Purchase> Purchases { get; set; }

}

CodeFirst

Хотя мы будем использовать базу данных, но создавать явным образом мы ее не будем. За нас все сделает EntityFramework. Это так называемый подход Code First — у нас есть модели, и по ним Фреймворк будет создавать таблицы в базе данных.

Так как с моделями и настройкой контекста данных мы закончили, то займемся другим компонентом приложения — контроллером. Для контроллеров предназначена папка Controllers.

По умолчанию при создании проекта в нее добавляется контроллер HomeController, который практически не имеет никакой функциональности. В контроллере определены по умолчанию три метода: Index, About и Contact. Нам они не нужны. Изменим код контроллера на следующий:

public class HomeController : Controller

{

// создаем контекст данных

BookContext db = new BookContext();

public ActionResult Index()

{

// получаем из бд все объекты Book

IEnumerable<Book> books = db.Books;

// передаем все объекты в динамическое свойство Books в ViewBag

ViewBag.Books = books;

// возвращаем представление

return View();

}

}

Теперь создадим само представление для вывода списка книг. Для представлений в проекте предназначена папка Views. По умолчанию в этой папке уже есть подкаталог для представлений контроллера Home, в котором три представления: About.cshtml, Contact.cshtml и Index.chtml.

Первые два представления нам уже не понадобятся, и их можно спокойно удалить. А представление Index.cshtml откроем и изменим следующим образом:

<!DOCTYPE html>

<html>

<head>

<meta name=»viewport» content=»width=device-width» />

<title>Книжный магазин</title>

</head>

<body>

<div>

<h3>Распродажа книг</h3>

<table>

<tr><td><p>Название книги</p></td>

<td><p>Автор</p></td>

<td><p>Цена</p></td><td></td>

</tr>

@foreach (var b in ViewBag.Books)

{

<tr>

<td><p>@b.Name</p></td>

<td><p>@b.Author</p></td>

<td><p>@b.Price</p></td>

<td><p><a href=»/Home/Buy/@b.Id»>Купить</a></p></td>

</tr>

}

</table>

</div>

</body>

</html>

Основы маршрутизации

Чтобы обратиться к контроллеру HomeController или отправить ему запрос, нам надо указать в строке запроса его имя — Home. Кроме того, после имени контроллера нам надо через слеш указать действие или метод контроллера, к которому отправляется запрос. По умолчанию при запуске проекта или при обращении к сайту система mvc будет вызывать действие Index контроллера HomeController, если мы не укажем иной маршрут по умолчанию в параметрах маршрутизации. Путь /Home/Buy означает, что мы будем обращаться к методу Buy контроллера HomeController. А добавление в запрос параметра/Home/Buy/@b.Id, означает, что такой метод может принимать параметр. Но перед тем как создать этот метод, наполним приложение данными.

Данные для моделей по умолчанию

Так как мы будем использовать подход Code First, то нам не надо вручную создавать базу данных и наполнять ее данными. Мы можем воспользоваться специальным классом, который за нас добавит начальные данные в БД. Для этого в папку Models добавим новый класс BookDbInitializer и изменим его код следующим образом:

public class BookDbInitializer : DropCreateDatabaseAlways<BookContext>

{

protected override void Seed(BookContext db)

{

db.Books.Add(new Book { Name = «Война и мир», Author = «Л. Толстой», Price = 220 });

db.Books.Add(new Book { Name = «Отцы и дети», Author = «И. Тургенев», Price = 180 });

db.Books.Add(new Book { Name = «Чайка», Author = «А. Чехов», Price = 150 });

base.Seed(db);

}

}

Однако, чтобы этот класс действительно сработал, и заполнение базы данных произошло, нам надо запустить его при запуске приложения. Все начальные настройки приложения и конфигурации находятся в файле Global.asax. Откроем его и добавим в метод Application_Start, который отрабатывает при старте приложения, следующую строку Database.SetInitializer (new BookDbInitializer());

И, наконец, мы можем запустить проект на выполнение и увидеть на веб-странице в браузере наши данные по умолчанию:

Теперь же создадим выше обсуждавшийся метод Buy, который отвечает за покупку книги. Добавим в контроллер HomeController следующие два метода:

[HttpGet]

public ActionResult Buy(int id)

{

ViewBag.BookId = id;

return View();

}

[HttpPost]

public string Buy(Purchase purchase)

{

purchase.Date = DateTime.Now;

// добавляем информацию о покупке в базу данных

db.Purchases.Add(purchase);

// сохраняем в бд все изменения

db.SaveChanges();

return «Спасибо,» + purchase.Person + «, за покупку!»;

}

И в конце добавим представление Buy.cshtml. Для этого нажмем на метод public ActionResult Buy(int id) правой кнопкой и в появившемся списке выберем Add View…(Добавить представление). Перед нами откроется окно добавления нового представления:

Оставим все установки по умолчанию, только снимем галочку с поля Use a layout page, так как пока мастер-страницу мы не будем использовать. И нажмем Add (Добавить). Изменим код нового представления следующим образом:

<!DOCTYPE html>

<html>

<head>

<meta name=»viewport» content=»width=device-width» />

<title>Покупка</title>

</head>

<body>

<div>

<h3>Форма оформления покупки</h3>

<form method=»post» action=»»>

<input type=»hidden» value=»@ViewBag.BookId» name=»BookId» />

<table>

<tr><td><p>Введите свое имя </p></td>

<td><input type=»text» name=»Person» /> </td></tr>

<tr><td><p>Введите адрес :</p></td><td>

<input type=»text» name=»Address» /> </td></tr>

<tr><td><input type=»submit» value=»Отправить» /> </td><td></td></tr>

</table>

</form>

</div>

</body>

</html>

Теперь запустим наше приложение. На главной странице выберем какую-нибудь книгу и нажмем на ссылку «Купить». На форме заполним поля и нажмем кнопку «Отправить».

После нажатия кнопки информация о покупке попадет в базу данных, а в браузер отобразит уведомление:

Заключение

Шаблон MVC используется в качестве архитектурной основы во многих Фреймворках и CMS, которые создавались для того, чтобы иметь возможность разрабатывать качественно более сложные решения за более короткий срок. Теперь мы умеем создавать красивую MVC модель, чтобы не перемешивать Php, Html, CSS и JavaScript код в одном файле.

Список использованных источников

1. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание, 2013. — 896 с.
2. Платформа ASP.NET [Электронный ресурс], https://metanit.com/sharp/mvc.php
3. ASP.NET MVC [Электронный ресурс], — http://asp.net/mvc
4. Bootstrap 3 [Электронный ресурс], — http://bootstrap-3.ru
5. ASP.NET и Visual Studio для веб-разработки [Электронный ресурс], — https://msdn.microsoft.com/ru-ru/library/dd566231.aspx