Чтение онлайн

на главную - закладки

Жанры

Шрифт:

? Молодость технологии. Поскольку релиз MVC Framework вышел всего за несколько месяцев до момента написания этих строк, сообщество разработчиков не накопило еще того опыта, который накоплен с WebForms, а компании-разработчики компонентов еще не создали такого большого количества расширений для MVC Framework, как в случае с WebForms.

Выбор подхода к разработке веб-приложения

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

меньшими усилиями и упростить дальнейшую поддержку проекта. Приступая к проектированию очередного веб-приложения, вы, возможно, задумаетесь о выборе подхода WebForms или MVC Framework.

Как уже было сказано ранее, такой выбор можете сделать только вы, основываясь на своих знаниях технологии WebForms и MVC Framework, исходя из требований того самого приложения, над которым вы размышляете. Тем не менее постараемся сформулировать список требований, который может пригодиться при выборе между WebForms и MVC Framework. Требования с краткими комментариями приведены в табл. 2.1. Большинство приведенных требований весьма условны и предназначены лишь для того, чтобы дать читателю пищу для размышлений.

Рассмотрев приведенные в табл. 2.1 требования, можно грубо определить, насколько MVC Framework может быть использована для решения конкретной поставленной задачи.

Нужно отметить еще один важный принцип, который может быть полезен при выборе технологии: предыдущий опыт разработки участников команды, которая будет работать над новым проектом. В случае если у членов команды был опыт создания приложений с использованием платформы PHP, Ruby, Perl и т. п., то очевидным выбором будет MVC Framework, однако если члены команды имеют большой опыт разработки с использованием WebForms или JSP, то переход на MVC Framework может быть для них достаточно длительным, поскольку работа с технологиями вроде WebForms вырабатывает определенный стиль кодирования, и для упрощения разработки и поддержки могут быть использованы различные архитектурные подходы (например, такие как Web Client Software Factory от команды Patters & Practices в Microsoft). MVC Framework навязывает общую архитектуру и подход к написанию кода веб-приложения, а привычки достаточно сложно изменить. Поэтому, если сроки сдачи проекта небольшие, а в команде в основном программисты, знакомые с WebForms, данный аргумент может пересилить все остальные, приведенные ранее.

Реализация подхода MVC в WebForms

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

Рассмотрим ASPX-страницу, приведенную в листинге 2.1. На этой странице размещены несколько элементов управления Label, TextBox и Button. Логика страницы должна быть простой, и в классической модели WebForms описывается в code-behind-файле, код которого приведен в листинге 2.2.

Листинг 2.1. Страница Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"

CodeBehind="Default.aspx.cs" Inherits="WebFormsMvc._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<div>

<div>

Ответ сервера:

<asp:Label ID="lblResponse" runat="server"

Text="noKa HeT"></asp:Label>

</div>

<table>

<tr>

<td>

Имя:

</td>

<td>

<asp:TextBox ID="txtFirstName"

runat="server"></asp:TextBox>

</td>

</tr>

<tr>

<td>

Фамилия:

</td>

<td>

<asp:TextBox ID="txtLastName"

runat="server"></asp:TextBox>

</td>

</tr>

<tr>

<td colspan="2">

<asp:Button ID="btnSave" runat="server"

Text="Coxpaнить" onclick="btnSave_Click" />

</td>

</tr>

</table>

</div>

</form>

</body>

</html>

Листинг 2.2. Файл Default.aspx.cs

using System;

using WebFormsMvc.Controllers;

namespace WebFormsMvc {

{

protected void btnSave_Click(object sender, EventArgs e) {

lblResponse.Text = txtFirstName.Text + " "

+ txtLastName.Text; }

}

}

Для того чтобы выделить отдельный компонент контроллер, который будет отвечать за логику обработки запросов к странице, таких, например, как щелчок по кнопке или загрузка первоначальных значений в текстовые поля, необходимо обеспечить возможность контроллера модифицировать модель, отображением которой является представление. В случае ASPX-страницы моделью является собственно сама объектная модель страницы, поэтому именно к ней нужно предоставить доступ контроллеру — для этого достаточно отредактировать CS-файл, автоматически создаваемый Visual Studio для страницы, и сделать все поля, соответствующие элементам управления на форме, публичными, как это приведено в листинге 2.3.

Листинг 2.3. Модифицированный файл Default.aspx.designer.cs

namespace WebFormsMvc {

public partial class _Default {

public global::System.Web.UI.HtmlControls.HtmlForm form1;

public global::System.Web.UI.WebControls.Label lblResponse;

public global::System.Web.UI.WebControls.TextBox txtFirstName;

public global::System.Web.UI.WebControls.TextBox txtLastName;

public global::System.Web.UI.WebControls.Button btnSave;

}

}

После этого можно создать отдельный класс-контроллер для страницы Default.aspx, код которого приведен в листинге 2.4, и обращаться к нему из обработчиков событий страницы, как это показано в листинге 2.5. Обработчики событий страницы, в данном случае, выполняют только утилитарную роль привязки вызовов методов контроллера к событиям страницы.

Листинг 2.4. Файл DefaultPageControNer.cs

namespace WebFormsMvc.Controllers {

Поделиться:
Популярные книги

"Если бы не сталинские репрессии!". Как Вождь спас СССР.

Романенко Константин Константинович
Сталинист
Научно-образовательная:
история
политика
3.40
рейтинг книги
Если бы не сталинские репрессии!. Как Вождь спас СССР.

Фантастика. Путеводитель

Weeldoon
Справочная литература:
руководства
5.00
рейтинг книги
Фантастика. Путеводитель

Виллет

Бронте Шарлотта
Проза:
классическая проза
8.57
рейтинг книги
Виллет

Паразиты: Пророк

Ханси Кай
1. Инопланетное Вторжение
Фантастика:
попаданцы
рпг
постапокалипсис
5.00
рейтинг книги
Паразиты: Пророк

Нужные вещи

Кинг Стивен
16. Темная Башня
Фантастика:
ужасы и мистика
9.10
рейтинг книги
Нужные вещи

"Фантастика 2023-130". Компиляция. Книги 1-22

Демченко Антон Витальевич
Фантастика 2023. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2023-130. Компиляция. Книги 1-22

Илон Маск

Айзексон Уолтер
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Илон Маск

Падение Парижа

Эренбург Илья Григорьевич
Проза:
современная проза
5.00
рейтинг книги
Падение Парижа

Искушение чародея (сборник)

Булычев Кир
Фантастика:
научная фантастика
космическая фантастика
6.20
рейтинг книги
Искушение чародея (сборник)

Крест и корона

Бильо Нэнси
1. Корона
Детективы:
исторические детективы
5.33
рейтинг книги
Крест и корона

Паутина грез

Эндрюс Вирджиния
5. Кастил
Любовные романы:
современные любовные романы
7.89
рейтинг книги
Паутина грез

Переплет 13

Уолш Хлоя
1. Парни из школы Томмен
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Переплет 13

Гранд-адмирал. Том первый

Модус Илья Сергеевич
1. Тринадцатый
Фантастика:
боевая фантастика
космическая фантастика
7.00
рейтинг книги
Гранд-адмирал. Том первый

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.50
рейтинг книги
Имперец. Том 3