Определение подлежащих развертыванию файлов (C#)
Какие файлы необходимо развернуть из среды разработки в рабочую среду, отчасти зависит от того, было ли приложение ASP.NET создано с помощью модели веб-сайта или модели веб-приложения. Узнайте больше об этих двух моделях проектов и о том, как модель проекта влияет на развертывание.
Введение
Развертывание веб-приложения ASP.NET влечет за собой копирование файлов, связанных с ASP.NET, из среды разработки в рабочую среду. Файлы, связанные с ASP.NET, включают ASP.NET разметку веб-страницы и файлы поддержки кода, а также файлы поддержки на стороне клиента и сервера. Файлы поддержки на стороне клиента — это файлы, на которые ссылаются веб-страницы и отправляются непосредственно в браузер, например изображения, CSS-файлы и файлы JavaScript. Файлы поддержки на стороне сервера включают файлы, которые используются для обработки запроса на стороне сервера. Сюда входят файлы конфигурации, веб-службы, файлы классов, типизированные наборы данных и файлы LINQ to SQL.
Как правило, все файлы поддержки на стороне клиента должны быть скопированы из среды разработки в рабочую среду, но то, какие серверные файлы поддержки копируются, зависит от того, выполняется ли явное компиляция кода на стороне сервера в сборку .dll
(файл) или эти сборки создаются автоматически. В этом руководстве показано, какие файлы необходимо развернуть при явной компиляции кода в сборку, а не при выполнении этого шага компиляции автоматически.
Явная компиляция и автоматическая компиляция
ASP.NET веб-страницы делятся на декларативную разметку и исходный код. Декларативная часть разметки включает HTML, веб-элементы управления и синтаксис привязки данных; Часть кода содержит обработчики событий, написанные на языке Visual Basic или C#. Фрагменты разметки и кода обычно разделяются на разные файлы: WebPage.aspx
содержит декларативную разметку, в то время как WebPage.aspx.cs
содержит код.
Рассмотрим ASP.NET страницу с именем Clock.aspx, содержащую элемент управления Label, для свойства Text которого задана текущая дата и время загрузки страницы. Декларативная часть разметки (в Clock.aspx
) будет содержать разметку для веб-элемента управления Label Web ,<asp:Label runat="server" id="TimeLabel" />
а часть кода (в Clock.aspx.cs
) будет иметь Page_Load
обработчик событий со следующим кодом:
protected void Page_Load(object sender, EventArgs e)
{
TimeLabel.Text = "The time at the beep is: " + DateTime.Now.ToString();
}
Чтобы подсистема ASP.NET обслуживала запрос для этой страницы, сначала необходимо скомпилировать часть кода страницы ( WebPage.aspx.cs
файл). Эта компиляция может выполняться явным образом или автоматически.
Если компиляция происходит явным образом, то весь исходный код приложения компилируется в одну или несколько сборок (.dll
файлов), расположенных в каталоге Bin
приложения. Если компиляция происходит автоматически, результирующая автоматически созданная сборка по умолчанию помещается в Temporary ASP.NET
папку Файлы, которую можно найти в %WINDOWS%\Microsoft.NET\Framework\
<версии> , хотя это расположение можно настроить с помощью <compilation>
элемента в Web.config
. При явной компиляции необходимо выполнить некоторые действия, чтобы скомпилировать код приложения ASP.NET в сборку, и этот шаг выполняется перед развертыванием. При автоматической компиляции процесс компиляции происходит на веб-сервере при первом обращении к ресурсу.
Независимо от используемой модели компиляции часть разметки всех ASP.NET страниц ( WebPage.aspx
файлов) должна быть скопирована в рабочую среду. При явной компиляции необходимо скопировать сборки в папку Bin
, но не нужно копировать части кода ASP.NET страниц ( WebPage.aspx.cs
файлы). При автоматической компиляции необходимо скопировать файлы частей кода, чтобы код присутствовал и можно было скомпилировать автоматически при посещении страницы. Часть разметки каждой ASP.NET веб-страницы содержит директиву @Page
с атрибутами, которые указывают, был ли связанный код страницы уже явно скомпилирован или его необходимо скомпилировать автоматически. В результате рабочая среда может легко работать с любой из моделей компиляции, и вам не нужно применять специальные параметры конфигурации, чтобы указать, что используется явная или автоматическая компиляция.
В таблице 1 перечислены различные файлы для развертывания при использовании явной и автоматической компиляции. Обратите внимание, что независимо от используемой модели компиляции следует всегда развертывать сборки в папке Bin
, если эта папка существует. Папка Bin
содержит сборки, относящиеся к веб-приложению, которые включают скомпилированный исходный код при использовании модели явной компиляции. Каталог Bin
также содержит сборки из других проектов и любые сборки с открытым кодом или сторонние сборки, которые вы можете использовать, и они должны находиться на рабочем сервере. Поэтому, как правило, скопируйте папку Bin
в рабочую среду при развертывании. (Если вы используете модель автоматической компиляции и не используете внешние сборки, то у Bin
вас не будет каталога — это нормально!)
Модель компиляции | Развернуть файл части разметки? | Развернуть файл исходного кода? | Развертывание сборок в Bin каталоге |
---|---|---|---|
Явная компиляция | Да | Нет | Да |
Автоматическая компиляция | Да | Да | Да (если он существует) |
Таблица 1. Развертывание файлов зависит от используемой модели компиляции.
Принимая поездку вниз по полосе памяти
Используемый подход к компиляции зависит от того, как в Visual Studio осуществляется управление приложением ASP.NET. С. С момента создания NET в 2000 году было четыре различные версии Visual Studio: Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005 и Visual Studio 2008. Visual Studio .NET 2002 и 2003, управляемые ASP.NET приложения с помощью модели проекта веб-приложения. Ниже перечислены основные возможности модели проекта веб-приложения.
- Файлы, которые создают проект, определяются в одном файле проекта. Все файлы, не определенные в файле проекта, не считаются частью веб-приложения в Visual Studio.
- Использует явную компиляцию. При построении проекта файлы кода в проекте компилируются в одну сборку, помещаемую в папку
Bin
.
Когда корпорация Майкрософт выпустила Visual Studio 2005, она прекратила поддержку модели проекта веб-приложения и заменила ее моделью проекта веб-сайта. Модель проекта веб-сайта отличается от модели проекта веб-приложения следующими способами.
- Вместо одного файла проекта, который содержит файлы проекта, вместо этого используется файловая система. Короче говоря, все файлы в папке веб-приложения (или вложенных папках) считаются частью проекта.
- Сборка проекта в Visual Studio не создает сборку в каталоге
Bin
. Вместо этого при создании проекта веб-сайта сообщается о любых ошибках во время компиляции. - Поддержка автоматической компиляции. Проекты веб-сайтов обычно развертываются путем копирования разметки и исходного кода в рабочую среду, хотя код может быть предварительно скомпилирован (явная компиляция).
Корпорация Майкрософт возродила модель проекта веб-приложения после выпуска Visual Studio 2005 с пакетом обновления 1 (SP1). Однако Visual Web Developer продолжал поддерживать только модель проекта веб-сайта. Хорошей новостью является то, что это ограничение было снято с Visual Web Developer 2008 с пакетом обновления 1 (SP1). Сегодня можно создавать ASP.NET приложения в Visual Studio (и Visual Web Developer) с помощью модели проекта веб-приложения или проекта веб-сайта. Обе модели имеют свои плюсы и недостатки. См. статью Общие сведения о проектах веб-приложений: сравнение проектов веб-сайтов и проектов веб-приложений , чтобы сравнить две модели и определить, какая модель проекта лучше подходит для вашей ситуации.
Изучение примера веб-приложения
Скачивание этого руководства включает в себя приложение ASP.NET с именем Книжные обзоры. Веб-сайт имитирует хобби веб-сайт, который кто-то может создать, чтобы поделиться своими рецензиями на книги с интернет-сообществом. Это ASP.NET веб-приложение очень простое и состоит из следующих ресурсов:
Web.config
, файл конфигурации приложения.Страница master (
Site.master
).Семь разных страниц ASP.NET:
~
/Default.aspx
— домашняя страница сайта.~
/About.aspx
— страница "О сайте".~
/Fiction/Default.aspx
- страница с описанием книг художественной литературы, которые были проверены.- ~
/Fiction/Blaze.aspx
- обзор романа Ричарда Бахмана Блейз.
- ~
~/
Tech/Default.aspx
— страница с книгами по технологиям, которые были проверены.- ~/
Tech/CYOW.aspx
— обзор создания собственного веб-сайта. - ~/
Tech/TYASP35.aspx
- обзор Научи себя ASP.NET 3,5 за 24 часа.
- ~/
Три разных ФАЙЛА CSS в папке Стили.
Четыре файла изображений - на платформе ASP.NET логотип и изображения обложек трех рецензируемых книг - все находятся в папке
Images
.Файл
Web.sitemap
, который определяет карту сайта и используется для отображения меню наDefault.aspx
страницах в корневом каталоге иFiction
папках иTech
.Файл класса с именем
BasePage.cs
, определяющий базовыйPage
класс. Этот класс расширяет функциональные возможностиPage
класса, автоматически устанавливаяTitle
свойство на основе положения страницы на карте сайта. В двух словах, любой класс кода программной части ASP.NET, расширяющийBasePage
(а не ), будет иметь значение заголовкаSystem.Web.UI.Page
в зависимости от его положения на карте сайта. Например, при просмотре страницы ~/Tech/CYOW.aspx
заголовок имеет значение "Главная : технология: создание собственного веб-сайта".
На рисунке 1 показан снимок экрана веб-сайта "Обзоры книг" при просмотре в браузере. Здесь вы увидите страницу ~/Tech/TYASP35.aspx
, которая рассматривает книгу Обучение себя ASP.NET 3,5 за 24 часа. Навигация, охватывающая верхнюю часть страницы, и меню в левом столбце основаны на структуре карты сайта, определенной в Web.sitemap
. Изображение в правом верхнем углу является одним из изображений обложки книги, расположенных в папке Images
. Внешний вид веб-сайта определяется с помощью каскадных правил таблицы стилей, изложенных в CSS-файлах в папке Стили, а общий макет страницы определяется на странице Site.master
master .
Рис. 1. Веб-сайт обзоров книг предлагает обзоры по ассортименту названий (нажмите, чтобы просмотреть изображение в полном размере)
Это приложение не использует базу данных; каждая проверка реализуется как отдельная веб-страница в приложении. В этом руководстве (и в следующих нескольких руководствах) рассматривается развертывание веб-приложения, у которых нет базы данных. Однако в следующем руководстве мы улучшаем это приложение для хранения отзывов, комментариев читателей и других сведений в базе данных, а также рассмотрим, какие действия необходимо выполнить для правильного развертывания веб-приложения, управляемого данными.
Примечание
В этих руководствах основное внимание уделяется размещению ASP.NET приложений с помощью поставщика веб-узлов и не рассматриваются вспомогательные темы, такие как ASP. система карты сайта NET или с использованием базового Page
класса. Дополнительные сведения об этих технологиях, а также дополнительные сведения о других темах, рассматриваемых в рамках этого руководства, см. в разделе Дополнительное чтение в конце каждого учебника.
Скачиваемый учебник содержит две копии веб-приложения, каждая из которых реализована как проект Другого типа Visual Studio: BookReviewsWAP, проект веб-приложения и Проект веб-сайта BookReviewsWSP. Оба проекта были созданы с помощью Visual Web Developer 2008 с пакетом обновления 1 (SP1) и используют ASP.NET 3.5 с пакетом обновления 1 (SP1). Для работы с этими проектами сначала распакуйте содержимое на рабочем столе. Чтобы открыть проект веб-приложения (BookReviewsWAP), перейдите в папку BookReviewsWAP и дважды щелкните файл BookReviewsWAP.sln
решения . Чтобы открыть проект веб-сайта (BookReviewsWSP), запустите Visual Studio, а затем в меню Файл выберите пункт Открыть веб-сайт, перейдите в папку BookReviewsWSP
на рабочем столе и нажмите кнопку ОК.
В оставшихся двух разделах этого руководства рассматривается, какие файлы необходимо скопировать в рабочую среду при развертывании приложения. В следующих двух руководствах — Развертывание сайта с помощью FTP и Развертывание сайта с помощью Visual Studio — показаны различные способы копирования этих файлов в поставщик веб-узлов.
Определение файлов для развертывания для проекта веб-приложения
Модель проекта веб-приложения использует явную компиляцию. Исходный код проекта компилируется в одну сборку при каждой сборке приложения. Эта компиляция включает ASP.NET файлы кода программной части страниц (~/Default.aspx.cs
, ~/About.aspx.cs
и т. д.), а также BasePage.cs
класс . Результирующая сборка называется BookReviewsWAP.dll и находится в каталоге Bin
приложения.
На рисунке 2 показаны файлы, составляющие проект веб-приложения Book Reviews.
Рис. 2. В Обозреватель решений перечислены файлы, составляющие проект веб-приложения
Чтобы развернуть ASP.NET приложение, разработанное с помощью модели проекта веб-приложения, начните с создания приложения, чтобы явно скомпилировать последний исходный код в сборку. Затем скопируйте следующие файлы в рабочую среду:
- Файлы, содержащие декларативную разметку для каждой страницы ASP.NET, например ~/
Default.aspx
, ~/About.aspx
и т. д. Кроме того, скопируйте декларативную разметку для всех master страниц и пользовательских элементов управления. - Сборки (
.dll
файлы) в папкеBin
. Вам не нужно копировать файлы базы данных программы (.pdb
) или ЛЮБЫЕ XML-файлы, которые можно найти в каталогеBin
.
Вам не нужно копировать файлы исходного кода ASP.NET страниц в рабочую среду, а также копировать BasePage.cs
файл класса.
Примечание
Как показано на рисунке BasePage
2, класс реализуется в виде файла класса в проекте, помещаемого в папку с именем HelperClasses
. При компиляции проекта код в BasePage.cs
файле компилируется вместе с ASP.NET классами кода программной части страниц в одну сборку, BookReviewsWAP.dll.
ASP.NET имеет специальную папку с именем App_Code
, предназначенную для хранения файлов классов для проектов веб-сайтов. Код в папке App_Code
компилируется автоматически и поэтому не должен использоваться с проектами веб-приложений. Вместо этого следует поместить файлы класса приложения в обычную папку с именем HelperClasses
, или Classes
, или что-то подобное. Кроме того, файлы классов можно поместить в отдельный проект библиотеки классов.
Помимо копирования файлов разметки, связанных с ASP.NET, и сборки в Bin
папке, необходимо также скопировать файлы поддержки на стороне клиента ( изображения и CSS-файлы), а также другие серверные вспомогательные файлы и Web.config
Web.sitemap
. Эти файлы поддержки на стороне клиента и сервера необходимо копировать в рабочую среду независимо от того, используется ли явная или автоматическая компиляция.
Определение файлов для развертывания для файлов проекта веб-сайта
Модель проекта веб-сайта поддерживает автоматическую компиляцию, которая недоступна при использовании модели проекта веб-приложения. При явной компиляции необходимо скомпилировать исходный код проекта в сборку и скопировать эту сборку в рабочую среду. С другой стороны, при автоматической компиляции вы просто копируете исходный код в рабочую среду, и он компилируется средой выполнения по требованию по мере необходимости.
Пункт меню Сборка в Visual Studio присутствует как в проектах веб-приложений, так и в проектах веб-сайтов. При построении проектов веб-приложений исходный код проекта компилируется в одну сборку, расположенную в Bin
каталоге; при построении проекта веб-сайта проверяется наличие ошибок во время компиляции, но сборки не создаются. Чтобы развернуть приложение ASP.NET, разработанное с помощью модели проекта веб-сайта, достаточно скопировать соответствующие файлы в рабочую среду, но рекомендуется сначала выполнить сборку проекта, чтобы убедиться в отсутствии ошибок во время компиляции.
На рисунке 3 показаны файлы, составляющие проект веб-сайта "Обзоры книг".
Рис. 3. В Обозреватель решений перечислены файлы, составляющие проект веб-сайта
Развертывание проекта веб-сайта включает копирование всех файлов, связанных с ASP.NET, в рабочую среду, которая включает страницы разметки для ASP.NET страниц, master страниц и пользовательских элементов управления, а также файлы кода. Кроме того, необходимо скопировать все файлы классов, например BasePage.cs. Обратите внимание, что BasePage.cs
файл находится в папке App_Code
, которая представляет собой специальную папку ASP.NET, используемую в проектах веб-сайта для файлов классов. Специальная папка должна быть создана в рабочей среде, а также файлы классов в папке в App_Code
среде разработки должны быть скопированы в App_Code
папку рабочей среды.
Помимо копирования файлов разметки и исходного кода ASP.NET необходимо также скопировать файлы поддержки на стороне клиента ( изображения и CSS-файлы), а также другие серверные вспомогательные файлы и Web.config
Web.sitemap
.
Примечание
Проекты веб-сайтов также могут использовать явную компиляцию. В следующем руководстве будет рассмотрено, как явно скомпилировать проект веб-сайта.
Итоги
Развертывание приложения ASP.NET требует копирования необходимых файлов из среды разработки в рабочую среду. Точный набор файлов, которые необходимо синхронизировать, зависит от того, явно или автоматически компилируется код приложения ASP.NET. Используемая стратегия компиляции зависит от того, настроена ли Visual Studio для управления ASP.NET приложением с помощью модели проекта веб-приложения или модели проекта веб-сайта.
Модель проекта веб-приложения использует явную компиляцию и компилирует код проекта в одну сборку в папке Bin
. При развертывании приложения часть разметки страниц ASP.NET и содержимое Bin
папки должны быть отправлены в рабочую среду. Исходный код в приложении , например файлы кода и классы программной части, не нужно копировать в рабочую среду.
Модель проекта веб-сайта использует автоматическую компиляцию по умолчанию, хотя проект веб-сайта можно явно скомпилировать, как показано в будущих руководствах. Для развертывания приложения ASP.NET, использующего автоматическую компиляцию, необходимо скопировать часть разметки и исходный код в рабочую среду. Код автоматически компилируется в рабочей среде при первом запросе.
Теперь, когда мы изучили, какие файлы необходимо синхронизировать между средами разработки и рабочей средой, мы готовы развернуть приложение Book Reviews в поставщике веб-узла.
Счастливого программирования!
Дополнительные материалы
Дополнительные сведения о темах, рассмотренных в этом руководстве, см. в следующих ресурсах:
- Обзор компиляции ASP.NET
- ASP.NET пользовательские элементы управления
- Изучение ASP. Навигация сайта NET
- Общие сведения о проектах веб-приложений
- Руководства по эталонным страницам
- Совместное использование кода между страницами
- Использование пользовательского базового класса для классов Code-Behind страниц ASP.NET
- Система проектов веб-сайтов Visual Studio 2005: что это такое и почему мы это сделали?
- Пошаговое руководство. Преобразование проекта веб-сайта в проект веб-приложения в Visual Studio