Новейшие технологии

Сравнений веб-форм и ASP.NET MVC

Дино Эспозито

Содержание

Преимущества XML (веб-службы) Web
Недостатки Web
Преимущества XML (веб-службы) MVC
Недостатки XML (веб-службы) MVC
Правая перспективы
Какова безопасной модели для XML (веб-службы)?
Undisputable факты
В конце дня

Сначала я увидел Microsoft XML (веб-службы) в действии в 1999 году, когда он был под вопросом именем ASP +. В это время создание приложений Web на платформе Майкрософт был сборка множество из (ASP) в зависимости от.

В типичной странице ASP найдите литералы HTML перемежаются текстового блока с помощью блоков кода. В блоках кода кода сценария (в основном VBScript) используется для включения данные, созданные объектами COM, таких как компоненты из структуры объектов данных ActiveX (ADO). Без сомнения, введения XML (веб-службы) в конце 1990-х годов была большой шаг вперед, представленных смарт-способ автоматизации производства HTML, отображаемое в обозревателе клиента.

XML (веб-службы) упрощенное ряд повседневных задач, и еще более важно то, что включена разработчикам работать на более высоком уровне abstraction.This разрешено их фокус несколько основных функций веб-приложения, а не общие задачи вокруг веб-страницы.

Серверные элементы управления на основе XML (веб-службы) позволяет разработчикам создавать веб-узлов и приложений с минимальными навыки HTML и JavaScript реального мира. Всего точки XML (веб-службы) является производительность достигается через мощные средства интегрированы в среду выполнения, а также резервов средства разработки, например серверных элементов управления, пользовательские элементы управления, события обратной передачи, состояние отображения, проверка подлинности форм и встроенные объекты. Модель позади XML (веб-службы) называется Web и было четко вдохновили моделью рабочего стола Windows Forms (inspired глубоко в свою очередь, философия быстрой разработки приложений Visual Basic).

Так почему Microsoft выпуска «другой»XML (веб-службы) платформы, называется XML (веб-службы) MVC? В этой статье я рассмотрю и против обоих XML (веб-службы) и XML (веб-службы) MVC.

Преимущества XML (веб-службы) Web

Как было отмечено, XML (веб-службы) Web Forms является стабильным и квалифицированная и он поддерживается куч сторонних элементов управления и средств.

Одна из клавиш быстрого принятия XML (веб-службы) определенно является метафоры точку и щелкните берется из рабочего стола разработки приложений Windows. С помощью веб-форм Microsoft по сути расширен модель программирования Visual Basic для веб-узла. Рабочего стола разработки, однако является с ведением базы данных, тогда как веб-узла является по существу не имеют состояний. Поэтому модель Web Forms по сути абстрагирована ряд возможностей, предоставляют моделирования с ведением базы данных модель для разработчиков. Как следствие не нужно быть веб-узел эксперта с большим количеством HTML и JavaScript knowledgeto написания эффективных приложений Web.

Дважды для имитации полноценный возможности формы представлены такие как состояние отображения, обратные передачи и пример общей paradigm.For событийно программирования через Интернет XML (веб-службы) Web разработчик скажем, щелкните кнопку, чтобы автоматически создать заглушку кода, который будет обрабатывать выбрав пользователя на сервер. Только, чтобы начать запись XML (веб-службы) веб-приложения, необходимо знать основы разработки .NET, интерфейс программирования некоторые нерегламентированных компоненты, как серверные элементы управления. Серверные элементы управления, генерирующие HTML программно и среды выполнения конвейера, существенно влияет цикла быстрой разработки.

В конце дня ключевые возможности XML (веб-службы) Web, просто componentization рекомендации ASP. Например обратная передача, автоматическое заполнение поля ввода, проверки подлинности и авторизации до отрисовки страницы, серверные элементы управления и компиляции страницы, не являются функции разработали временный и создать с нуля для XML (веб-службы) Web Forms. Все из них развивались с ASP рекомендации. Десять лет назад, разработчикам ASP (включая себя) искали точно набор функций Web завершения до предоставления. Кроме того XML (веб-службы) Web обычно превышает нашим ожиданиям, предоставляя уровень полного абстракции поверх всего стека Web: JavaScript, CSS, HTML-код.

