Поделиться через


Сравнение проектов веб-приложений с проектами веб-сайтов в Visual Studio

В Visual Studio можно создать проекты веб-приложений или проектов веб-узла. При создании или открытии проекта веб-приложения, выбрав Создать проект или Открыть проект в меню Файл Visual Studio. При создании или открытии проекта веб-узла, выбрав Создать веб-сайт или Открыть веб-сайт в меню Файл.

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

Примечание

Для некоторых сценариях нет выбором.Например, если требуется создание приложения ASP.NET MVC, следует использовать проект веб-приложения.

В этом разделе содержатся следующие подразделы.

  • Сценарии

  • Сводная информация по различиям

  • Структура файлов проекта

  • Компиляция

  • Развертывание

Сценарии

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

  • Необходимо иметь возможность использовать функцию Изменить и продолжить отладчика Visual Studio.

  • Необходимо выполнять модульные тесты кода, находящегося в файлах классов, связанных со страницами ASP.NET.

  • Требуется ссылаться на классы, связанные со страницами и пользовательскими элементами управления из изолированных классов.

  • Необходимо задать зависимости проекта между несколькими проектами в интернете.

  • С помощью компилятора требуется создать единую сборку для всего сайта.

  • Требуется управление именем и номером версии сборки, созданной для сайта.

  • Для компиляции проекта необходимо использовать MSBuild или Team Build. Например, может потребоваться добавить шаги prebuild и postbuild.

  • Необходимо избежать размещения исходного кода на рабочем сервере.

  • Необходимо использовать средства автоматизированного развертывания, доступные в Visual Studio.

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

  • Необходимо включить и кода C# и Visual Basic в одном проекте Интернета. (Компилировано по умолчанию веб-приложения на основе языковых параметров в файле проекта. Исключения возможны, но сопряжены с трудностями.)

  • Необходимо открыть рабочий веб-сайт в Visual Studio и обновить его в режиме реального времени через протокол FTP.

  • Вы не хотите явным образом компилировать проект, чтобы его развернуть.

  • Если вы выполнили предварительную компиляцию сайта, компилятор должен создать несколько сборок для сайта, который может содержать одну сборку для каждой страницы или пользовательского элемента управления, либо одну или несколько сборок для каждой папки.

  • Требуется возможность обновления отдельных файлов в рабочей среде путем простого копирования новых версий на рабочий сервер либо путем непосредственного редактирования файлов на рабочем сервере.

  • Если для предварительной компиляции сайт, то требуется возможность обновления отдельные веб-страницы ASP.NET (aspx-файлы) без повторной компиляции на весь сайт.

  • Вы хотите хранить исходный код на рабочем сервере в качестве дополнительной резервной копии.

Сводная информация по различиям

Сводная информация по основным различиям представлена в следующей таблице.

Область

Проекты веб-приложений

Проекты веб-сайтов

Структура файлов проекта

Файл проекта Visual Studio (с расширением CSPROJ или VBPROJ) хранит сведения о проекте, такие как список файлов, входящих в его состав, а также все ссылки между проектами.

Файл проекта (с расширением VBPROJ или CSPROJ) отсутствует. Все файлы в структуре папок автоматически добавлены в сайт.

Компиляция

  • Исходный код на компьютере, используемом для разработки или системы управления версиями, компилируется явным образом.

  • По умолчанию компиляция файлов кода (за исключением файлов ASPX и ASCX) обеспечивает создание единой сборки.

  • В большинстве случаев ASP.NET компилирует исходный код на сервере динамически (автоматически) при первом получении запроса после установки или обновления сайта.

    Сайт можно предварительно компилировать (заранее скомпилировать на компьютере разработчика или на сервере).

  • По умолчанию при компиляции создается несколько сборок.

Пространства имен

Явные пространства имен добавляются на страницы, в элементы управления и классы по умолчанию.

Явные пространства имен не добавляются на страницы, в элементы управления и классы по умолчанию, однако их можно добавить вручную.

Развертывание

  • Сборка копируется на сервер. Сборка создается при компиляции приложения.

  • Visual Studio предоставляет средства, которые интегрируются с веб-развертывание средством развертывания в интернете (IIS) для автоматизации различных задач развертывания.

  • Исходные файлы приложения копируются на компьютер с установленными службами IIS.

  • Если сайт предварительно скомпилирован на компьютере разработчика, сборки, созданные в процессе компиляции, копируются на сервер IIS.

  • Visual Studio предоставляет средства для развертывания, однако они не автоматизируют столько задач развертывания в качестве средства, доступные для проектов веб-приложений.

