ASP.NET Веб-сайт или ASP.NET Веб-приложение?
Когда я начинаю новый проект ASP.NET в Visual Studio, я сталкиваюсь с выбором между созданием ASP.NET Web Application и ASP.NET Web Site.
В чем разница между ASP.NET Web Application и ASP.NET Web Site? Почему я должен выбрать один вариант вместо другого?
Существует ли разница в ответе в зависимости от версии Visual Studio, которую я использую?
5 ответ(ов)
На русском языке, в стиле ответа на вопрос на StackOverflow.com:
Веб-сайт – используйте этот термин, когда сайт создаётся графическими дизайнерами, а программисты занимаются редактированием лишь одной или двух страниц.
Веб-приложение – используйте этот термин, когда приложение создаётся программистами, а графические дизайнеры работают только с одной или двумя страницами/изображениями.
Веб-сайты можно разрабатывать с помощью любых инструментов HTML, не требуя наличия среды разработки, поскольку файлы проекта не нужно обновлять и пр. Веб-приложения лучше всего подходят, когда команда в основном использует среду разработки и имеется высокий уровень кода.
(Некоторые ошибки кодирования могут быть обнаружены в веб-приложениях на этапе компиляции, тогда как в веб-сайтах они могут проявиться только во время выполнения.)
Предупреждение: Я написал этот ответ много лет назад и с тех пор не использовал Asp.net. Ожидаю, что с тех пор многое изменилось.
В ответ на вопрос о веб-приложениях (проекте), согласно книге MCTS Self-Paced Training Kit для экзамена 70-515, можно выделить следующие ключевые моменты:
- В рамках веб-приложения можно создать приложение на базе MVC.
- Visual Studio хранит список файлов в проекте в файле проекта (.csproj или .vbproj), а не полагается на структуру папок.
- Нельзя смешивать языки Visual Basic и C# в одном проекте.
- Вы не можете редактировать код, не остановив сессию отладки.
- Возможно устанавливать зависимости между несколькими веб-проектами.
- Перед развертыванием приложение должно быть скомпилировано, что может помешать тестированию одной страницы, если другая страница не компилируется.
- Не обязательно хранить исходный код на сервере.
- Вы можете контролировать имя сборки и ее версию.
- Нельзя редактировать отдельные файлы после развертывания без повторной компиляции.
Эти аспекты помогут лучше понять особенности разработки веб-приложений на платформе .NET.
Это зависит от того, что вы разрабатываете.
Если вы создаёте контентно-ориентированный сайт, то контент на нём будет меняться довольно часто, и в этом случае лучше использовать классический веб-сайт.
С другой стороны, если речь идёт о приложении, то данные, как правило, хранятся в базе данных, а страницы и код меняются редко. В таком случае предпочтительнее использовать веб-приложение, где развертывание компонентов более контролируемо и есть лучшая поддержка для юнит-тестирования.
Здесь разница между Компиляцией
двумя подходами: Веб-сайт не компилируется заранее на сервере, он компилируется по файлу. Это может быть преимуществом, так как вы можете просто скачать нужный файл с сервера, изменить его и загрузить обратно — всё будет работать корректно. В веб-приложении такое невозможно, поскольку всё компилируется заранее и в результате получается только один DLL-файл. При изменении одного файла в проекте вам нужно пересобрать всё заново. Поэтому, если вам нужна возможность изменять файлы на сервере, веб-сайт будет лучшим выбором для вас. Он также позволяет нескольким разработчикам работать над одним веб-сайтом. С другой стороны, если вы не хотите, чтобы ваш код был доступен на сервере, лучше выбрать веб-приложение. Этот вариант также лучше подходит для юнит-тестирования, так как после публикации вашего веб-сайта создается только один DLL-файл.
Структура проекта
Также есть разница в структуре проекта. В веб-приложении у вас есть файл проекта, как в обычном приложении. В веб-сайте нет традиционного файла проекта; у вас есть только файл решения. Все ссылки и настройки хранятся в файле web.config.
Директива @Page
В директиве @Page есть различие в атрибуте для файла, который содержит класс, связанный с этой страницей. В веб-приложении используется стандартный "CodeBehind", а в веб-сайте — "CodeFile". Примеры ниже:
Веб-приложение:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="WebApplication._Default" %>
Веб-сайт:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
Пространства имен — В приведенном выше примере также видно другое различие — как создаются пространства имен. В веб-приложении пространство имен просто соответствует имени проекта. В веб-сайте для динамически скомпилированных страниц используется пространство имен по умолчанию ASP.
Редактирование и продолжение — В веб-приложении доступна функция "Редактировать и продолжить" (чтобы ее включить, нужно перейти в меню Инструменты, затем в параметры и найти "Редактировать и продолжить" в отладке). Эта функция не работает в веб-сайте.
ASP.NET MVC — Если вы хотите разрабатывать веб-приложения с использованием ASP.NET MVC (Модель Вид Контроллер), то лучшим и стандартным вариантом будет веб-приложение. Хотя технически можно использовать MVC в веб-сайте, этого не рекомендуется.
Резюме — Самое важное различие между ASP.NET веб-приложением и веб-сайтом — это компиляция. Если вы работаете над большим проектом, где несколько человек могут вносить изменения, лучше использовать веб-сайт. Но если вы работаете над небольшим проектом, вы также можете использовать веб-приложение.
Одно из ключевых отличий заключается в том, что веб-сайты компилируются динамически и создают сборки «на лету». Веб-приложения компилируются в одну большую сборку.
Тем не менее, это различие было устранено в Visual Studio 2008.
Обнаружено потенциально опасное значение Request.Form, полученное от клиента
JavaScriptSerializer - Сериализация JSON перечислений в виде строк
Если папка не существует, создайте её
Как установить заголовок Content-Type для запроса HttpClient?
Запрос Ajax возвращает 200 OK, но вместо успеха срабатывает событие ошибки