Чтобы записать на странице ASP, необходимо знать совсем немного языками сценариев и веб. Для записи XML (веб-службы) страницы, напротив, необходимо знать преимущественно о .NET и скомпилированные языков. Производительность и быстрой разработки приложений, управляемых данными, бизнес-были точек продаж XML (веб-службы) Web Forms. До сих это.

Недостатки Web

Как и многие другие вещи в этом мире неидеальная XML (веб-службы) Web Forms не без проблем. Лет доказать за разумный сомнения, разделение задач (SoC) не была естественным соответствия с парадигмой Web Forms.

Автоматизированное тестирование веб XML (веб-службы)-формы жесткого приложение и не только из-за недостатка SoC. XML (веб-службы) Web Forms основана на монолитных среды, которые могут быть расширены до некоторой степени, но не подключаемых и гибкую систему. Это практически невозможно проверить XML (веб-службы) приложения без вращающийся вверх всей среды выполнения.

Для достижения statefulness последнее известное состояние каждой серверной страницы хранится в страницу клиента в качестве скрытого поля — событие просмотра состояния. Хотя состояние отображения был слишком часто удерживаются в качестве примера, что случилось с Web Forms, он не monster, он сделан необходимо. На самом деле с помощью стиле состояние отображения структуры в классическом ASP был новейшие решения. С точки зрения ASP моделирования statefulness (т.е., обратной передачи, состояние отображения, элементов управления) было очень достижения и же также было сказано в первую очередь о как Web изолированного непосредственно из HTML и JavaScript.

Для современных веб-страниц абстракции от HTML является серьезной проблемы как уменьшает специальных возможностей, совместимость с обозревателями и интеграция с популярных платформ JavaScript jQuery, Dojo и PrototypeJS. Модели обратной передачи, по умолчанию каждой страницы для отправки, затрудняет для поисковых для ранг XML (веб-службы) высокой страниц. Поисковые системы и пауков работать лучше со ссылками с параметрами, лучше, если rationalized восприятия строк. Модели обратной передачи переход в обратном направлении. Кроме того, слишком большого размера состояния представления является проблематичной, поскольку Ранг основывается на ключевое слово может быть находится за пределами событие просмотра состояния и поэтому далеко от верхнего края документа. Некоторые модули в этом случае распознает низким рангом.

Преимущества XML (веб-службы) MVC

Некоторые из проблем распознанный с моделью Web Forms могут быть исправлены в ASP.NET 4.0. Отключите или размер событие просмотра состояния. (Даже если очень немногим разработчикам показаться заметили, размер событие просмотра состояния значительно уменьшается в переходе от XML (веб-службы) 1.1 для XML (веб-службы) 2.0 когда появился гораздо более эффективный алгоритм сериализации. В XML (веб-службы) 4.0, следует также ожидать усовершенствования образом, в котором состояние отображения могут быть отключены и контролируется.) Можно использовать нерегламентированные HTTP-модуль сделать переписывания URL-адресов, или что еще лучше, можно использовать новейшие веб-узла Маршрутизация API из XML (веб-службы) 3.5 SP1. В XML (веб-службы) 4.0 можно minutely управлять идентификатор элементов, включая области элементов. Аналогично, в XML (веб-службы) 4.0 интеграции платформ внешних JavaScript будет проще и эффективнее. Наконец, журнал управления API в XML (веб-службы) 3.5 SP1 AJAX и обратной передачи совместно при производстве страницы поиска обработчика понятное.

В многие аспекты модели веб-форм в XML (веб-службы) 4.0 является лучшим средой, разбирает некоторые вышеупомянутый недостатки. Так что такое точки XML (веб-службы) MVC?

