Веб-проекты

104

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

Беспроектная разработка продолжает пользоваться популярностью по перечисленным ниже причинам:

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

Разработка, основанная на проекте

При создании веб-проекта Visual Studio генерирует набор дополнительных файлов, включая пользовательские файлы проекта с расширением .csproj, a также файл решения с расширением .sln. При компоновке приложения Visual Studio генерирует временные файлы, которые размещает в подкаталоге Obj, и один или более .pdb-файлов с отладочными символами, которые размещает в подкаталоге Bin. Ни один из этих файлов не должен развертываться на веб-сервере, когда веб-приложение будет готово.

Более того, также не должны развертываться и файлы исходного кода на C# (с расширением .cs), поскольку Visual Studio предварительно компилирует их в DLL-сборку.

На первый взгляд предварительная компиляция веб-проектов кажется большим преимуществом, ведь она не только гарантирует отсутствие необходимости в компилировании страниц при первом запросе, но и также позволяет избегать развертывания исходного кода на веб-сервере. Однако беспроектные веб-сайты можно так же легко компилировать для развертывания: необходимо всего лишь воспользоваться соответствующим инструментом предварительной компиляции.

У основанной на проектах разработки имеется свой круг почитателей. Ниже перечислены наиболее важные преимущества веб-проектов:

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

Официально Microsoft рекомендует пользоваться более простой моделью веб-сайта во всех случаях, кроме тех, когда существует серьезная причина применять веб-проект. К числу таких случаев относятся ситуации, когда было разработано специальное расширение MSBuild, когда уже имеется готовый тщательно автоматизированный процесс развертывания, когда выполняется перенос в новую версию старого веб-сайта, созданного в Visual Studio 2003, или когда необходимо создать в одном каталоге сразу несколько проектов.

Создание веб-проекта

Чтобы создать веб-проект, выберите в меню File пункт New --> Project. Откроется диалоговое окно New Project, которое выглядит очень похоже на рассмотренное ранее диалоговое окно New Web Site.

Выберите элемент ASP.NET Web Application (Веб-приложение ASP.NET). Далее нужно указать место размещения, либо в виде пути к файлу, либо в виде URL-адреса, указывающего на локальный или удаленный веб-сервер IIS.

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

Ниже перечислены эти отличия:

Компиляция

Как уже объяснялось ранее, при запуске веб-проекты компилируются Visual Studio (а не ASP.NET). Классы веб-страниц объединяются в одну сборку, которая получает то же имя, что и у веб-проекта (например, WebApplication) и затем размещается в папке Bin.

Отделенный код

Веб-страницы в веб-проекте всегда используют модель отделенного кода. Однако они включают один дополнительный файл с расширением .aspx.designer.cs, в котором содержатся объявления для всех элементов управления вебстраницы. Это означает, что если вы создадите страницу по имени Default.aspx, то получите файл Default.aspx.cs с классом отделенного кода и файл Default.aspx.designer.cs с объявлениями элементов управления:

Файл .aspx.designer.cs с объявлениями элементов управления

Во время компиляции эти два файла будут объединены. В беспроектном веб-сайте вы никогда не увидите файла с объявлениями элементов управления, поскольку эта часть кода генерируется во время компиляции системой ASP.NET. (Изменено в VS 2012)

Директива Page

В веб-страницах веб-проекта директива Page выглядит немного по-другому. Для указания на файл с исходным кодом вместо атрибута CodeFile в ней применяется атрибут CodeBehind. Это отличие тоже связано с тем, что компиляцию осуществляет Visual Studio, а не ASP.NET. Среда ASP.NET проверяет атрибут CodeFile, a Visual Studio — атрибут CodeBehind.

Ссылки на сборки

В беспроектном веб-сайте все ссылки на сборки фиксируются в файле web.config, так что ASP.NET может использовать их при разрешении ссылок во время компиляции. Но в веб-проекте ссылки на сборки сохраняются в файле проекта, к которому Visual Studio обращается при компиляции кода. Исключением являются только ссылки на сборки System.Core.dll и System.Web.Extensions.dll, в которых содержатся все специфические функции .NET 3.5. Эти ссылки определяются в файле web.config, поскольку включают классы, необходимые для указания новых конфигурационных параметров.

Пройди тесты
Лучший чат для C# программистов