Веб-сайт или веб-приложение в ASP.NET
Какой шаблон Visual Studio следует использовать для веб-сайта ASP.NET, шаблона веб-сайта или проекта | Шаблон веб-приложения?
7 ответов
Вам лучше прочитать это: http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx на мой взгляд, это зависит от того, что вы разрабатываете
И функционируют, и работают аналогично, но все же различаются по следующим параметрам:
Веб приложение:
- Мы не можем включать страницы C# и VB в одно веб-приложение.
- Мы можем установить зависимости между несколькими проектами.
- Невозможно редактировать отдельные файлы после развертывания без перекомпиляции.
- Правильный выбор для корпоративных сред, в которых несколько разработчиков работают совместно для создания, тестирования и развертывания.
Веб-сайт:
- Можно смешивать страницы VB и C# на одном веб-сайте.
- Не могу установить зависимости.
- Редактировать отдельные файлы после развертывания.
- Правильный выбор, когда один разработчик будет отвечать за создание и управление всем сайтом.
Проекты веб-приложений работают больше как традиционный проект VS, который имеет файл проекта, компилируется за один шаг и так далее.
Проекты веб-сайтов работают больше как классические ASP или PHP-сайты. Файл проекта отсутствует (ссылки хранятся в файле решения), а страницы динамически перекомпилируются на сервере. С веб-сайтами хорошо то, что вы можете просто зайти на сервер по ftp и изменить файл в текстовом редакторе. Вам не нужно VS. Некоторые могут ненавидеть это, хотя.
Это, вероятно, зависит от вашего фона. Если вы привыкли к разработке в стиле ASP или PHP, проекты веб-сайтов покажутся вам более естественными. Если у вас есть опыт работы с традиционными разработчиками приложений, проекты веб-приложений будут казаться более естественными.
Если вы используете Team Foundation Server для управления исходным кодом, вам, вероятно, придется использовать проект веб-приложения, так как вам нужен файл.csproj.
Есть более подробная информация от самого Джеффа Этвуда: проекты веб-сайтов и проекты веб-приложений
Веб-проекты веб-сайтов особенно болезненны в Team System из-за отсутствия физического файла, содержащего информацию о проекте и метаданные. Например, невозможно проверить правила анализа кода в проектах веб-сайтов, поскольку правила анализа кода полностью хранятся на клиенте!
Я предпочитаю сайт. Веб-сайт - это набор файлов в каталоге. Это становится более портативным и развертываемым. Веб-приложение скрывает проблему с файлом проекта.
Лично я использую проекты веб-приложений исключительно сейчас. Я фактически преобразовал довольно веб-сайт в веб-приложение из-за времени компиляции для веб-сайта.
Я также использую события до сборки, чтобы перемещать файлы конфигурации, специфичные для конфигурации, а события до и после сборки не доступны на веб-сайтах.
В Visual Studio 2015 я стал отдавать предпочтение проектам веб-сайтов, а не проектам веб-приложений. Я все еще использую Visual Studio, хотя, поскольку вы получаете Nuget Packaging, вы можете устанавливать пакеты Nuget для обоих типов проектов.
Однако у проекта WebSite нет файла проекта, вы буквально просто добавляете папку в свое решение.
Однако у вас все еще может быть код, но я предпочитаю помещать его в отдельный проект.
В проектах WebApp ваши активы, Css, Views (бритва, aspx и т. Д.), Контроллеры / кодовые элементы и т. Д. - все в одном проекте, и он просто объединяется. Я предпочитаю работать с сайтами в две половины. Внешний интерфейс (css, js, images, "html/cshtml/aspx/ashx/.master/etc") и внутренний конец (весь код).
Поэтому я создаю проект Web Site и сопровождающий его класс Library (в visual studio вы можете добавить ссылки на проект web site). Я добавляю свою библиотеку классов как зависимость, и весь код находится в классе Library. У вас все еще может быть global.asax, вы просто должны сказать ему, что код находится в другой dll (не той, в которую будет компилироваться сайт). Представления MVC, вы просто указываете пространства имен, как обычно (dll - это ссылка, поэтому пространства имен есть). А в WebForms вы просто должны помнить, чтобы включить имя сборки в ссылки на тип, в котором находится код.
Это немного утомительно, чтобы привыкнуть, но когда у вас есть изолированная структура, все находится в месте, которое имеет смысл, и модульное в удобном для обслуживания виде.
Плюс в том, что веб-сайт - это просто папка (без файла проекта), которую можно легко открыть в коде Visual Studio и других популярных текстовых редакторах, облегчая дизайнерам работу с css / js / images и т. Д. (которых нет в коде проекта). Держа дизайнеров слоя отдельно, дизайнер видит то, что им нужно видеть.
Теперь структура мудрая. Я держу свой код локально на своей машине, проверенный в хранилище subversion, используя Tortoise SVN и Visual SVN (магазин java/.net). Для локального тестирования я устанавливаю IIS и настраиваю проект веб-сайта в IIS локально, как на серверах dev/prod.
Затем я устанавливаю MSDeploy на серверах dev/prod и использую функцию публикации веб-приложения через MSDeploy в visual studio и использую преобразования web.config. Поэтому у меня есть преобразования web.config для dev и prod, а основной web.config без преобразований предназначен для локального тестирования (поэтому он работает для всех разработчиков проекта).
К предыдущим заявленным минусам: наличие проекта WebSite против проекта WebApp не означает, что несколько разработчиков не могут работать с ним, это только если ваш проект WebSite находится на каком-то сервере, и вы загружаете его непосредственно оттуда, что было бы плохо практика.
Вы можете относиться к проекту WebSite так же, как к любому другому проекту Visual Studio, локальному коду, управлению исходным кодом, нескольким разработчикам.
В заключение, дополнительное преимущество разделения вашего кода состоит в том, что вы можете поместить весь свой код в общий проект. Затем вы можете создать библиотеку классов для каждого порта, который вы можете сделать, скажем, один на прямом.net 4.6, а другой на.net core 5 и ссылку в вашем общем проекте. Пока ваш код совместим с обоими, он будет собираться, и у вас не будет дублированных файлов кода.