Вы найдете хорошо введение MVC XML (веб-службы) проблемы за март 2008 года MSDN Magazine ("создания приложения Web без Web"), где Tavares ресурсу объясняются основы XML (веб-службы) разработки без Web Forms. В целом, XML (веб-службы) MVC – это совершенно новый платформа для построения XML (веб-службы) приложений, разработан с нуля вверх с SoC и пригодности для тестирования в виду. При написании приложения XML (веб-службы) MVC вы подумать, что в терминах контроллеров и представлений. Необходимо принять решения о передачи данных в представлении и предоставлять среднего уровня на контроллеры. Контроллер выбирает представления для отображения на основе запрошенного URL-адреса и сопутствующие данные. Каждый запрос разрешается путем вызова метода в классе контроллера. Обратные передачи не никогда не требуется для обслуживания запроса пользователя. Состояние представления не никогда не требуется сохранять состояние страницы. Для создания HTML для обозревателя arraysof черный квадрат серверные элементы управления не существует.

С помощью XML (веб-службы) MVC, rediscover хорошо вкусом старый веб-узла — без сохранения состояния поведения, полный контроль над каждого одного бита HTML, общий сценарий и свободы CSS.

HTML, обслуживаемых в обозреватель создаются отдельные и заменяемые, ядро. О находится зависимостей в физическом сервере файлы ASPX. Файлы ASPX по-прежнему может быть частью проекта, но они теперь служат простых шаблонов HTML, вместе с ними классы кода программной. Механизм представления по умолчанию основан на механизм визуализации веб-форм, но использовать другие подключаемые модули например nVelocity или XSLT. (Для получения дополнительных сведений, взгляните на MVCContrib веб-узел по адресу mvccontrib.codeplex.com.)

Среды выполнения в основном же, как в XML (веб-службы) Web, но цикла запрос проще и более прямой. Важной частью модели Web, жизненный цикл страницы нет необходимости в XML (веб-службы) MVC. Следует отметить, однако механизм представления по умолчанию в XML (веб-службы) MVC по-прежнему основана на механизм визуализации веб-форм. Это прием, позволяющий использовать главные страницы и некоторых серверных элементов управления в представлениях XML (веб-службы) MVC. Пока обработчик просмотра основана на веб-формы, представления является файлом ASPX с классом регулярных программной можно обрабатывать обычные события, например инициализации, загрузка, PreRender плюс события элемента управления, такие как RowDataBound элемента управления GridView. Если выключить механизм представления по умолчанию больше не необходимо Page_Loador другие события жизненного цикла стандартная страница. На рис. 1 сравнивает стека во время выполнения для веб-форм и XML (веб-службы) MVC.

fig01.gif

Рисунок 1 стека во время выполнения с первого взгляда (щелкните изображение для его увеличения)

Следует отметить, «жизненный цикл страницы»полях рис. 1 свернут для восприятия и включать несколько дополнительных событий каждый. В любом случае стек во время выполнения XML (веб-службы) MVC проще, а отличием является отсутствия жизненного цикла страницы. Однако это делает проблемных для поддержания состояния визуальных элементов между запросами страницы. Состояние может быть сохранено в сеансе или кэше, но это решение остается для разработчика.

Figure 2 illustrates the sequence of an ASP.NET MVC request.

fig02.gif

Запрос схемы последовательности MVC XML (веб-службы) на рис. 2 (щелкните изображение для его увеличения)

MVC аббревиатура расшифровывается как модель визуализация контроллер. Однако следует отметить, шаблон на рис. 2 не точно соответствует классический формулировка шаблона MVC. В частности в исходном документе MVC модель и представление связаны вместе через связь наблюдателя. Шаблона MVC, однако намеренно слабо определяется и разработали даже более важно то, что было временный при веб-узла все равно приходят. Адаптация MVC веб-перемещена сторону модели в рис. 2, который также называется Model2. В общем случае при разговора или сведения о MVC Имейте в виду, есть немало незначительно видов его внутри литературы.

