.net — веб-сайт ASP.NET или веб-приложение ASP.NET?

App_Code vs Bin

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

CodeBehind

Этот раздел относится к файлам .aspx и .ascx. Этот раздел становится все менее актуальным в новых инфраструктурах приложений, таких как ASP.NET MVC и ASP.NET Web Pages, которые не используют файлы кода.

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

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

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

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

Еще одним ограничением веб-приложений является то, что вы можете использовать только язык проекта. На веб-сайтах вы можете иметь несколько страниц на C #, некоторые на VB и т. Д. Нет необходимости в специальной поддержке Visual Studio. В этом прелесть расширяемости поставщика сборки.

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

Visual Studio

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

Еще одна приятная функция, представленная в Visual Studio 2010, — это преобразование Web.config.

Это также недоступно на веб-сайтах.

Теперь работает с веб-сайтами в VS 2013.

Создание веб-приложения происходит быстрее, чем создание веб-сайта, особенно для больших сайтов. Это главным образом потому, что веб-приложения не компилируют код разметки. В MVC, если вы устанавливаете MvcBuildViews в true, он компилирует код разметки, и вы получаете обнаружение ошибок, что очень полезно.

Недостатком является то, что каждый раз, когда вы создаете решение, оно создает полный сайт, который может быть медленным и неэффективным, особенно если вы не редактируете сайт. Я обнаружил, что включаю и выключаю MvcBuildViews (что требует разгрузки проекта).

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

В проекте веб-приложения MVC у вас есть дополнительные команды и диалоги для общих задач, таких как «Добавить представление», «Перейти к представлению», «Добавить контроллер» и т. Д. Они не доступны на веб-сайте MVC.

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

Восстановление пакетов NuGet не работает на веб-сайтах, вам необходимо вручную установить пакеты, перечисленные в packages.config

Восстановление пакетов теперь работает с веб-сайтами

начиная с NuGet 2.7

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector