Преимущества ASP.NET перед ASP
Раздел 1
Описание технологии ASP.NET
ASP.NET (Active Server Pages для .NET) — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP.
ASP.NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP.NET. В то же время внутреннее устройство ASP.NET существенно отличается от ASP, поскольку она основана на платформе .NET и, следовательно, использует все новые возможности, предоставляемые этой платформой.
История ASP.NET
После выпуска сервера Internet Information Services 4.0 в 1997 году, компания Microsoft начала исследовать возможность новой модели веб-приложения, которая удовлетворит жалобы на ASP, особенно связанные с отделением оформления от содержания, и которая позволит писать «чистый» код. Работа по разработке такой модели была поручена Марку Андерсу, менеджеру команды IIS, и Скотту Гатри, поступившему на работу в Microsoft в 1997. Андерс и Гатри разработали первоначальный проект в течение двух месяцев, и Гатри написал код первоначального прототипа во время рождественских каникул 1997 года.
Первоначальный проект назывался «XSP»; Гатри объяснил в интервью 2007 года, что «всегда спрашивают, что означает буква X. В то время она ничего не значила. XML начинается с неё; XSLT начинается с неё. Все клевое начинается с X, поэтому мы его так и назвали.» Прототип XSP был написан на Java, так как на тот момент у Microsoft не было Java-подобной технологии. В то время уже предполагалось (небезосновательно, как выяснилось в дальнейшем), что лицензирование Java для Microsoftне будет продлено в 2003 году (в 2003 истекал срок выданной Sun Microsystems лицензии). В 1999 было решено построить новую платформу на основе Common Language Runtime (CLR), так как в нём, как и в Java, наличествовали программирование по принципам ООП, сборка мусора и другие возможности. Гатри описал это решение как «огромный риск», так как успех новой разработки был связан с успехом CLR, которая, как и XSP, находилась на ранней стадии разработки.
Принципы 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) позволяют выделять часто используемые шаблоны, такие как меню сайта
· Использование метафор, уже применяющихся в Windows-приложениях, например, таких как элементы управления и события
· Расширяемый набор элементов управления и библиотек классов позволяет быстрее разрабатывать приложения
· ASP.NET опирается на многоязыковые возможности .NET, что позволяет писать код страниц на VB.NET, Delphi.NET, Visual C#, J# и т. д.
· Возможность кэширования всей страницы или её части для увеличения производительности
· Возможность кэширования данных, используемых на странице
· Возможность разделения визуальной части и бизнес-логики по разным файлам («code behind»)
· Расширяемая модель обработки запросов
· Расширенная событийная модель
· Расширяемая модель серверных элементов управления
· Наличие master-страниц для задания шаблонов оформления страниц
· Поддержка CRUD-операций при работе с таблицами через GridView
· Встроенная поддержка AJAX
· ASP.NET имеет преимущество в скорости по сравнению с другими технологиями, основанными на скриптах.
Паттерн MVC
Контрольную работу я решил выполнять по принципам MVC, благодаря чему создается четкая инкапсуляция кода, более понятная структура приложения, и возможность легкого масштабирования и модификации приложения.
Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
· Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя свое состояние.
· Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели.
· Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.
Назначение
Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:
1. К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы;
2. Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) — для этого достаточно использовать другой контроллер;
3. Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
Концепция
Модель
Модель предоставляет данные и методы работы с ними: запросы в базу данных, проверка на корректность. Модель не зависит от представления — не знает как данные визуализировать — и контроллера — не имеет точек взаимодействия с пользователем — просто предоставляя доступ к данным и управлению ими. Модель строится таким образом, чтобы отвечать на запросы, изменяя своё состояние, при этом может быть встроено уведомление «наблюдателей». Модель, за счёт независимости от визуального представления, может иметь несколько различных представлений для одной «модели».
Представление
Представление отвечает за получение необходимых данных из модели и отправляет их пользователю. Представление не обрабатывает введённые данные пользователя. Представление может влиять на состояние модели, сообщая модели об этом.
Контроллер
Контроллер обеспечивает «связи» между пользователем и системой. Контролирует и направляет данные от пользователя к системе и наоборот. Использует модель и представление для реализации необходимого действия.
Раздел 2
Техническое задание
Раздел 3
Этапы создания приложения
Описание приложения
Модель
TestClass.cs модель, описывающая объекты, с которыми будет взаимодействовать приложение. Аналогично, таблице реляционной базы данных.
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace TestAspNet45
{
public class TestClass
{
public string Id { get; set; } //Номер объявления
[Required] //Параметр валидации поля
public string Title { get; set; } //заголовок объявления
[Required]
public string Body { get; set; } //Текст объявления
[Required]
public string Phone { get; set; } //Номер телефона
public bool? WillAttend { get; set; } //параметр актуальности объявления
}
}
Repository.cs модель, описывающая функции взаимодействия с объектами модели, содержащими данные, которые хранит приложение.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TestAspNet45
{
public class Repository //модель с механизмами взаимодействия с хранилищем
{
private static Repository repository = new Repository(); //Создание экземпляра класса модели взаимодействия
private List<TestClass> responses = new List<TestClass>(); //Список объектов модели хранилища
public static Repository GetRepository() { // "Геттер", функция для получения хранилища
return repository;
}
public IEnumerable<TestClass> GetAllResponses() { // "Геттер", функция для получения перебора объектов хранилища
return responses;
}
public void AddResponse(TestClass response) { //Добавление объекта в хранилище
responses.Add(response);
}
}
}
Контроллеры
Summary.aspx.cs контроллер главной страницы, формирующий динамический контент, расширяя страницу шаблон(мастер-страницу). В связке Viewer-Controller Summary применено 2 способа формирования динамического контента- в Представлении(не правильно), и в Контроллере(правильно).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestAspNet45
{
public partial class Summary : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{}
protected string GetNoShowHtml() //Пример вывода дигнамической разметки из контроллера
{
StringBuilder html = new StringBuilder(); //создание строки
var noData = Repository.GetRepository().GetAllResponses().Where(i => !i.WillAttend.Value); //Получение значений из хранилища по ключу
foreach (var rsvp in noData) { //Перебор значений
html.Append(String.Format("<div>" +
"<h3> Тема: {1} </h3> </ br>" +
"<p>{2}</p> </ br>" +
"<h3> Номер телефона: {3} </h3>   <a href=Default.aspx?id={0}>Убрать?</a>" +
"</div>", rsvp.Id, rsvp.Title, rsvp.Body, rsvp.Phone)); //Формирование динамической разметки
}
return html.ToString(); //возврат строки в представление
}
}
}
Default.aspx.cs Контроллер страницы добавления контента. Отвечает за создание новых объектов в хранилище, и смены флага активности объявления. Показывает способы обработки Get и Post запросов.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.ModelBinding;
namespace TestAspNet45
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e) //Функиця, отвечающая за дейсвтие при загрузке страницы
{
if (IsPostBack) // Если приходит Post-данные, например кнопка send формы
{
TestClass rsvp = new TestClass(); //создание экземпляра модели
if (TryUpdateModel(rsvp, new FormValueProvider(ModelBindingExecutionContext))) //попытка заполнить поля модели данными из формы
{
rsvp.Id = Repository.GetRepository().GetAllResponses().Count().ToString(); //Создание порядкового номера
rsvp.WillAttend = true; //Активация объявления
Repository.GetRepository().AddResponse(rsvp); //добавление объекта в хранилище
Response.Redirect("Summary.aspx"); //редирект на главную страницу
}
}
if (Request.QueryString["id"] != null) { //Если страница открывается с параметром id
string id = Request.QueryString["id"];
var noData = Repository.GetRepository().GetAllResponses().Where(i => i.WillAttend.Value); //то получаем из хранилища объекты с активными объявлениями
foreach(var r in noData) //перебираем
{
if (r.Id == id) //и ищем значения, равные параметру id
{
r.WillAttend = false; //и снимаем флаг активности
break;
}
}
Response.Redirect("Summary.aspx"); //переходим на главную страницу
}
}
}
}
Представления
Front-end составляющая приложения создалась в цветовых тонах и стилях, позволяющих легко визуально контролировать расположение статических блоков, и блоков динамического контента.
Style.css файл каскадных таблиц стилей, несущий в себе описание стилей для всего приложения.
#rsvpform label{ width: 120px; display: inline-block; } #rsvpform input { margin: 2px; margin-left: 4px; width: 150px; } #rsvpform select { margin: 2px 0; width: 154px; } button[type=submit] { margin-top: 15px; padding: 5px; } table, td, th { border: thin solid black; border-collapse: collapse; padding: 5px; background-color: lemonchiffon; text-align: left; margin: 10px 0; } #validationSummary { color: red; } #willattend { height: 40px; width: 349px; } body { background-color: darkgrey; } #container { background-color:brown; width: 80%; height: auto; margin: 0 auto; } #header { background-color: wheat; width: 100%; height: 100px; } .c { border: 1px solid #333; display: inline-block; padding: 10px 15px; text-decoration: underline; color: #000; | } .c:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); background: linear-gradient(to bottom, #fcfff4, #e9e9ce); color: #a00; //margin-top: 50px; } #head_h { font-family: Mistral; color: red; -webkit-text-stroke: 1px black; } .content_div div { width: 70%; background-color: blueviolet; margin: 0 auto; } |
Site1.master файл шаблон Представления(мастер-страница). Еще один хороший подход в практике веб-программирования. Использование шаблонов Представлений позволяет делать приложение более гибким, сокращает код и позволяет внося изменения в один файл- вносить изменения во внешний вид приложения в целом.
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="TestAspNet45.Views.Site1" %>
<!DOCTYPE html>
<!-- мастер старница(шаблон представления приложения) -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link rel="stylesheet" href="~/Styles.css" /> <!-- подключение файла стилей -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<div id="container">
<div id="header">
<div id="top" class="head_inside">
<h1 align="center" id="head_h" >Площадка для размещения объявлений</h1>
</div>
<div id="menu" class="head_inside">
<a href="Summary.aspx" class="c">На главную</a>
<a href="Default.aspx" class="c">Добавить объявление</a>
</div>
</div>
<div class="content_div"> <!-- Контейнер содержимого -->
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> <!-- Подключения динамического контента в шаблон -->
</asp:ContentPlaceHolder>
</div>
</div>
</body>
</html>
Summary.aspx Представление главной страницы. Содержимое представления встраивается в верстку мастер-страницы, создавая законченный вид приложения. Имеет элементы формирования динамического контента.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Summary.aspx.cs" Inherits="TestAspNet45.Summary"
MasterPageFile="~/Views/Site1.master" Title="Title" %>
<%@ Import Namespace="TestAspNet45" %> <!-- Служебная информация, включая подключение мастер-страницы(шабблона представления) -->
<asp:Content ID="Conten1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server" > <!-- Все, что в этом блоке- будет встроено в представление шаблона-->
<h2>Актуальные объявления</h2>
<% var yesData = Repository.GetRepository().GetAllResponses().Where(r => r.WillAttend.Value);
foreach (var rsvp in yesData) {
string htmlString = String.Format("<div>" +
"<h3> Тема: {1} </h3> </ br>" +
"<p>{2}</p> </ br>" +
"<h3> Номер телефона: {3} </h3>   <a href=Default.aspx?id={0}>Убрать?</a>" +
"</div>", rsvp.Id, rsvp.Title, rsvp.Body, rsvp.Phone);
Response.Write(htmlString);
}
%> <!-- Пример динамической разметки в представлении -->
<h2>Не актуальные объявления</h2>
<%= GetNoShowHtml()%> <!-- вывод динамической разметки из контроллера -->
</asp:Content>
Верстка сайта без динамического контента.
Default.aspx Представление формы добавления новых объявлений. Не получилось подсунуть это представление в мастер-страницу из за изменение имен элементов формы.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestAspNet45.WebForm1" %>
<!DOCTYPE html>
<!-- страница без использования шаблона, так как не смог справится с проблеммой переименования элементов формы -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link rel="stylesheet" href="~/Styles.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<div id="container"> <!-- стандартная разметка шаблона -->
<div id="header">
<div id="top" class="head_inside">
<h1 align="center" id="head_h" >Площадка для размещения объявлений</h1>
</div>
<div id="menu" class="head_inside">
<a href="Summary.aspx" class="c">На главную</a>
</div>
</div>
<div class="content_div">
<form id="rsvpform" runat="server" > <!-- Форма, передающая данные контроллеру -->
<asp:ValidationSummary ID="validationSummary" runat="server" ShowModelStateErrors="true" /> <!-- тег валидации -->
<div>
<h1>Форма добавления объявления:</h1>
<label> Тема: </label> <input type="text" id="title" name="title" runat="server"/>
</div>
<div>
<label> Содержание: </label> <input type="text" id="body" runat="server"/>
</div>
<div>
<label> Номер телефона: </label> <input type="text" id="phone" runat="server"/>
</div>
<div>
<button type="submit">Отправить объявление</button>
</div>
</form>
</div>
</body>
</html>
Верстка формы добавления новых объявлений.
Пример использования приложения
В связи с отсутствием базы данных- каждый перезапуск приложения влечет за собой удаление всех созданных данных. Первый запуск приложения
Объявлений пока нет, но их можно до бавить!
Переходим во вкладку «Добавить объявление»:
Нас встречает форма добавления объявлений.
После добавления на главной странице формируется динамический контент с данными, которые написал пользователь. И ссылка, предлагающая убрать объявление в не активные. Добавим еще несколько штук.
При попытке отправить форму с незаполненными одним или несколькими полями- сработает валидация.
Добавлено несколько объявлений. Можно попробовать одно удалить. Поле id, как Primary key, отвечает за уникальность, и с его помощью можно удалять объявления, не боясь ошибиться.
Контроллер меняет параметр, отвечающий за активность объявления, и оно переходит в стадию не активных.
Раздел 4
Вывод
В рамках контрольной работы было создано простое web-приложение. Я изучил основы технологии ASP.NET, языка C#, и устройство приложения с использованием этих технологий. Так же я применил современные концепции в веб-разработке(MVC, шаблон представления), которые используются повсеместно. Не со всеми проблемами получилось справиться. Я так и не смог разобраться как засовывать формы в шаблоны представлений, чтобы не изменялись имена элементов, либо обращаться в контроллере к измененным именам. При необходимости развития приложения- требуется написать пагинатор для динамического контента главной страницы, админ панель, сложную валидацию, аутентификацию, и подключить базу данных.
Список литературы
https://habrahabr.ru
https://www.asp.net
https://professorweb.ru
Раздел 1
Описание технологии ASP.NET
ASP.NET (Active Server Pages для .NET) — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP.
ASP.NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP.NET. В то же время внутреннее устройство ASP.NET существенно отличается от ASP, поскольку она основана на платформе .NET и, следовательно, использует все новые возможности, предоставляемые этой платформой.
История ASP.NET
После выпуска сервера Internet Information Services 4.0 в 1997 году, компания Microsoft начала исследовать возможность новой модели веб-приложения, которая удовлетворит жалобы на ASP, особенно связанные с отделением оформления от содержания, и которая позволит писать «чистый» код. Работа по разработке такой модели была поручена Марку Андерсу, менеджеру команды IIS, и Скотту Гатри, поступившему на работу в Microsoft в 1997. Андерс и Гатри разработали первоначальный проект в течение двух месяцев, и Гатри написал код первоначального прототипа во время рождественских каникул 1997 года.
Первоначальный проект назывался «XSP»; Гатри объяснил в интервью 2007 года, что «всегда спрашивают, что означает буква X. В то время она ничего не значила. XML начинается с неё; XSLT начинается с неё. Все клевое начинается с X, поэтому мы его так и назвали.» Прототип XSP был написан на Java, так как на тот момент у Microsoft не было Java-подобной технологии. В то время уже предполагалось (небезосновательно, как выяснилось в дальнейшем), что лицензирование Java для Microsoftне будет продлено в 2003 году (в 2003 истекал срок выданной Sun Microsystems лицензии). В 1999 было решено построить новую платформу на основе Common Language Runtime (CLR), так как в нём, как и в Java, наличествовали программирование по принципам ООП, сборка мусора и другие возможности. Гатри описал это решение как «огромный риск», так как успех новой разработки был связан с успехом CLR, которая, как и XSP, находилась на ранней стадии разработки.
Принципы 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) позволяют выделять часто используемые шаблоны, такие как меню сайта
· Использование метафор, уже применяющихся в Windows-приложениях, например, таких как элементы управления и события
· Расширяемый набор элементов управления и библиотек классов позволяет быстрее разрабатывать приложения
· ASP.NET опирается на многоязыковые возможности .NET, что позволяет писать код страниц на VB.NET, Delphi.NET, Visual C#, J# и т. д.
· Возможность кэширования всей страницы или её части для увеличения производительности
· Возможность кэширования данных, используемых на странице
· Возможность разделения визуальной части и бизнес-логики по разным файлам («code behind»)
· Расширяемая модель обработки запросов
· Расширенная событийная модель
· Расширяемая модель серверных элементов управления
· Наличие master-страниц для задания шаблонов оформления страниц
· Поддержка CRUD-операций при работе с таблицами через GridView
· Встроенная поддержка AJAX
· ASP.NET имеет преимущество в скорости по сравнению с другими технологиями, основанными на скриптах.
Паттерн MVC
Контрольную работу я решил выполнять по принципам MVC, благодаря чему создается четкая инкапсуляция кода, более понятная структура приложения, и возможность легкого масштабирования и модификации приложения.
Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
· Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя свое состояние.
· Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели.
· Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.
Назначение
Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:
1. К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы;
2. Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) — для этого достаточно использовать другой контроллер;
3. Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
Концепция
Модель
Модель предоставляет данные и методы работы с ними: запросы в базу данных, проверка на корректность. Модель не зависит от представления — не знает как данные визуализировать — и контроллера — не имеет точек взаимодействия с пользователем — просто предоставляя доступ к данным и управлению ими. Модель строится таким образом, чтобы отвечать на запросы, изменяя своё состояние, при этом может быть встроено уведомление «наблюдателей». Модель, за счёт независимости от визуального представления, может иметь несколько различных представлений для одной «модели».
Представление
Представление отвечает за получение необходимых данных из модели и отправляет их пользователю. Представление не обрабатывает введённые данные пользователя. Представление может влиять на состояние модели, сообщая модели об этом.
Контроллер
Контроллер обеспечивает «связи» между пользователем и системой. Контролирует и направляет данные от пользователя к системе и наоборот. Использует модель и представление для реализации необходимого действия.