asp.net - sln - visual studio 2017 documentation



Веб-сайт ASP.NET или веб-приложение ASP.NET? (17)

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

В чем разница между веб-приложением ASP.NET и веб-сайтом ASP.NET? Почему я должен выбирать один над другим?

Является ли ответ разным в зависимости от того, какую версию Visual Studio я использую?

https://ffff65535.com


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

Project structure Существует также различие в структуре проекта. В веб-приложении у вас есть файл проекта, как и в обычном приложении. На веб-сайте нет традиционного файла проекта, все, что у вас есть, - это файл решения. Все ссылки и настройки хранятся в файле web.config. @Page directive есть другой атрибут для файла, который содержит класс, связанный с этой страницей. В веб-приложении он является стандартным «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 по умолчанию для динамически скомпилированных страниц.

Редактирование и продолжение. Доступна опция «Редактирование и продолжение веб-приложения» (чтобы включить ее, вы должны перейти в меню «Сервис», затем «Параметры», затем «Изменить» и «Продолжить в отладке»). Эта функция не работает в Web Site.ASP.NET MVCIf, если вы хотите разрабатывать веб-приложения, используя

ASP.NET MVC (Model View Controller) лучшим и стандартным вариантом является веб-приложение. Хотя использование MVC на веб-сайте возможно не рекомендуется.

Резюме. Самое важное различие между веб-приложением ASP.NET и веб-сайтом - это компиляция. Поэтому, если вы работаете над большим проектом, в котором несколько человек могут его изменить, лучше использовать веб-сайт. Но если вы делаете небольшой проект, вы также можете использовать веб-приложение.


«Веб-сайт» имеет свой код в специальном каталоге App_Code и скомпилирован в несколько DLL (сборок) во время выполнения. «Веб-приложение» предварительно скомпилировано в одну DLL.


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


В проектах веб-приложений Visual Studio нуждается в дополнительных файлах .designer для страниц и пользовательских элементов управления. Проекты веб-сайта не требуют этих накладных расходов. Сама разметка интерпретируется как дизайн.


Веб-сайт и проект >> веб-сайт - это два разных метода создания приложения ASP.NET с использованием визуальной студии. Один из них безпроектирован, а другой - это среда проекта. Различия

  1. Файл решения хранится в том же каталоге, что и корневой каталог в среде проекта.
  2. Перед развертыванием в среде проекта необходимо удалить файлы решений и проектов.
  3. Полный корневой каталог развертывается в среде без проекта.

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


Веб-сайты. Файл решения не будет создан. Если мы хотим создавать веб-сайты, вам не нужна визуальная студия.

Веб-приложение. Будет создан файл решения. Если мы хотим создать веб-приложение, вам нужна визуальная студия. Он создаст один .dll файл в папке bin.


Если у вас нет конкретной потребности в динамически скомпилированном проекте, не используйте проект веб-сайта .

Зачем? Поскольку проект веб-сайта приведет вас к стене, когда вы пытаетесь изменить или понять свой проект. Элементы поиска статической типизации (например, поиск использования, рефакторинг) в Visual Studio будут выполняться навсегда в любом проекте с разумным размером. Для получения дополнительной информации см. Вопрос « Переполнение стека». Медленно «Найти все ссылки» в Visual Studio .

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


Из экзамена 70-515 экзаменационного экзамена MCTS для самостоятельного курса:

С веб-приложением (проектом),

  1. Вы можете создать приложение MVC.
  2. Visual Studio хранит список файлов в файле проекта (.csproj или .vbproj), а не полагается на структуру папок.
  3. Вы не можете смешивать Visual Basic и C #.
  4. Вы не можете редактировать код, не останавливая сеанс отладки.
  5. Вы можете устанавливать зависимости между несколькими веб-проектами.
  6. Вы должны скомпилировать приложение перед развертыванием, что не позволяет вам тестировать страницу, если другая страница не будет компилироваться.
  7. Вам не нужно хранить исходный код на сервере.
  8. Вы можете управлять именем и версией сборки.
  9. Вы не можете редактировать отдельные файлы после развертывания без повторной компиляции.

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

Различие между ними было устранено в Visual Studio 2008.


Определенно веб-приложение, один DLL-файл и прост в обслуживании. Но сайт более гибкий; вы можете редактировать файл aspx на ходу.


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

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

Но преимущество и недостатки этих двух технологий ASP.NET - это то, что хорошо.


Это зависит от того, что вы разрабатываете.

Веб-сайт, ориентированный на контент, будет часто меняться, и сайт лучше для этого.

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


Здесь Web Supportive Application является примером веб-сайта. Веб-сайт и веб-приложение могут быть динамическими / статичными в зависимости от требований, вот пример, чтобы понять работу веб-сайта и веб-приложения.


WebSite: автоматически создает папку app_code, и если вы публикуете ее на сервере, а после этого, если вы вносите некоторые изменения в какой-либо конкретный файл или страницу, вам не нужно компилировать все файлы.

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


Веб-сайт - это то, что вы развертываете на веб-сервере ASP.NET, таком как IIS. Просто куча файлов и папок. На веб-сайте нет ничего связанного с Visual Studio (нет файла проекта). Генерация кода и компиляция веб-страниц (например, .aspx, .ascx, .master) выполняются динамически во время выполнения , а изменения этих файлов обнаруживаются каркасом и автоматически перекомпилируются. Вы можете поместить код, который хотите разделить между страницами в специальной папке App_Code, или вы можете предварительно скомпилировать его и поместить сборку в папку Bin.

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

App_Code против Bin

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

CodeBehind

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

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

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

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

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

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

Visual Studio

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

Еще одна приятная функция, представленная в Visual Studio 2010, - это преобразование Web.config . Это также не доступно на веб-сайтах. Теперь работает с веб-сайтами в VS 2013.

Создание веб-приложения происходит быстрее, чем создание веб-сайта, особенно для крупных сайтов. Это связано главным образом с тем, что веб-приложения не компилируют код разметки. В MVC, если вы установите MvcBuildViews в true, тогда он компилирует код разметки, и вы получаете обнаружение ошибок, что очень полезно. Нижняя сторона заключается в том, что каждый раз, когда вы строите решение, он строит полный сайт, который может быть медленным и неэффективным, особенно если вы не редактируете сайт. Я нахожу, что включаю и выключаю MvcBuildViews (что требует выгрузки проекта). С другой стороны, с помощью веб-сайтов вы можете выбрать, хотите ли вы построить сайт как часть решения или нет. Если вы решите не делать этого, то создание решения происходит очень быстро, и вы всегда можете щелкнуть узел веб-узла и выбрать «Сборка», если вы внесли изменения.

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

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

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


Веб-сайт = использовать, когда веб-сайт создан графическими дизайнерами, а программисты редактируют только одну или две страницы

Веб-приложение = использовать, когда приложение создано программистами, а графические дизайнеры редактируют только один или два постраничных / изображений.

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

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

Предупреждение: я написал этот ответ много лет назад и не использовал Asp.net с тех пор. Я ожидаю, что теперь все изменится.


Это может показаться немного очевидным, но я думаю, что это то, что неправильно понимается, потому что Visual Studio 2005 только первоначально отправляется на веб-сайт. Если ваш проект имеет дело с сайтом, который является довольно ограниченным и не имеет большого логического или физического разделения, веб-сайт в порядке. Однако, если это действительно веб-приложение с различными модулями, где многие пользователи добавляют и обновляют данные, вам лучше работать с веб-приложением.

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

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

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

Более подробный анализ можно найти в:





projects-and-solutions