ASP.NET – это платформа для веб-разработки Microsoft. Является составной частью платформы .NET. Сам же ASP.NET используется для создания одностраничных, динамических, корпоративных приложений, приложений для онлайн-банкинга и т. д.
В состав этой платформы входят дополнительные сервисы, модели программирования, инфраструктура и пр. Кроме того, сам ASP.NET состоит из трех фреймворков:
- NET Web Pages;
- Net Web Forms;
- NET MVC.
Согласно заявлениям Microsoft, использование какого-либо из этих фреймворков приведет к одному и тому же результату. Но каждый из них имеет свои плюсы и минусы, что и стало причиной для разделения.
Web Pages
w3school, один из самых известных в мире веб-сайтов для изучения любых веб-технологий, построен на основе фреймворков ASP.NET Web Pages. На веб-страницах код на стороне клиента и код на стороне сервера размещаются на одной странице. Он похож на PHP и теперь называется классическим (старым) ASP. Если вы хотите создать приложение, которое является чем-то динамическим или частично динамическим, то вам могут понадобится технологии Web Pages.
Web pages предпочтительнее для создания информационных сайтов и блоговых приложений. Приложения, которые вы видите в Интернете с расширением .asp, построены на основе фреймворка Web pages.
Web Forms
Раньше, во времена MS-DOS, для создания, чтения, обновления и удаления файлов использовались различные команды. Но затем Microsoft выпустила Windows, в которой все стало графическим, так что теперь мы можем выполнять все эти действия через графический интерфейс. Поскольку Microsoft добилась многого в создании GUI, она решила повторить свой успех, но теперь уже в мире программирования. К примеру, кнопка или сетка, с помощью которых мы пишем код, должны выглядеть как кнопка или сетка. Но в Visual Studio (еще одна разработка Microfost) каждый язык программирования заменяется языком программирования Visual.
Если у вас уже имеется опыт работы в C++, то вы сможете работать и с Visual C++, в который уже интегрированы все элементы управления, такие как кнопки и меню. Вам просто нужно будет перетащить элементы управления и назначить их функцию.
То же самое Microsoft делает и в Web Forms, чтобы отделить клиентскую и серверную стороны. История вновь повторяется, и благодаря этой возможности Microsoft становится очень популярной уже среди разработчиков. Теперь мы можем спроектировать клиентскую часть на клиентском уровне и написать соответствующий код. Это более простой способ программирования, по сравнению с классическим подходом к разработке веб-страниц. Теперь разработка становится настолько быстрой, что мы уже создаем приложения на основе событий. Такой процесс называется быстрой разработкой RAD (Rapid Application Development).
Файлы Web Forms
На самом деле, веб-форма – это файл, основанный на том, как Payoneer построен на основе ASP.Net Web Form. Когда мы открываем любую Web Forms-страницу в окне браузера, выполняется расширение веб-формы .aspx (на бэкэнде полный файл будет выглядеть как .aspx.cs). Таким образом, при нажатии на какую-либо страницу Web Forms, запускается конечный файл (.aspx + .aspx.cs). И поэтому такие страницы называют «на основе файлов» (file based).
Каждая технология имеет свои плюсы и минусы. И конкретно эта является не лучшим вариантом для приложений уровня Enterprise. Так какие же проблемы есть у Web Forms?
Интернет на самом деле основан на действиях. Мы отправляем запрос серверу, а он отправляет нам ответ. Но Web Forms следуют архитектуре View First. Сначала мы запускаем событие при просмотре, затем выполняется полный жизненный цикл страницы, включая Page_Load, а затем выполняется действие. Теперь, если мы снова инициируем другое событие на той же странице, снова будет выполнен полный жизненный цикл страницы, а затем будет выполнен фактический метод. Это явно не самая продуманная механика.
Web Forms не поддерживают Reusability. В Web Forms есть две страницы, которые примерно одинаковы, и нам нужно снова и снова кодировать каждый элемент управления, независимо от того, есть ли у нас 2 страницы или 2+. Кроме того, в Web Forms нет слоев. Если мы хотим повторно использовать код, нам нужно понять концепцию слоев и создать многоуровневую архитектуру.
Есть еще одна смежная проблема, вытекающая их предыдущей. Предположим, что мы работаем над приложением Web Forms: одновременно 2 разных разработчика не могут работать на стороне клиента .aspx и на стороне сервера .aspx.cs. Только один разработчик может выполнять свои обязанности на какой-либо стороне. Несколько разработчиков смогут выполнять программирование одновременно только при наличии еще одного слоя.
Модульное тестирование
Очень сложно протестировать код в Web Forms, потому что есть множество функций, которые выполняются за одним событием. Поэтому будет довольно сложно найти проблемное место в коде. Однако в MVC мы можем добавить отдельный проект для проведения модульного тестирования. Он также может выполнять чистое модульное тестирование без каких-либо изменений в реальном коде приложения.
MVC
MVC создан для решения всех вышеперечисленных проблем.
- Он является шедевр многоуровневого архитектурного подхода. По умолчанию он многослоен, а значит 2 или более разработчиков могут работать на разных слоях одновременно;
- MVC основан на действиях;
- Запрос направляется прямо к действию, и никаких дополнительных процессов в течение жизненного цикла не происходит;
- Имеется возможность добавления проекта модульного тестирования, чтобы решить возможные проблемы с кодом;
- Имеет динамический тип ответа. Нам нужно установить возвращаемый тип действия так же, как ActionResult. После чего мы сможем возвращать и просматривать что угодно, будь то файл или JSON;
Важно: необходимо помнить, что есть два термина MVC и ASP.Net MVC. Сам MVC – это шаблон дизайна. ASP.Net MVC – это библиотека. ASP.Net сам по себе является фреймворком.
- M (модель): бизнес-уровень (данные)
- V (Просмотр): Уровень представления (генерирует выходной интерфейс)
- C (контроллер): обрабатывает пользовательский ввод (логика)
Мы можем заменить один слой любым другим методом. Вся эта многоуровневая архитектура – фактически красота SOC (Разделение ответственности), в которой каждая логика является различным местом относительно его ответственности. SOC описывает каждый слой, как отвечающий сам за себя.
Сервисы
Веб-сервисы – действительно горячая любимая тема в наши дни. Возможно, вы уже слышали о Web Services, WCF Services и Web API. Цель веб-службы – принять запрос от клиента и отправить его на сервер, а затем получить ответ от клиента. С помощью веб-служб мы отправляем запрос с разных устройств, и запрос отправляется на веб-сервер, а затем данные возвращаются. Веб-API также является примером веб-службы, но веб-служба – это просто общий термин, а веб-API – это нечто особенное в веб-службах.
Приложения и настройка
Как и ASP, ASP.NET инкапсулирует свои объекты в веб-приложении. Веб-приложение – это абстрактный термин для всех ресурсов, доступных в пределах виртуального каталога IIS. Например, веб-приложение может состоять из одной или нескольких страниц ASP.NET, сборок, файлов конфигурации веб-служб, графики и др. В этом разделе мы рассмотрим два основных компонента веб-приложения, а именно файлы глобальных приложений (Global.asax) и файлы конфигурации (Web.config).
Global.asax
Global.asax – это файл, используемый для объявления событий и объектов уровня приложения. Global.asax является расширением ASP.NET файла ASP Global.asa. Код для обработки событий приложения (таких как начало и конец приложения) находится в Global.asax. Такой код события не может находиться на странице ASP.NET или в самом коде веб-службы, поскольку во время запуска или завершения приложения его код еще не был загружен (или выгружен). Global.asax также используется для объявления данных, которые доступны для разных запросов приложений или для разных сеансов браузера. Этот процесс известен как управление состояниями приложений и сеансов.
Файл Global.asax стандартно находится в виртуальном корне IIS. Помните, что виртуальный корень может рассматриваться как контейнер веб-приложения. События и состояние, указанные в глобальном файле, затем применяются ко всем ресурсам, размещенным в веб-приложении. Если, например, Global.asax определяет переменную приложения состояния, все файлы .aspx в виртуальном корне будут иметь доступ к переменной.
Как и страница ASP.NET, файл Global.asax компилируется по прибытии первого запроса для любого ресурса в приложении. Сходство сохраняется, когда вносятся изменения в файл Global.asax; ASP.NET автоматически замечает изменения, перекомпилирует файл и направляет все новые запросы в новейшую компиляцию. Файл Global.asax создается автоматически при создании нового проекта веб-приложения в VS.NET IDE.
Директивы по применению
Директивы приложения находятся в верхней части файла Global.asax и предоставляют информацию, используемую для компиляции глобального файла. Определены три директивы приложения, а именно: Приложение, Сборка и Импорт. Каждая директива применяется со следующим синтаксисом:
<%@ appDirective appAttribute=Value ...%>
Web.config
Внутри ASP настройки приложения (например, состояние сеанса) хранятся в метабазе IIS. У этой схемы есть два основных недостатка. Во-первых, настройки хранятся не в удобочитаемом виде, а в собственном двоичном формате. Во-вторых, параметры нелегко переносятся с одного хост-компьютера на другой (трудно перенести информацию из метабазы IIS или реестра Windows на другой компьютер).
Web.config решает обе вышеупомянутые проблемы, сохраняя информацию о конфигурации в виде XML. В отличие от записей реестра или метабазы, документы XML удобочитаемы и могут быть изменены любым текстовым редактором. Во-вторых, XML-файлы гораздо более переносимы, включая простую передачу файлов на коммутатор.
В отличие от Global.asax, Web.config может находиться в любом каталоге, который может быть или не быть виртуальным корнем. Параметры Web.config затем применяются ко всем ресурсам, доступным в этом каталоге, а также к его подкаталогам. Одним из следствий этого является то, что экземпляр IIS может иметь много файлов web.config. Атрибуты применяются иерархически. Другими словами, используется файл web.config в каталоге самого низкого уровня.
Поскольку Web.config основан на XML, он является расширяемым и гибким для широкого спектра приложений. Однако важно отметить, что файл Web.config является необязательным. Стандартный файл Web.config, используемый всеми ресурсами приложения ASP.NET, можно найти на локальном компьютере по адресу:
%winroot%Microsoft.NetFrameworkversionCONFIGmachine.config