Структура файлов проекта

Проекты веб-приложений используют файлы проектов Visual Studio (с расширением CSPROJ или VBPROJ) для отслеживания сведений о проекте. Это делает возможным определить, какие файлы включены или исключенный из проекта, и, следовательно, компилируют файлов во время построения.

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

Преимущество использования файлов проекта в проектах веб-приложений следующие:

  • Можно с легкостью временно удалить файлы из сайта и сохранить их отслеживание, поскольку они остаются в структуре папок. Например, если страница не готова для развертывания, можно временно исключить ее из построения, не удаляя из структуры папок. Скомпилированную сборку можно развернуть, а затем снова добавить файл в проект. Это особенно важно при работе с репозиторием системы управления версиями.

Использование структуры папок без файлов проектов веб-сайтов предоставляет следующее преимущество:

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

Компиляция

Для проектов веб-приложений, обычно построении проекта в Visual Studio или с помощью компилятора пакета ASP.NET на компьютере, который не является сервера IIS фабрики. Все файлы класса кода программной части и автономные файлы классов в проекте компилированы в одну сборку, которая затем помещается в папку bin проекта веб-приложения. (Файлы aspx и ascx динамически компилированы аналогично, что сделано для проектов веб-узла).

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

Преимущества модели компиляции для проектов веб-приложений имеет следующие преимущества:

  • Для создания пользовательского процесса пакетной компиляции можно использовать MSBuild.

  • Можно с легкостью указать атрибуты сборки, такие как имя и версия.

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

  • Пользователь имеет полный контроль над местом размещения файлов кода в структуре папок проекта, а также, каким образом классы в проекте ссылаются друг на друга. (Для динамической компиляции требуется, чтобы исходный код для любых классов, использующихся на сайте, хранился в папке App_Code. Нельзя ссылаться на класс страницы или пользовательского элемента управления из класса в папке App_Code.)

Модель компиляции для проектов веб-сайтов имеет следующие преимущества:

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

  • Можно с легкостью обновить веб-сайт в рабочей среде. Можно обновить отдельные файлы исходного кода на рабочем сервере без необходимости перекомпиляции сайта явным образом. Можно обновить отдельные файлы, подготовленные для развертывания, даже если другие файлы не готовы вследствие ошибок компиляции. Можно также открыть веб-сайт на рабочем сервере IIS непосредственно в Visual Studio и обновить его в режиме реального времени.

  • В некоторых сценариях предварительная компиляция в несколько сборок может предоставить преимущества в производительности. Наглядным примером является сайт с множеством страниц, содержащих большой объем написанного кода. Большинство страниц запрашивается редко, и только некоторые из них активно используются. Если подобный сайт скомпилировать в несколько сборок, рабочий сервер может загрузить только те сборки, которые требуются для текущих запросов. Если страница не запрашивается, соответствующая сборка не будет загружена.

Примечание

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

Развертывание

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

Преимуществами стратегии развертывания для проектов веб-приложений имеет следующие преимущества:

  • Можно избежать необходимости развертывания исходного кода на сервере IIS. В некоторых сценариях, например для общих размещающих сред, может возникнуть вопрос о несанкционированном доступе к исходному коду на сервере IIS. (Для проекта веб-узла, можно избежать этого риска, предварительная компиляция на компьютере разработки и развертывания созданные сборки вместо исходного кода. Однако в этом случае будут недоступны некоторые преимущества легкого обновления сайта.)

  • Помимо копирования сборок или кода на сервер, развертывание часто предполагает выполнение других задач. Например, в рабочей среде может требоваться выполнение скриптов базы данных, а для рабочего сервера — изменение строк подключения в файле Web.config. Visual Studio предоставляет средства, как публикация одним щелчком, которые работают с проектами веб-приложений автоматизации многих из этих задач. Эти инструменты недоступны для проектов веб-узла.

Преимущества стратегии развертывания для проектов веб-узла включают следующее:

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

См. также

Основные понятия

Карта содержимого веб-развертывания для Visual Studio b ASP.NET

Другие ресурсы

Web Application Projects vs Web Site Projects