Недостатки XML (веб-службы) MVC

Поэтому XML (веб-службы) MVC приносит таблице структуру чистой полезные разделение вопросы, экономичные стека во время выполнения, полный контроль над HTML, непревзойденный уровень расширяемости и рабочей среды, которая позволяет, не penalizes, разработке с постоянным тестированием (TDD). Это XML (веб-службы) MVC, поэтому paradise для разработчиков?

Как с помощью веб-форм, что некоторые воспринимают как очистить сила XML (веб-службы) MVC, другие могут отображаться как слабость. Например полный контроль над HTML, JavaScript и CSS XML (веб-службы) MVC означает, что ввести веб-элементы вручную. Большая часть этой боль может быть устранен, однако некоторые из более поздней библиотек JavaScript и даже различные представления обработчиком. В целом Однако есть не рода модель компонентов для облегчения создания HTML, как в подходе к Web Forms. В настоящее время помощников HTML и пользовательские элементы управления являются только средства, можно использовать более быстро написать HTML. В результате, некоторые XML (веб-службы) разработчики могут появиться XML (веб-службы) MVC как выполнением шага назад в терминах удобства и производительности. Другая точка выполняться относительно влияние XML (веб-службы) MVC на ежедневной разработки является необходимость некоторых предварительными Знакомство с шаблона MVC. Необходимо знать контроллеров и представлений совместной работы XML (веб-службы) реализации. Другими словами XML (веб-службы) MVC не путем экспериментирования можно легко узнать. По моему опыту это может быть источником снижение производительности для среднего разработчика Web.

Правая перспективы

Как разработчик или разработчик важно понимать структурные различия между платформ, внести продуманных решение. В целом XML (веб-службы) и XML (веб-службы) MVC функционально эквивалентны в смысле, что квалифицированные группы можно успешно использовать либо для построения любой веб-решения.

Навыки, образование и отношение группы, однако приводятся основные положения чтобы помнить. Как вы может поняли самостоятельно, большинство возможностей представляется плюс либо платформы может также рассматриваться как минус и наоборот. Полный контроль над HTML, например, может быть lifesaver один человек но кошмаром на другой. Лично я был shocked в первый раз видели содержимое страницы нетривиальных представления в XML (веб-службы) MVC. Но когда я показал одну и ту же страницу клиента, которого приложение использования значительное число страниц ASP, хорошо, он был relieved. При наличии специальных возможностей как строгим требованием, возможно, потребуется полный контроль над отображаемой HTML. И это не вполне возможно, с помощью веб-форм. С другой стороны вы создаете большой управляемых данными приложений будет Добро набор элементов управления с привязкой к данным и statefulness, предоставляемые веб-форм.

Правильно Майкрософт имеет не располагается XML (веб-службы) MVC как замену для XML (веб-службы) Web Forms. Веб-формы – определенно шаблон, который работает для веб-приложений. В то же время транскрипции на Rails доказало MVC также может быть успешно шаблон для веб-приложений;и это подтверждает XML (веб-службы) MVC.

В итоге Web и XML (веб-службы) MVC имеют специалистов, недостатки и структурных различий, влияющих на различных уровнях. Создание обобщенной, я бы сказал, Web использует RAD философии, тогда как ориентированные TDD XML (веб-службы) MVC. Кроме того Web переходит сторону абстракцию веб-узла, имитирующие среде с ведением базы данных, хотя XML (веб-службы) MVC усиливает естественным statelessness веб-узла и помогает сторону создания приложений, слабосвязанной и по своей природе тестируемыми понятное средство поиска и полный HTML.

Какова безопасной модели для XML (веб-службы)?

