Определение подлежащих развертыванию файлов (VB)
Какие файлы необходимо развернуть из среды разработки в рабочую среду, отчасти зависит от того, было ли приложение 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.vb
содержит код.
Рассмотрим ASP.NET страницу с именем Clock.aspx
, содержащую элемент управления Метка, для свойства Text которого задана текущая дата и время загрузки страницы. Декларативная часть разметки (в Clock.aspx
) будет содержать разметку для веб-элемента управления Метка, <asp:Label runat="server" id="TimeLabel" />
а часть кода (в Clock.aspx.vb
) будет иметь Page_Load
обработчик событий со следующим кодом:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TimeLabel.Text = "The time at the beep is: " & DateTime.Now.ToString()
End Sub
Чтобы подсистема ASP.NET обслуживала запрос для этой страницы, необходимо сначала скомпилировать часть кода страницы ( WebPage
.aspx.vb
файл). Эта компиляция может выполняться явным образом или автоматически.
Если компиляция выполняется явным образом, весь исходный код приложения компилируется в одну или несколько сборок (.dll
файлов), расположенных в каталоге Bin
приложения. Если компиляция выполняется автоматически, результирующая автоматически созданная сборка по умолчанию помещается в Temporary ASP.NET Files
папку , которую можно найти по адресу %WINDOWS%\Microsoft.NET\Framework\<version>
, хотя это расположение можно настроить с помощью <элемента компиляции> в Web.config
. При явной компиляции необходимо выполнить некоторые действия, чтобы скомпилировать код приложения ASP.NET в сборку, и этот шаг выполняется перед развертыванием. При автоматической компиляции процесс компиляции происходит на веб-сервере при первом обращении к ресурсу.
Независимо от используемой модели компиляции часть разметки всех ASP.NET страниц ( WebPage.aspx
файлов) должна быть скопирована в рабочую среду. При явной компиляции необходимо скопировать сборки в папку Bin
, но не нужно копировать ASP.NET части кода страниц ( WebPage.aspx.vb
файлы). При автоматической компиляции необходимо скопировать файлы частей кода, чтобы код присутствовал и можно было скомпилировать автоматически при посещении страницы. Часть разметки каждой веб-страницы 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. Управляемые ASP.NET приложения Visual Studio .NET 2002 и 2003 с помощью модели проекта веб-приложения . Основные функции модели проекта веб-приложения:
- Файлы, которые создают проект, определяются в одном файле проекта. Все файлы, не определенные в файле проекта, не считаются частью веб-приложения в 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-файла в папке
Styles
.Четыре файла изображений - на платформе ASP.NET логотип и изображения обложек трех рецензируемых книг - все находятся в папке
Images
.Файл
Web.sitemap
, который определяет карту сайта и используется для отображения меню наDefault.aspx
страницах в корневом каталоге иFiction
папках иTech
.Файл класса с именем
BasePage.vb
, определяющий базовый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-файлах в Styles
папке, в то время как общий макет страницы определяется на странице 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.vb
, ~/About.aspx.vb
и т. д.), а также BasePage.vb
класс . Итоговая сборка называется BookReviewsWAP.dll
и находится в каталоге Bin
приложения.
На рисунке 2 показаны файлы, составляющие проект веб-приложения Book Reviews.
Рис. 2. В Обозреватель решений перечислены файлы, составляющие проект веб-приложения
Примечание
Как показано на рисунке 2, файлы кода программной части ASP.NET страниц не отображаются в Обозреватель решений для проекта веб-приложения Visual Basic. Чтобы просмотреть класс кода программной части для страницы, щелкните правой кнопкой мыши страницу в Обозреватель решений и выберите Пункт Просмотреть код.
Чтобы развернуть ASP.NET приложение, разработанное с помощью модели проекта веб-приложения, начните с создания приложения, чтобы явно скомпилировать последний исходный код в сборку. Затем скопируйте следующие файлы в рабочую среду:
- Файлы, содержащие декларативную разметку для каждой ASP.NET страницы, например ~/
Default.aspx
, ~/About.aspx
и т. д. Кроме того, скопируйте декларативную разметку для всех master страниц и пользовательских элементов управления. - Сборки (
.dll
файлы) в папкеBin
. Вам не нужно копировать файлы базы данных программы (.pdb
) или ЛЮБЫЕ XML-файлы, которые можно найти в каталогеBin
.
Вам не нужно копировать файлы исходного кода ASP.NET страниц в рабочую среду, а также копировать BasePage.vb
файл класса.
Примечание
Как показано на рисунке BasePage
2, класс реализован в виде файла класса в проекте, помещенного в папку с именем HelperClasses
. При компиляции проекта код в BasePage.vb
файле компилируется вместе с 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.vb
. Обратите внимание, что BasePage.vb
файл находится в папке 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 Pages
- Система проектов веб-сайтов Visual Studio 2005: что это такое и почему мы это сделали?
- Пошаговое руководство. Преобразование проекта веб-сайта в проект веб-приложения в Visual Studio