После использования Web лет распознает ряд его недостатков и XML (веб-службы) MVC адреса их вполне: пригодность для тестирования, HTML-элемент управления и разделения проблем. Но хотя как одинаково допустимый параметр в данный момент отображается XML (веб-службы) MVC, я не верю его Серебряный маркера для каждого приложения. По моему мнению XML (веб-службы) MVC сегодня отсутствуют некоторые уровень абстракции для создания стандартных единиц HTML. Вспомогательные средства HTML являются просто интересно попытка ускорить создание HTML. Надеюсь, что для просмотра в ближайшем будущем новое поколение конкретного MVC серверных элементов управления, как легко и быстро узнать и использовать в качестве серверных элементов управления Web Forms, но полностью свободная от модели обратной передачи и состояние отображения. Мои hopes предназначены для управления System.Web.mvc.GridView, сохраняющего меня от написания цикл для создания HTML-таблицы, сохраняя шаблоны столбцов событий привязки данных на стороне сервера и параметры стиля. Что бы разницу между таких GridView MVC и современные Web Forms GridView? GridView MVC только будет выдавать HTML плюс, при необходимости некоторых конкретных строк JavaScript, но было бы управлять разбиения по страницам и сортировки. Разбиение по страницам и сортировки будут делегированы другим определенных элементов управления или обычного ссылки, созданные разработчиком. Таким образом, GridView MVC может вернуть некоторые RAD флаг для XML (веб-службы) MVC, ускоряет разработку страниц без precluding handcrafted страниц.

Возвращаясь к корневой папке проблемы, различием между Web Forms и ASP.NET MVC является основной шаблон. Веб-формы — это модель зависимости «Контроллера страницы»шаблон. Веб-формы являются фокуса пользовательского ИНТЕРФЕЙСА и по центру вокруг концепцию страницы: страница возвращает ввода, отправляет обратно и определяет результат для обозревателя. В среде разработки таким образом был разработали временный возможность быстрого создания прототипов через мастеров и конструкторов форматированного. Любое действие пользователя заканчивается в методе в классе кода программной части каждой страницы. На этом этапе, ничего не запрещает можно с помощью соответствующих SoC и ничего не действительно останавливает архитекторы из imposing шаблонов MVC, модель представление презентатор (MVP) или даже модели представления представление модели (MVVM).

Архитектура Web Forms не поддерживается SoC, но она не запрещает либо. Архитектура Web Forms делает seductive отказаться и перетаскивания элементов управления, справа логику кода в заглушки события без дальнейшего разделения и удаления данных источников справа на странице, которая связывает пользовательского ИНТЕРФЕЙСА в базе данных. MVC не запрещено ни a blasphemy в Web Forms;Это просто, очень немногим разработчикам упражнения его поскольку требует работы значительную часть инфраструктуры Web Forms.

Пригодность для тестирования является другое дело. XML (веб-службы) Веб-формы не предотвращает модульного тестирования, но требует намного disciple и повторяющихся стандартный кодирования сделать so.As долго, как код способ SoC можно проверить и повторно использовать презентации и бизнес-логики. Конечно скорее всего у вас нет шаблона проекта Visual Studio для создания тестового проекта для вас. Необходимо ознакомиться с тестирования и инфраструктур макетирования и управлять этих проектов. Но это можно сделать. С точки зрения пригодности для тестирования однако реальная разница существует между веб-форм и XML (веб-службы) MVC. В Web Forms не достаточно гибкость XML (веб-службы) MVC. Это ограничение, значение true. Разработана с пригодности для тестирования помнить, что означает архитектуры платформы направляющие разработчику писать код, который является по существу, можно протестировать, изолированы от контекста или подключенных к нему через интерфейсы удвоенные XML (веб-службы) MVC. Даже более важно то, что в XML (веб-службы) MVC встроенные объекты являются mockable как предоставляют интерфейс и базовый классы. С точки зрения тестирования можно сделать в Web Forms лучшим является перемещение логику в классы отдельных и легко можно протестировать. Затем, отправляя запросы HTTP и проверка результатов тестирования презентации (ASPX и программной). Нельзя сделать это в Web Forms без вращающийся до целого XML (веб-службы) среды выполнения, однако. Большинство тестирования XML (веб-службы) MVC, является гарантируют правильность данных, передаваемых в представление. Кроме того можно макетируйте встроенных объектов и запустить тесты genuinely изолированной среде.

Мы также отметить, контроль над HTML и URL-адреса понятное SEO, и преимущества XML (веб-службы) MVC, может быть достигнуто до некоторой степени в Web Forms. В частности, XML (веб-службы) 3.5 с пакетом обновления 1 (SP1) включает маршрутизацией URL и журнал API для SEO. Адаптеры CSS вместо являются средствами использовать для элемента управления HTML в веб-формах. Интеграция с JavaScript и AJAX платформ, честно говоря, больше не является проблемой в Web Forms.

Undisputable факты

XML (веб-службы) Web Forms и XML (веб-службы) MVC не конкурентов в смысле один должен заменить другим. Имеется выбрать один, но различных приложений может принудительно сделать другой выбор. В конце концов это действительно как выбор между автомобиля и motorcycle при внесении путешествие. Каждый поездку требует выбора и наличие обоих доступные средства следует рассматривать как возможную сделку, не как curse. Ниже приведены некоторые факты о платформ.

  • Веб-формы трудно протестировать.
  • MVC XML (веб-службы) требуется управлять генерации HTML подробные уровне.
  • XML (веб-службы) MVC не является единственным способом получения SoC XML (веб-службы).
  • Веб-форм позволяет узнать, как при переходе.
  • Данных о состоянии отображения можно контролировать или отключить.
  • Web Forms был разработан для абстрактные механизм Web.
  • MVC XML (веб-службы) предоставляет архитектуру Web.
  • XML (веб-службы) MVC был разработан с пригодности для тестирования и введения зависимостей в виду.
  • MVC XML (веб-службы) осуществляется сторону лучше структуры в коде.
  • MVC XML (веб-службы) дурной – отсутствует модель компонентов.
  • XML (веб-службы) MVC не anti-Web формы.

Заменить Web Forms, но его партнер не была создана XML (веб-службы) MVC. MVC XML (веб-службы) включает некоторые слабые элементы Web в свои собственные внутренние сильные стороны. Однако такие проблемы, как отсутствия пригодности для тестирования, SoC, SEO, и HTML-элемент управления можно избежать или уменьшается в Web Forms с некоторых дисциплины и хорошее проектирование Хотя платформа сама не предоставляет достаточно руководства.

В конце дня

Мы видели, что имеются и недостатки в Web Forms и XML (веб-службы) MVC. Однако многие разработчики кажутся предпочитать XML (веб-службы) MVC, поскольку он представляет единственный способ получить SoC и пригодности для тестирования в своих приложениях. Это действительно единственным способом? Нет. Однако XML (веб-службы) MVC упрощает его и естественным достижения SoC и писать более тестируемыми код. XML (веб-службы) MVC magically не преобразования каждый разработчик архитектор экспертов и не предотвратить написании перегруженными и плохо разработанные разработчиков. В конце дня веб-форм и XML (веб-службы) MVC позволяют создавать приложения, разработанные и реализации эффективно работать с сложности реальных решений. Чудеса программного обеспечения не существует, и нет еще поддерживается XML (веб-службы) платформы.

Свои вопросы и комментарии для Дино отправляйте на cutting@microsoft.com.

Дино Эспозито (Dino Esposito) работает архитектором ПО в компании IDesign и является одним из соавторов книги Microsoft .NET: Создание архитектуры приложений для предприятия (Microsoft Press, 2008). Живя в Италии, Дино часто выступает на различных профессиональных мероприятиях по всему миру. Связаться с ним можно в блоге по адресу weblogs.asp.net/despos.